# HG changeset patch # User Shohei KOKUBO # Date 1372769402 -32400 # Node ID 05adaf6f7afbf7b5c6207590da511997862e1e92 # Parent 963d2fc5f685ba0eb8ebe524b421c573dc28cb95 fix fft diff -r 963d2fc5f685 -r 05adaf6f7afb example/fft/Func.h --- a/example/fft/Func.h Mon Jul 01 21:15:23 2013 +0900 +++ b/example/fft/Func.h Tue Jul 02 21:50:02 2013 +0900 @@ -5,7 +5,7 @@ BIT_REVERSE, NORMALIZATION, BUTTERFLY, - TRANSEPOSE, + TRANSPOSE, HIGH_PASS_FILTER, #include "GlobalID.h" }; diff -r 963d2fc5f685 -r 05adaf6f7afb example/fft/main.cc --- 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) { diff -r 963d2fc5f685 -r 05adaf6f7afb example/fft/task_init.cc --- a/example/fft/task_init.cc Mon Jul 01 21:15:23 2013 +0900 +++ b/example/fft/task_init.cc Tue Jul 02 21:50:02 2013 +0900 @@ -20,14 +20,14 @@ GpuSchedRegister(BIT_REVERSE, "gpu/fft.cl", "bitReverse"); GpuSchedRegister(NORMALIZATION, "gpu/fft.cl", "norm"); GpuSchedRegister(BUTTERFLY, "gpu/fft.cl", "butterfly"); - GpuSchedRegister(TRANSEPOSE, "gpu/fft.cl", "transpose"); + GpuSchedRegister(TRANSPOSE, "gpu/fft.cl", "transpose"); GpuSchedRegister(HIGH_PASS_FILTER, "gpu/fft.cl", "highPassFilter"); #else SchedRegisterTask(SPIN_FACT,spinFact); SchedRegisterTask(NORMALIZATION, norm); SchedRegisterTask(BIT_REVERSE, bitReverse); SchedRegisterTask(BUTTERFLY, butterfly); - SchedRegisterTask(TRANSEPOSE, transpose); + SchedRegisterTask(TRANSPOSE, transpose); SchedRegisterTask(HIGH_PASS_FILTER, highPassFilter); #endif }