1: #pragma once 3: #include <petscdevice_cuda.h> 4: #include <petscdevice_hip.h> 6: /* MANSEC = Sys */ 8: #if PetscDefined(USING_HCC) && PetscDefined(USING_NVCC) 9: #error using both nvcc and hipcc at the same time? 10: #endif 12: /* 13: The CUDA-like Programming Model (CUPM) is PETSc's shared abstraction over the 14: CUDA and HIP runtimes, whose APIs are structurally near-identical. A single 15: templated implementation (see the cupm/ directories under src/) is compiled 16: for either backend. See doc/developers/style.md for a concise discussion of CUPM. 17: */ 19: #if PetscDefined(USING_NVCC) || PetscDefined(USING_HCC) 20: #define PETSC_USING_CUPMCC 1 21: #endif