openCL clEnqueueNDRangeKernel 失败;不返回列出的错误类型
Posted
技术标签:
【中文标题】openCL clEnqueueNDRangeKernel 失败;不返回列出的错误类型【英文标题】:openCL clEnqueueNDRangeKernel fails; does not return a listed error type 【发布时间】:2012-07-17 14:57:31 【问题描述】:我的应用程序正在 openCL 内核中进行图像处理,并将输出写入 openGL 纹理以供显示。
我正在创建上下文、命令队列、编译程序并创建内核、采样器和 2D 图像对象而没有错误。在我尝试将内核排队执行之前,一切都运行良好,没有报告错误:
errNum = clEnqueueNDRangeKernel(commandQueue, kernel, 2, NULL, globalWorkSize, localWorkSize, 0, NULL, NULL);
此调用返回值 -1000。
根据 clEnqueueNDRangeKernel 的在线manpage,可以设置几个值 errNum(在 cl.h 头文件中定义)。这些值都不匹配 -1000。
关于这个错误的任何想法?
如果相关的话,我在 Nvidia NVS 4200M gpu 上运行。
【问题讨论】:
我假设 errNum 是 cl_int 类型?全球和本地工作组的规模是多少? 平台?选择 OpenCL SDK? @James:听起来他正在使用带有 GPU 设备的 NVIDIA OpenCL 实现。 Milky_joe,你也可以发布内核吗? @James 我在带有 Nvidia NVS 4200M gpu 芯片的 Windows 机器上运行。我也在运行 Nvidia 的 openCL sdk。 @TimChild 是的,errNum 是 cl_int。全局和本地工作组大小的类型为 size_t[2] 【参考方案1】:我不完全确定,但您可能会从 nvidia 的 OpenCL 实现小猪的底层 CUDA 库中看到(否定的?)CUDA_ERROR_UNKNOWN(曾经是 999,但可能已经增加到 1000)背在上面。我之前曾看到弹出 CUDA_ERROR_INVALID_VALUE 错误(在我的 ErrorCode 枚举中的第一个值处查看 here),这就是我怀疑这一点的原因。
【讨论】:
【参考方案2】:我假设您正在使用 cl gl interop? 见 cl_gl.h:
#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000
【讨论】:
以上是关于openCL clEnqueueNDRangeKernel 失败;不返回列出的错误类型的主要内容,如果未能解决你的问题,请参考以下文章