typedef enum { PETSC_DEVICE_INVALID = 0, PETSC_DEVICE_CUDA = 1, PETSC_DEVICE_HIP = 2, PETSC_DEVICE_MAX = 3 } PetscDeviceKind;
PETSC_DEVICE_INVALID - Invalid type, do not use
PETSC_DEVICE_CUDA - CUDA enabled GPU
PETSC_DEVICE_HIP - ROCM/HIP enabled GPU
PETSC_DEVICE_DEFAULT - Automatically select backend based on availability
PETSC_DEVICE_MAX - Always 1 greater than the largest valid PetscDeviceKInd, invalid type, do not use