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