请教cuda error
答案:2 悬赏:20 手机版
解决时间 2021-01-25 22:01
- 提问者网友:温旧梦泪无声
- 2021-01-25 00:01
请教cuda error
最佳答案
- 五星知识达人网友:有你哪都是故乡
- 2021-01-25 00:09
如果用的是Windows中的Visual Studio的Nsight插件,可以在kernel中设置断点,然后选择Nsight插件中的Start CUDA Debugging来看出错的语句。
如果是Mac或Linux,请考虑使用CUDA-GDB。
另,在每次调用完kernel后写一句话可以检查基本的kernel调用错误,例如
// This will output the proper error string when calling cudaGetLastError
#define getLastCudaError(msg) __getLastCudaError (msg, __FILE__, __LINE__)
inline void __getLastCudaError(const char *errorMessage, const char *file, const int line)
{
cudaError_t err = cudaGetLastError();
if (cudaSuccess != err)
{
fprintf(stderr, "%s(%i) : getLastCudaError() CUDA error : %s : (%d) %s.\n",
file, line, errorMessage, (int)err, cudaGetErrorString(err));
DEVICE_RESET
exit(EXIT_FAILURE);
}
}
#endif
kernel<<<1,1>>>();
getLastCudaError("Error in Calling 'kernel'");
如果是Mac或Linux,请考虑使用CUDA-GDB。
另,在每次调用完kernel后写一句话可以检查基本的kernel调用错误,例如
// This will output the proper error string when calling cudaGetLastError
#define getLastCudaError(msg) __getLastCudaError (msg, __FILE__, __LINE__)
inline void __getLastCudaError(const char *errorMessage, const char *file, const int line)
{
cudaError_t err = cudaGetLastError();
if (cudaSuccess != err)
{
fprintf(stderr, "%s(%i) : getLastCudaError() CUDA error : %s : (%d) %s.\n",
file, line, errorMessage, (int)err, cudaGetErrorString(err));
DEVICE_RESET
exit(EXIT_FAILURE);
}
}
#endif
kernel<<<1,1>>>();
getLastCudaError("Error in Calling 'kernel'");
全部回答
- 1楼网友:傲气稳了全场
- 2021-01-25 00:53
cuda中有cudaerror_t这个类别,可以记录cuda错误。所有的cuda库函数,几乎都返回一个cudaerror_t。
《gpu高性能编程》中使用handle_error宏函数,处理每个函数返回的cudaerror
static void handleerror( cudaerror_t err,const char *file,int line ) {
if (err != cudasuccess) {
printf( "%s in %s at line %d\n", cudageterrorstring( err ), file, line );
exit( exit_failure );
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯