9#ifndef FORTRAN_RUNTIME_CUDA_COMMON_H_
10#define FORTRAN_RUNTIME_CUDA_COMMON_H_
12#include "flang/Runtime/descriptor-consts.h"
13#include "flang/Runtime/entry-names.h"
16static constexpr unsigned kMemTypeDevice = 0;
17static constexpr unsigned kMemTypeManaged = 1;
18static constexpr unsigned kMemTypeUnified = 2;
19static constexpr unsigned kMemTypePinned = 3;
22static constexpr unsigned kHostToDevice = 0;
23static constexpr unsigned kDeviceToHost = 1;
24static constexpr unsigned kDeviceToDevice = 2;
26#define CUDA_REPORT_IF_ERROR(expr) \
27 [](cudaError_t err) { \
28 if (err == cudaSuccess) \
30 const char *name = cudaGetErrorName(err); \
33 Fortran::runtime::Terminator terminator{__FILE__, __LINE__}; \
34 terminator.Crash("'%s' failed with '%s'", #expr, name); \