#include petscsys.h typedef enum { PETSC_OFFLOAD_UNALLOCATED = 0x0, PETSC_OFFLOAD_CPU = 0x1, PETSC_OFFLOAD_GPU = 0x2, PETSC_OFFLOAD_BOTH = 0x3, PETSC_OFFLOAD_VECKOKKOS_DEPRECATED = 0x100, PETSC_OFFLOAD_KOKKOS = 0x100 } PetscOffloadMask;
PETSC_OFFLOAD_UNALLOCATED - no memory contains valid matrix entries; NEVER used for vectors
PETSC_OFFLOAD_GPU - GPU has valid vector/matrix entries
PETSC_OFFLOAD_CPU - CPU has valid vector/matrix entries
PETSC_OFFLOAD_BOTH - Both GPU and CPU have valid vector/matrix entries and they match
PETSC_OFFLOAD_KOKKOS - Reserved for Kokkos matrix and vector. It means the offload is managed by Kokkos, thus this flag itself cannot tell you where the valid data is.