C++ OpenCL中的FFT 2D内核运行时=0

C++ OpenCL中的FFT 2D内核运行时=0,c++,vector,opencl,gpgpu,C++,Vector,Opencl,Gpgpu,我正在做一个家庭作业,比较快速傅立叶变换在CPU和GPU上的性能。我已经完成了CPU部分,但是对于GPU,我有一个问题 问题是内核运行时为零,输入与输出映像相同。我在win7上使用VS2010和AMD应用程序SDK。这是主机,是一个处理的附加组件,可以在OpenCL编程书(Ryoji Tsuchiyama…)中找到 我猜错误是在我们将值从图像像素传递到cl_float2*xm(主机代码中的第169-174行)的阶段。我也无法访问向量组件来检查它,编译器不接受.sX或.xy,因此抛出一个错误。其他

我正在做一个家庭作业,比较快速傅立叶变换在CPU和GPU上的性能。我已经完成了CPU部分,但是对于GPU,我有一个问题

问题是内核运行时为零,输入与输出映像相同。我在win7上使用VS2010和AMD应用程序SDK。这是主机,是一个处理的附加组件,可以在OpenCL编程书(Ryoji Tsuchiyama…)中找到

我猜错误是在我们将值从图像像素传递到
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
    }   
}   
(i=0;i 对于(j=0;j
希望你们能帮我。任何想法都将受到欢迎。

OpenCL提供了许多不同的错误代码。
您已经通过执行
ret=clinsttruction()来检索它们,但您没有对其进行分析

请在每次通话中检查此值是否等于
CL\u SUCCESS

内存不足、硬件已在使用或源代码中存在简单错误,这些情况都可能发生。返回值将告诉您


另外:请检查您的
cl\u上下文
cl\u程序
等中的
NULL
值。

请在问题中输入所有相关代码(当然不能超过该代码)。如果你不能解决这个问题,至少要将你的代码格式化为可读的,因为阅读大量缩进严重的代码并不是我们很多人都喜欢的;我很抱歉。我使用Opera作为主浏览器,它似乎没有保留代码的格式:(谢谢你的建议;我正在使用它。它似乎无法加载内核。我将尝试自己解决它,然后稍后回来获取更多详细信息。因此我稍后将投你票:)好;我在内核中发现了一个输入错误,这就是它不起作用的原因。谢谢:DMy很高兴!:)(PS:你的意思是在OpenCL代码中?当我执行clCreateProgramWithSource()…时,像这样的错误会直接显示在我的shell中。)是的,在OpenCL代码中。我通过
clGetProgramBuildInfo()
获取日志。啊,好的。我只对Intel SDK和其他我在这里无法命名的SDK有经验;)两者都将错误直接打印到控制台中,因此我不必在这里调用任何
clGetProgramBuildInfo
。很高兴知道。