xref: /petsc/src/vec/vec/interface/vecregall.c (revision a496304597bacff3545e802853d69e8765312868)
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