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