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;
     }
 }