Mercurial > hg > Game > Cerium
diff example/bitonic_sort/main.cc @ 2037:0b3d1d2863c8 draft
modify bitonic sort
author | Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 06 Feb 2015 06:21:57 +0900 |
parents | 33af6d6e1bfc |
children | a78f8360c7f9 |
line wrap: on
line diff
--- a/example/bitonic_sort/main.cc Fri Feb 06 00:20:01 2015 +0900 +++ b/example/bitonic_sort/main.cc Fri Feb 06 06:21:57 2015 +0900 @@ -101,26 +101,21 @@ HTask* wait; HTask* swap; - int stage = 1; - int block = 1; - for (int i=stage; 1<<(stage-1) < length; i=stage) { - for (int j=i, k=block; 0 < j; j--, k=k/2) { + for (int i=2; i <= length; i=2*i) { + for (int j=i>>1; 0 < j; j=j>>1) { swap = manager->create_task(SWAP); swap->set_inData(0, data, length*sizeof(int*)); swap->set_outData(0, data, length*sizeof(int*)); - swap->set_param(0, (long)block); - swap->set_param(1, (long)1<<(j-1)); - swap->set_param(2, (long)k); + swap->set_param(0, (long)i); + swap->set_param(1, (long)j); swap->set_cpu(spe_cpu); swap->flip(); if (first) swap->wait_for(wait); - swap->iterate(length/2); + swap->iterate(length); wait = swap; } - stage++; - block = block<<1; first = true; } }