| 27 | namespace internal { |
| 28 | |
| 29 | std::string CudaErrorDescription(CUresult err) { |
| 30 | DCHECK_NE(err, CUDA_SUCCESS); |
| 31 | std::stringstream ss; |
| 32 | |
| 33 | const char* name = nullptr; |
| 34 | auto err_result = cuGetErrorName(err, &name); |
| 35 | if (err_result == CUDA_SUCCESS) { |
| 36 | DCHECK_NE(name, nullptr); |
| 37 | ss << "[" << name << "] "; |
| 38 | } |
| 39 | |
| 40 | const char* str = nullptr; |
| 41 | err_result = cuGetErrorString(err, &str); |
| 42 | if (err_result == CUDA_SUCCESS) { |
| 43 | DCHECK_NE(str, nullptr); |
| 44 | ss << str; |
| 45 | } else { |
| 46 | ss << "unknown error"; |
| 47 | } |
| 48 | return ss.str(); |
| 49 | } |
| 50 | |
| 51 | Status StatusFromCuda(CUresult res, const char* function_name) { |
| 52 | if (res == CUDA_SUCCESS) { |