CUresult vs cudaError - 如何获得可读的错误描述?

Kim*_*uss 6 cuda

我想获得cuInit返回的结果的可读描述.我发现每个页面都建议使用cudaGetErrorString来实现此目的,但这会导致错误:

error: cannot convert CUresult {aka cudaError_enum} to cudaError_t 
{aka cudaError} for argument 1 to const char* cudaGetErrorString(cudaError_t)
Run Code Online (Sandbox Code Playgroud)

CUresult和cudaError有什么区别,我可以用什么函数来解释前者?

Kra*_*atz 9

作为编写时间的当前驱动程序API 确实支持将CUresult转换为其字符串表示和描述.

从Driver API doc:

CUresult cuGetErrorName ( CUresult error, const char** pStr )
    Gets the string representation of an error code enum name. 
CUresult cuGetErrorString ( CUresult error, const char** pStr )
    Gets the string description of an error code. 
Run Code Online (Sandbox Code Playgroud)

http://docs.nvidia.com/cuda/cuda-driver-api/index.html


Gre*_*ith 8

LIBRARY         RETURN TYPE     VALUES
CUDA Driver     CUresult        enum cudaError_enum    in cuda.h
CUDA Runtime    cudaError_t     enum cudaError         in driver_types.h
Run Code Online (Sandbox Code Playgroud)

CUDA运行时提供函数cudaGetErrorString以将cudaError枚举值转换为字符串.

CUDA驱动程序API不提供返回字符串的函数.

CUresult和cudaError_t的错误名称和值不匹配.

NVIDIA目前不提供用于为CUresult返回错误字符串的库.将cuda.h中的数据转换为函数只需几分钟.

  • 请参阅下面的Kratz的答案,它实际上是在最新的CUDA驱动程序版本中添加的。 (2认同)