PETSc version 3.17.4
Fix/Edit manual page

# PetscMemType

Memory type of a pointer

### Synopsis

    #include <petscdevicetypes.h>
    typedef enum {
      PETSC_MEMTYPE_HOST    = 0,
      PETSC_MEMTYPE_DEVICE  = 0x01,
      PETSC_MEMTYPE_CUDA    = 0x01,
      PETSC_MEMTYPE_NVSHMEM = 0x11,
      PETSC_MEMTYPE_HIP     = 0x03,
      PETSC_MEMTYPE_SYCL    = 0x05,
    } PetscMemType;

### Developer Note

Encoding of the bitmask in binary: xxxxyyyz

    z = 0                - Host memory

    z = 1                - Device memory

    yyy = 000            - CUDA-related memory

    yyy = 001            - HIP-related memory

    yyy = 010            - SYCL-related memory

    xxxxyyy1 = 0000,0001 - CUDA memory

    xxxxyyy1 = 0001,0001 - CUDA NVSHMEM memory

    xxxxyyy1 = 0000,0011 - HIP memory

    xxxxyyy1 = 0000,0101 - SYCL memory

Other types of memory, e.g., CUDA managed memory, can be added when needed.

### Notes

PETSC_MEMTYPE_KOKKOS depends on the KOKKOS backend configuration

### See Also

VecGetArrayAndMemType(), PetscSFBcastWithMemTypeBegin(), PetscSFReduceWithMemTypeBegin()

### Level

beginner

### Location

include/petscdevicetypes.h
Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages