2012-07-17 72 views
2

我的应用程序在openCL内核中进行图像处理,并将输出写入到openGL纹理中进行显示。openCL clEnqueueNDRangeKernel失败;不返回列出的错误类型

我正在创建上下文,命令队列,编译程序并创建内核,采样器和2D图像对象而没有错误。一切都运行良好,没有报告的错误,直到我尝试排队内核执行:

errNum = clEnqueueNDRangeKernel(commandQueue, kernel, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL); 

此调用返回-1000值。

根据clEnqueueNDRangeKernel的在线manpage,有几个值errNum可以设置为(在cl.h头文件中定义)。这些值都不匹配-1000。

有关此错误的任何想法?


我在Nvidia NVS 4200M GPU上运行,如果这是相关的。

+0

我认为errNum是一个cl_int类型?全球和当地的工作组规模是多少? – 2012-07-17 15:13:36

+0

平台? OpenCL SDK的选择? – James 2012-07-17 15:14:43

+0

@James:听起来他正在使用NVIDIA OpenCL实现与GPU设备。 milky_joe,你是否也可以发布内核? – Ani 2012-07-17 15:26:11

回答

0

我不完全确定,但是您可能会看到底层的CUDA库(负面?)CUDA_ERROR_UNKNOWN(以前是999,但可能已经碰到了1000),这些库是nvidia的OpenCL实现小猪 - 在顶部。我看到一个CUDA_ERROR_INVALID_VALUE错误弹出(在我的ErrorCode枚举中的第一个值处查看here),这就是我怀疑这一点的原因。

0

我假设你正在使用cl gl interop? 看到cl_gl.h:

#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000