获取正确的OpenCL enqueue_kernel错误代码

时间:2019-01-03 02:00:35

标签: c++ opencl

我有一个OpenCL程序,该程序利用了父内核中的enqueue_kernel函数。

当前,在调用enqueue_kernel之后,enqueue_kernel返回“ -11”作为其错误代码。

在规范中列出的CLK_XXX错误代码(enqueue_kernel的返回值)未在文档或头文件的任何位置枚举,因此我不知道要获取哪个代码。如何使内核返回有意义的错误?

此外,该规范还指出,通过在clBuildProgram期间启用“ -g”标志,enqueue_kernel将返回更多详细代码。但是,当我在标志列表中添加“ -g”时,出现编译错误,提示无法识别“ -g”标志。我拥有最新的NVidia驱动程序,这些驱动程序正式支持OpenCL1.2,并且非官方地支持OpenCL2.0(我不使用我所知道的2.0中任何不受支持的功能,而仅使用非官方支持的功能)。我猜我会收到“ -g”的编译错误,因为它尚未得到NVidia的正式或非正式支持。有没有办法让NVidia的最新驱动程序吐出更好的错误?也许是一个不同的标志?

作为旁注,我可以让enqueue_kernel适用于某些子内核,而不适用于其他子内核...因此,enqueue_kernel根本就不受驱动程序/硬件的支持,因此需要理解错误代码我越来越。

1 个答案:

答案 0 :(得分:-1)

-11是CL_BUILD_PROGRAM_FAILURE。它位于cl.h标头中,另请参见https://streamhpc.com/blog/2013-04-28/opencl-error-codes/

该代码表示​​您的程序有错误。将clGetProgramBuildInfo与标志CL_PROGRAM_BUILD_LOG一起使用以获取构建日志并了解错误。