:orphan:
# PetscOffloadMask
indicates which memory (CPU, GPU, or none) contains valid data 
## Synopsis
```
#include <petscdevicetypes.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;
```

## 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
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/include/petscdevicetypes.h.html#PetscOffloadMask">include/petscdevicetypes.h</A>


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