:orphan: # PetscOffloadMask indicates which memory (CPU, GPU, or none) contains valid data ## Synopsis ``` #include 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; ``` ## Values - ***`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. ## Developer Notes This enum uses a function (`PetscOffloadMaskToString()`) to convert to string representation so cannot be used in `PetscOptionsEnum()`. ## See Also `PetscOffloadMaskToString()`, `PetscOffloadMaskToMemType()`, `PetscOffloadMaskToDeviceCopyMode()` ## Level developer ## Location include/petscdevicetypes.h --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/include/petscdevicetypes.h) [Index of all Sys routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)