#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)
|