我正在尝试解决 CUDA 运行时错误。 cuda-gdb 报告的调试信息(打开 cuda-memcheck):
warning: Cuda API error detected: cudaLaunch returned (0xb)
warning: Cuda API error detected: cudaGetLastError returned (0xb)
[Thread 0x7fa1a28c5700 (LWP 43041) exited]
[Thread 0x7fa1a16a5700 (LWP 43042) exited]
[Thread 0x7fa18df0e700 (LWP 43056) exited]
我检查了块、网格尺寸和正在使用的动态共享内存的大小,它们远低于限制。请告诉我 (0xb) 错误类型代表什么,我在 cuda 文档中没有找到它。另外,请告诉我有关如何解决此问题的任何建议?
设备:Kepler K20 (CC=3.5) 和 CUDA 5.5
代码太大,无法粘贴在这里。
最佳答案
如果您在代码中执行 proper cuda error checking,您可以检索从 cudaGetLastError
调用报告的 0xb 错误,并将其传递给解码器 ( cudaGetErrorString
),它会告诉您更有意义的信息。
CUDA 运行时 API 错误代码在 driver_types.h
中枚举,在标准 linux 安装中将在 /usr/local/cuda/include
中搜索 cudaSuccess
,这将是第一个枚举类型(即 0),然后继续直到找到错误号。
在这种情况下 0xb
(= 11) 指的是 cudaErrorInvalidValue
:
/**
* This indicates that one or more of the parameters passed to the API call
* is not within an acceptable range of values.
*/
cudaErrorInvalidValue = 11,
关于返回 cudaGetLastError (0xb),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22360493/