4

如果我有类似的东西:

err = clEnqueueReadBuffer(cmdQueue, output, CL_TRUE, 0, sizeof(float) * data_sz, &results, 0, NULL, NULL);

我想做:

if (err != CL_SUCCESS){
    perror("Read Failed!");
}

但是 perror() 不知道诸如“CL_HOST_OUT_OF_MEMORY”之类的错误常量(可以理解)。

我可以四处寻找与 opencl 关联的 .h 文件,但这不是一个理想的解决方案。我愿意接受任何其他方便的方法来追踪错误号。我在 OSX Snow Leopard 上(包括以防万一,但我认为这无关紧要)

4

2 回答 2

1

如果您有 NVIDIA OpenCL SDK,那么您可以使用oclErrorString()oclUtils 提供的功能。

于 2010-03-08T15:45:07.297 回答
1

目前没有。我最终以gluErrorString(). 我只是将所有代码粘贴cl_error到一个文件中,并在 Emacs 中处理每一行,以将其转换为返回常量字符串的 switch 语句(以允许不连续的条目)中的一堆 case。这很容易,也很有用。如果你喜欢,我可以把它贴在某个地方。

于 2010-03-19T02:00:46.853 回答