2

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

麻烦的是内核运行时间为零,输入与输出图像相同。我在带有 AMD APP SDK 的 win7 上使用 VS2010。这是主机代码内核、处理图像的附加标头 ,它们可以在 The OpenCL Programming Book (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
    }   
}   

所以希望大家帮帮我。任何想法将不胜感激。

4

1 回答 1

3

OpenCL 提供了许多不同的错误代码。
您已经通过ret = clInstruction();在每次通话中执行操作来检索它们,但您没有对其进行分析。

如果此值等于 ,请检查每次调用CL_SUCCESS
内存不足、硬件已在使用中或源代码中存在简单错误可能总是会发生。返回值会告诉你。

另外:请检查您的cl_context,cl_program等以获取NULL值。

于 2012-11-28T06:52:37.480 回答