cuda中kernel挂掉了,怎么查错
答案:1 悬赏:0 手机版
解决时间 2021-11-13 03:06
- 提问者网友:绫月
- 2021-11-12 12:19
cuda中kernel挂掉了,怎么查错
最佳答案
- 五星知识达人网友:低血压的长颈鹿
- 2021-11-12 13:29
如果用的是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.
",
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.
",
file, line, errorMessage, (int)err, cudaGetErrorString(err));
DEVICE_RESET
exit(EXIT_FAILURE);
}
}
#endif
kernel<<<1,1>>>();
getLastCudaError("Error in Calling 'kernel'");
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯