CUDA错误检查
CUDA api执行结束回返回一个返回值,用于标记api的执行状态。
错误检查函数
- 获取错误代码的名称:cudaGetErrorName
- 获取错误代码的描述信息:cudaGetErrorString
- 在调用cuda运行api时,调用ErrorCheck函数进行包装
- 参数filename一般使用__FILE__;参数lineNumber一般使用__LINE__;
- 错误函数返回运行时API调用的错误代码。
//错误检查函数代码
cudaError_t ErrorCheck(cudaError_t error_code, const char* filename, int lineNumber)
{if(error_code != cudaSuccess){printf("CUDA error:\r\code=%d, name=%s, descripion=%s\r\nfile=%s,line=%d\r\n", error_code, cudaGetErrorName(error_code), cudaGetErrorString(error_code), filename, lineNumber);return error_code;}return error_code;
}
检查核函数
- 错误检测函数问题:不能捕捉调用核函数中存在的相关错误
- 捕捉调用核函数可能发生错误的方法:
ErrorCheck(cudaGetLastError(), FILE_, LINE);
ErrorCheck(cudaDeviceSynchronize(), FILE, LINE); - 核函数定义:
global void kernel_function(argument arg);