C++ 获取正确的OpenCL排队_内核错误代码

C++ 获取正确的OpenCL排队_内核错误代码,c++,opencl,C++,Opencl,我有一个OpenCL程序,它在我的父内核中使用了enqueue_内核函数 当前,在调用enqueue_内核之后,enqueue_内核将返回“-11”作为其错误代码 规范中列出的CLK_XXX错误代码(enqueue_内核的返回值)没有在文档或头文件中的任何地方枚举,因此我不知道我得到的是哪种代码。如何让内核返回有意义的错误 此外,规范指出,通过在clBuildProgram期间启用“-g”标志,enqueue_内核将返回更多详细代码。然而,当我将“-g”添加到我的标志列表时,我得到一个编译错误,

我有一个OpenCL程序,它在我的父内核中使用了enqueue_内核函数

当前,在调用enqueue_内核之后,enqueue_内核将返回“-11”作为其错误代码

规范中列出的CLK_XXX错误代码(enqueue_内核的返回值)没有在文档或头文件中的任何地方枚举,因此我不知道我得到的是哪种代码。如何让内核返回有意义的错误

此外,规范指出,通过在clBuildProgram期间启用“-g”标志,enqueue_内核将返回更多详细代码。然而,当我将“-g”添加到我的标志列表时,我得到一个编译错误,表示“-g”标志无法识别。我有最新的NVidia驱动程序,正式支持OpenCL1.2,非正式支持OpenCL2.0(我没有使用我所知道的2.0中任何不受支持的函数,只有非正式支持的函数)。我猜我在使用“-g”时会出现编译错误,因为NVidia尚未正式或非正式地支持它。有没有办法让NVidia的最新驱动程序吐出更好的错误?也许是另一面旗


顺便说一句,我可以让enqueue_内核为一些子内核工作,而不是为其他子内核工作……因此,这不是我的驱动程序/硬件不支持enqueue_内核的问题,因此需要了解我得到的错误代码

-11是
CL\u构建程序失败
。它位于
cl.h
标题中,另请参见


该代码表示您的程序有错误。使用
clGetProgramBuildInfo
和标记
CL\u PROGRAM\u BUILD\u LOG
获取生成日志并了解错误。

否,错误发生在调用内核内部的enqueue\u内核时,而不是在生成程序时。这是一个运行时代码而不是编译代码。OpenCL错误代码根据命令没有不同的含义,因此它仍然是CL_构建_程序_失败。它不应从ClenqueueEndRangeKernel返回。看起来像是驱动程序错误或程序中的错误。它不是来自clEnqueueNDRangeKernel。它来自enqueue_内核,这是一个完全不同的命令,它有自己的一组错误代码。我从未使用过这个功能。可能CLK_*错误代码重复使用相同的数字范围。它们似乎在这里被定义:(-11未列出)你找到这个问题的答案了吗?我遇到了同样的问题,我需要能够看到排队内核错误代码,-1不是很有帮助:/@PorterMorgan不幸的是,没有,我最终使用了一种不同于使用排队内核的方法。