1*f1be3500SJunchao Zhang #if !defined(VPBJACOBI_H) 2*f1be3500SJunchao Zhang #define VPBJACOBI_H 3*f1be3500SJunchao Zhang 4*f1be3500SJunchao Zhang #include <petsc/private/pcimpl.h> 5*f1be3500SJunchao Zhang 6*f1be3500SJunchao Zhang /* 7*f1be3500SJunchao Zhang Private context (data structure) for the VPBJacobi preconditioner. 8*f1be3500SJunchao Zhang */ 9*f1be3500SJunchao Zhang typedef struct { 10*f1be3500SJunchao Zhang MatScalar *diag; /* on host */ 11*f1be3500SJunchao Zhang void *spptr; /* offload to devices */ 12*f1be3500SJunchao Zhang } PC_VPBJacobi; 13*f1be3500SJunchao Zhang 14*f1be3500SJunchao Zhang #if defined(PETSC_HAVE_CUDA) 15*f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_CUDA(PC); 16*f1be3500SJunchao Zhang #endif 17*f1be3500SJunchao Zhang 18*f1be3500SJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS) 19*f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Kokkos(PC); 20*f1be3500SJunchao Zhang #endif 21*f1be3500SJunchao Zhang 22*f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Host(PC); 23*f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCDestroy_VPBJacobi(PC); 24*f1be3500SJunchao Zhang 25*f1be3500SJunchao Zhang #endif 26