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

时间:2013-02-08 15:06:24

标签: cuda

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

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

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

2 个答案:

答案 0 :(得分:8)

LIBRARY         RETURN TYPE     VALUES
CUDA Driver     CUresult        enum cudaError_enum    in cuda.h
CUDA Runtime    cudaError_t     enum cudaError         in driver_types.h

CUDA Runtime提供函数cudaGetErrorString,用于将cudaError枚举值转换为字符串。

CUDA Driver API不提供返回字符串的功能。

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

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

答案 1 :(得分:7)

当前的驱动程序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. 

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