| #pragma once |
| |
| #include <c10/util/Exception.h> |
| #include <c10/macros/Macros.h> |
| #include <cuda.h> |
| |
| // Note [CHECK macro] |
| // ~~~~~~~~~~~~~~~~~~ |
| // This is a macro so that AT_ERROR can get accurate __LINE__ |
| // and __FILE__ information. We could split this into a short |
| // macro and a function implementation if we pass along __LINE__ |
| // and __FILE__, but no one has found this worth doing. |
| |
| // For CUDA Runtime API |
| #define C10_CUDA_CHECK(EXPR) \ |
| do { \ |
| cudaError_t __err = EXPR; \ |
| if (__err != cudaSuccess) { \ |
| auto error_unused C10_UNUSED = cudaGetLastError(); \ |
| TORCH_CHECK(false, "CUDA error: ", cudaGetErrorString(__err)); \ |
| } \ |
| } while (0) |
| |
| #define C10_CUDA_CHECK_WARN(EXPR) \ |
| do { \ |
| cudaError_t __err = EXPR; \ |
| if (__err != cudaSuccess) { \ |
| auto error_unused C10_UNUSED = cudaGetLastError(); \ |
| TORCH_WARN("CUDA warning: ", cudaGetErrorString(__err)); \ |
| } \ |
| } while (0) |