C++ OpenCL中的FFT 2D内核运行时=0
我正在做一个家庭作业,比较快速傅立叶变换在CPU和GPU上的性能。我已经完成了CPU部分,但是对于GPU,我有一个问题 问题是内核运行时为零,输入与输出映像相同。我在win7上使用VS2010和AMD应用程序SDK。这是主机,是一个处理的附加组件,可以在OpenCL编程书(Ryoji Tsuchiyama…)中找到 我猜错误是在我们将值从图像像素传递到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,因此抛出一个错误。其他
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()来检索它们每次调用时都使用code>,但您没有对其进行分析
请在每次通话中检查此值是否等于CL\u SUCCESS
内存不足、硬件已在使用或源代码中存在简单错误,这些情况都可能发生。返回值将告诉您
另外:请检查您的cl\u上下文
,cl\u程序
等中的NULL
值。请在问题中输入所有相关代码(当然不能超过该代码)。如果你不能解决这个问题,至少要将你的代码格式化为可读的,因为阅读大量缩进严重的代码并不是我们很多人都喜欢的;我很抱歉。我使用Opera作为主浏览器,它似乎没有保留代码的格式:(谢谢你的建议;我正在使用它。它似乎无法加载内核。我将尝试自己解决它,然后稍后回来获取更多详细信息。因此我稍后将投你票:)好;我在内核中发现了一个输入错误,这就是它不起作用的原因。谢谢:DMy很高兴!:)(PS:你的意思是在OpenCL代码中?当我执行clCreateProgramWithSource()
…时,像这样的错误会直接显示在我的shell中。)是的,在OpenCL代码中。我通过clGetProgramBuildInfo()
获取日志。啊,好的。我只对Intel SDK和其他我在这里无法命名的SDK有经验;)两者都将错误直接打印到控制台中,因此我不必在这里调用任何clGetProgramBuildInfo
。很高兴知道。