1: #pragma once 3: #include <petsc/private/pcimpl.h> 5: /* 6: Private context (data structure) for the VPBJacobi preconditioner. 7: */ 8: typedef struct { 9: PetscInt nblocks, min_bs, max_bs; // Stats recorded during setup for viewing 10: MatScalar *diag; /* on host */ 11: void *spptr; /* offload to devices */ 12: } PC_VPBJacobi; 14: #if defined(PETSC_HAVE_CUDA) 15: PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_CUDA(PC); 16: #endif 18: #if defined(PETSC_HAVE_KOKKOS_KERNELS) 19: PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Kokkos(PC); 20: #endif 22: PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Host(PC); 23: PETSC_INTERN PetscErrorCode PCDestroy_VPBJacobi(PC);