CUDA 错误检查

一.纯CUDA 库

利用__FILE__ __LINE__这两个宏以及cudaGetErrorString()这个函数

复制代码
#define CHECK(call)                                                  \
{                                                                    \
  const cudaError_t error=call;                                      \
  if(error!=cudaSuccess)                                             \
  {                                        \
      printf("ERROR: in File %s at Line %d\n",__FILE__,__LINE__);   \
      printf("ERROR Code:%d,reason:%s\n",error,cudaGetErrorString(error)); \
      exit(1);                                                       \
  }                                                                  \
}
复制代码

二. 有多种库

复制代码
#define FatalError(s) do {                                             \
    std::stringstream _where, _message;                                \
    _where << __FILE__ << ':' << __LINE__;                             \
    _message << std::string(s) + "\n" << __FILE__ << ':' << __LINE__;  \
    std::cerr << _message.str() << "\nAborting...\n";                  \
    cudaDeviceReset();                                                 \
    exit(1);                                                           \
} while(0)

#define checkCUDNN(status) do {                                        \
    std::stringstream _error;                                          \
    if (status != CUDNN_STATUS_SUCCESS) {                              \
      _error << "CUDNN failure: " << cudnnGetErrorString(status);      \
      FatalError(_error.str());                                        \
    }                                                                  \
} while(0)

#define checkCudaErrors(status) do {                                   \
    std::stringstream _error;                                          \
    if (status != 0) {                                                 \
      _error << "Cuda failure: " << status;                            \
      FatalError(_error.str());                                        \
    }                                                                  \
} while(0)
复制代码

参考:https://raw.githubusercontent.com/tbennun/cudnn-training/master/lenet.cu

posted @   BohrCh  阅读(407)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示