diff example/fft/main.cc @ 1656:05adaf6f7afb draft

fix fft
author Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
date Tue, 02 Jul 2013 21:50:02 +0900
parents ab6b11476e02
children ed2fa50168ef
line wrap: on
line diff
--- a/example/fft/main.cc	Mon Jul 01 21:15:23 2013 +0900
+++ b/example/fft/main.cc	Tue Jul 02 21:50:02 2013 +0900
@@ -148,7 +148,7 @@
         norm->set_cpu(spe_cpu);
         norm->flip();
         norm->wait_for(bfly);
-        norm->iterate(gws[0],gws[0]);
+        norm->iterate(gws[0],gws[1]);
         
         waitTask = norm;
     }
@@ -217,39 +217,36 @@
     sfac->set_outData(0, wm, length_w*sizeof(cl_float2));
     sfac->set_param(3,n);
     sfac->set_cpu(spe_cpu);
-    sfac->iterate(gws[0],gws[1]);
+    sfac->iterate(gws[0]);
 
     // Butterfly Operation
     waitTask = fftCore(manager, rm, xm, wm, m, forward,sfac);
     
-    HTaskPtr *trns = (HTask**)manager->allocate(sizeof(HTask*)*2);
-
     // Transpose matrix 
     int length_r =n*n;
-    setWorkSize(gws,lws,n/2,1);
-    for (int i=0;i<2;i++) {
-        trns[i]= manager->create_task(TRANSEPOSE);
-        trns[i]->set_inData(0, rm, length_r*sizeof(cl_float2));
-        trns[i]->set_outData(0, xm, length_r*sizeof(cl_float2));
-        trns[i]->set_param(3,n);
-        trns[i]->set_cpu(spe_cpu);
-    }
-    //    trns[0]->wait_for(sfac);
-    trns[0]->wait_for(waitTask);
-    trns[0]->iterate(gws[0],gws[1]);
+    setWorkSize(gws,lws,n,n);
+    HTask* first_trns = manager->create_task(TRANSPOSE);
+    first_trns->set_inData(0,rm,length_r*sizeof(cl_float2));
+    first_trns->set_outData(0,xm,length_r*sizeof(cl_float2));
+    first_trns->set_param(3,n);
+    first_trns->set_cpu(spe_cpu);
+    first_trns->wait_for(waitTask);
+    first_trns->iterate(gws[0],gws[1]);
+
     // Butterfly Operation 
-    //    fftCore(manager, rm, xm, wm, m, forward);
+    waitTask = fftCore(manager, rm, xm, wm, m, forward,first_trns);
 
     // Apply high-pass filter
     HTask *hpfl = manager->create_task(HIGH_PASS_FILTER);
     cl_int radius = n/8;
-    setWorkSize(gws,lws,n/2,1);
+    setWorkSize(gws,lws,n,n);
     hpfl->set_outData(0, rm, length_r*sizeof(cl_float2));
     hpfl->set_param(3,n);
     hpfl->set_param(4,radius);
     hpfl->set_cpu(spe_cpu);
-    hpfl->wait_for(trns[0]);
+    hpfl->wait_for(waitTask);
     hpfl->iterate(gws[0],gws[1]);
+
     // Inverse FFT
 
     // Butterfly Operation
@@ -257,12 +254,17 @@
 
     // Transpose matrix
     setWorkSize(gws,lws,n,n);
-    trns[1]->wait_for(waitTask);
-    trns[1]->iterate(gws[0],gws[1]);
+    HTask* second_trns = manager->create_task(TRANSPOSE);
+    second_trns->set_inData(0,xm,length_r*sizeof(cl_float2));
+    second_trns->set_outData(0,rm,length_r*sizeof(cl_float2));
+    second_trns->set_param(3,n);
+    second_trns->set_cpu(spe_cpu);
+    second_trns->wait_for(waitTask);
+    second_trns->iterate(gws[0],gws[1]);
 
     // Butterfly Operation
 
-    waitTask = fftCore(manager,xm, rm, wm, m, inverse,trns[1]);
+    waitTask = fftCore(manager,xm, rm, wm, m, inverse,second_trns);
 }
 
 int TMmain(TaskManager *manager, int argc, char** argv) {