我正在尝试解决 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/

10-12 16:13