16524c165SJacob Faibussowitsch #ifndef VPBJACOBI_H 2f1be3500SJunchao Zhang #define VPBJACOBI_H 3f1be3500SJunchao Zhang 4f1be3500SJunchao Zhang #include <petsc/private/pcimpl.h> 5f1be3500SJunchao Zhang 6f1be3500SJunchao Zhang /* 7f1be3500SJunchao Zhang Private context (data structure) for the VPBJacobi preconditioner. 8f1be3500SJunchao Zhang */ 9f1be3500SJunchao Zhang typedef struct { 10*0a94ea6bSJed Brown PetscInt nblocks, min_bs, max_bs; // Stats recorded during setup for viewing 11f1be3500SJunchao Zhang MatScalar *diag; /* on host */ 12f1be3500SJunchao Zhang void *spptr; /* offload to devices */ 13f1be3500SJunchao Zhang } PC_VPBJacobi; 14f1be3500SJunchao Zhang 15f1be3500SJunchao Zhang #if defined(PETSC_HAVE_CUDA) 16f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_CUDA(PC); 17f1be3500SJunchao Zhang #endif 18f1be3500SJunchao Zhang 19f1be3500SJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS) 20f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Kokkos(PC); 21f1be3500SJunchao Zhang #endif 22f1be3500SJunchao Zhang 23f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Host(PC); 24f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCDestroy_VPBJacobi(PC); 25f1be3500SJunchao Zhang 26f1be3500SJunchao Zhang #endif 27