2013-02-08 148 views
4

我想获得由cuInit返回的结果的人类可读描述。每一个页面,我发现使用cudaGetErrorString为此目的recommnend,但这会导致错误:CUresult vs cudaError - 如何获得可读的错误描述?

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

什么CUresult和cudaError,我可以使用什么功能来解释前者的区别?

回答

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

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

CUDA Driver API不提供返回字符串的函数。

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

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

+1

见克拉茨的回答,这在最近的CUDA驱动程序版本,实际上添加。 – gkanwar 2014-10-27 02:10:41

5

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

从驱动程序API文档:以下

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

+0

有没有什么特别的,需要做这些功能的工作 - 当我包括'cuda.h'编译器无法找到符号'cuGetErrorString'?我使用CUDA 6.0,这应该足够好,对吗? – Matso 2015-02-04 09:10:59