OpenCL 错误处理

对于OpenCL中每个API函数都有相应的函数执行状态,如函数clGetPlatformIDs()的返回值,或函数clCreateContext()最后一个参数errcode_ret。

我们可以通过检查这个执行状态来获知某个OpenCL主机端的函数API是否执行成功,还是由于某些资源限制等问题使函数执行失败。成功执行,返回的状态为CL_SUCCESS,如果执行失败都会有相应的错误码。在opencl.h头文件中,列出了所有可能的错误代码,这些错误代码在下表中列出来。

OpenCL错误码

OpenCL错误码

如果OpenCL API执行返回状态不是CL_SUCCESS,可以用表格中的错误码对比函数返回状态,能够很快分析并解决程序中的问题。例如:

_kernel void SobelProecess(global char *SrcData,
                                global char *DstData )
{
    ……
}
内核函数名为SobelProcess,在创建内核时,我们手误输入如下:
cl_int err
cl_kernel kernel = clCreateKernel(program, "Sobelproecess",
&err);

此时,err的返回值为CL_INVALID_KERNEL_NAME(-46)。根据函数返回执行状态err,我们可以找出OpenCL API执行是否成功,如果不成功,根据错误代码分析出错误原因。

赞(1)
未经允许不得转载:极客笔记 » OpenCL 错误处理
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址