我正在做一个家庭作业项目,比较CPU和GPU上的快速傅立叶变换的性能。我完成了CPU部分,但与GPU,我有一个问题。OpenCL中FFT 2D内核运行时= 0
麻烦的是内核运行时为零,输入与输出图像相同。我在win7上使用VS2010和AMD APP SDK。这里是主机code,the kernel,加法header处理image,他们可以在OpenCL的编程书籍中找到(良土山...)
我的猜测错误是在我们传递值相从图像像素到cl_float2 *xm
(主机代码中的第169-174行)。我无法访问矢量组件来检查它,编译器不接受.sX
或.xy
,会引发错误。其他部分 - 内核,头... - 在我看来很好。
for (i=0; i < n; i++) {
for (j=0; j < n; j++) {
((float*)xm)[(2*n*j)+2*i+0] = (float)ipgm.buf[n*j+i]; //real
((float*)xm)[(2*n*j)+2*i+1] = (float)0; //imag
}
}
所以,希望你们帮助我。任何想法将不胜感激。
请将您的问题中的所有相关代码(当然不会超过)。如果你至少不能把你的代码格式化为可读性,那么因为阅读一大堆缩进代码并不是我们许多人喜欢的东西。 – Grizzly
哦;对不起 。我使用Opera作为主要浏览器,似乎它不是保持代码的格式:( – Tiana987642