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 @*/
VecRegisterAll(void)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