xref: /petsc/src/ksp/pc/impls/vpbjacobi/vpbjacobi.h (revision 0a94ea6b0bfc2dc43c73e787c72aad2597d47383)
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