FFT 2D 内核运行时 =0 在 OpenCL 中

FFT 2D kernel runtime =0 in OpenCL

本文关键字:OpenCL 2D 内核 运行时 FFT      更新时间:2023-10-16

我正在做一个家庭作业项目,比较快速傅立叶变换在 CPU 和 GPU 上的性能。我已经完成了 中央处理器部分 ,但是使用 GPU ,我有一个问题。

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

所以希望你们能帮助我.任何想法将不胜感激。

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

请检查每个呼叫是否等于 CL_SUCCESS
可能总是发生,内存不足,硬件已在使用中,或者源代码中存在简单错误。返回值会告诉你。

另外:请检查您的cl_contextcl_program等以获取NULL值。