xref: /petsc/src/ksp/pc/impls/vpbjacobi/vpbjacobi.h (revision a496304597bacff3545e802853d69e8765312868)
1*a4963045SJacob Faibussowitsch #pragma once
2f1be3500SJunchao Zhang 
3f1be3500SJunchao Zhang #include <petsc/private/pcimpl.h>
4f1be3500SJunchao Zhang 
5f1be3500SJunchao Zhang /*
6f1be3500SJunchao Zhang    Private context (data structure) for the VPBJacobi preconditioner.
7f1be3500SJunchao Zhang */
8f1be3500SJunchao Zhang typedef struct {
90a94ea6bSJed Brown   PetscInt   nblocks, min_bs, max_bs; // Stats recorded during setup for viewing
10f1be3500SJunchao Zhang   MatScalar *diag;                    /* on host */
11f1be3500SJunchao Zhang   void      *spptr;                   /* offload to devices */
12f1be3500SJunchao Zhang } PC_VPBJacobi;
13f1be3500SJunchao Zhang 
14f1be3500SJunchao Zhang #if defined(PETSC_HAVE_CUDA)
15f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_CUDA(PC);
16f1be3500SJunchao Zhang #endif
17f1be3500SJunchao Zhang 
18f1be3500SJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS)
19f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Kokkos(PC);
20f1be3500SJunchao Zhang #endif
21f1be3500SJunchao Zhang 
22f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Host(PC);
23f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCDestroy_VPBJacobi(PC);
24