Skip to main content
`Ctrl`+`K`

# 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 Note

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

Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages