永发信息网

请教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'");
全部回答
  • 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 ); } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯