2013-02-08 154 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