FFT 2D 内核运行时 =0 在 OpenCL 中
FFT 2D kernel runtime =0 in OpenCL
我正在做一个家庭作业项目,比较快速傅立叶变换在 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_context
,cl_program
等以获取NULL
值。
相关文章:
- 2D数组来自文本输入,中间有空格
- 将值指定给向量(2D)的向量中的某个位置
- 使用std::vector的OpenCL矩阵乘法
- 如何使用用户输入在C++中正确填充2D数组
- 如何在C++中检查2D数组中负值的输入验证
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 在 2D 向量中使用第三个 [ ] 有什么意义?
- 四边形的 2D 旋转
- 打印第二列时的2d字符矢量打印空间
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何在C++函数中声明静态 2D 数组?
- 我是 C++ 的初学者,我想知道如何在 2D 矢量中获取重复值
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- opengl glBegin(GL_LINES) 和 glBegin(GL_POINT) 在 2D 中不可视化点矢量
- 在C++中迭代 2D 容器的最干净方法
- 如何引用 2D 指针?
- FFT 2D 内核运行时 =0 在 OpenCL 中
- 2d循环OpenCl程序不工作
- OpenCL在大2d范围内崩溃
- 使用OpenCL在2D中嵌套循环求和