1 #include <petscvec.h> 2 #include <petsc/private/vecimpl.h> 3 PETSC_EXTERN PetscErrorCode VecCreate_Seq(Vec); 4 PETSC_EXTERN PetscErrorCode VecCreate_MPI(Vec); 5 PETSC_EXTERN PetscErrorCode VecCreate_Standard(Vec); 6 PETSC_EXTERN PetscErrorCode VecCreate_Shared(Vec); 7 #if defined(PETSC_HAVE_MPI_PROCESS_SHARED_MEMORY) 8 PETSC_EXTERN PetscErrorCode VecCreate_Node(Vec); 9 #endif 10 #if defined(PETSC_HAVE_VIENNACL) 11 PETSC_EXTERN PetscErrorCode VecCreate_SeqViennaCL(Vec); 12 PETSC_EXTERN PetscErrorCode VecCreate_MPIViennaCL(Vec); 13 PETSC_EXTERN PetscErrorCode VecCreate_ViennaCL(Vec); 14 #endif 15 #if defined(PETSC_HAVE_KOKKOS_KERNELS) 16 PETSC_EXTERN PetscErrorCode VecCreate_SeqKokkos(Vec); 17 PETSC_EXTERN PetscErrorCode VecCreate_MPIKokkos(Vec); 18 PETSC_EXTERN PetscErrorCode VecCreate_Kokkos(Vec); 19 #endif 20 21 PetscBool VecRegisterAllCalled = PETSC_FALSE; 22 23 /*@C 24 VecRegisterAll - Registers all of the vector types in the `Vec` package. 25 26 Not Collective 27 28 Level: advanced 29 30 .seealso: [](ch_vectors), `Vec`, `VecType`, `VecRegister()`, `VecRegisterDestroy()` 31 @*/ 32 PetscErrorCode VecRegisterAll(void) 33 { 34 PetscFunctionBegin; 35 if (VecRegisterAllCalled) PetscFunctionReturn(PETSC_SUCCESS); 36 VecRegisterAllCalled = PETSC_TRUE; 37 38 PetscCall(VecRegister(VECSEQ, VecCreate_Seq)); 39 PetscCall(VecRegister(VECMPI, VecCreate_MPI)); 40 PetscCall(VecRegister(VECSTANDARD, VecCreate_Standard)); 41 PetscCall(VecRegister(VECSHARED, VecCreate_Shared)); 42 #if defined PETSC_HAVE_VIENNACL 43 PetscCall(VecRegister(VECSEQVIENNACL, VecCreate_SeqViennaCL)); 44 PetscCall(VecRegister(VECMPIVIENNACL, VecCreate_MPIViennaCL)); 45 PetscCall(VecRegister(VECVIENNACL, VecCreate_ViennaCL)); 46 #endif 47 #if defined(PETSC_HAVE_CUDA) 48 PetscCall(VecRegister(VECSEQCUDA, VecCreate_SeqCUDA)); 49 PetscCall(VecRegister(VECMPICUDA, VecCreate_MPICUDA)); 50 PetscCall(VecRegister(VECCUDA, VecCreate_CUDA)); 51 #endif 52 #if defined(PETSC_HAVE_KOKKOS_KERNELS) 53 PetscCall(VecRegister(VECSEQKOKKOS, VecCreate_SeqKokkos)); 54 PetscCall(VecRegister(VECMPIKOKKOS, VecCreate_MPIKokkos)); 55 PetscCall(VecRegister(VECKOKKOS, VecCreate_Kokkos)); 56 #endif 57 #if defined(PETSC_HAVE_HIP) 58 PetscCall(VecRegister(VECSEQHIP, VecCreate_SeqHIP)); 59 PetscCall(VecRegister(VECMPIHIP, VecCreate_MPIHIP)); 60 PetscCall(VecRegister(VECHIP, VecCreate_HIP)); 61 #endif 62 PetscFunctionReturn(PETSC_SUCCESS); 63 } 64