C/C++教程

CUDA 错误检查

本文主要是介绍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

这篇关于CUDA 错误检查的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!