xref: /petsc/src/vec/vec/interface/vecregall.c (revision 6a5217c03994f2d95bb2e6dbd8bed42381aeb015)
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_CUDA)
17 PETSC_EXTERN PetscErrorCode VecCreate_SeqCUDA(Vec);
18 PETSC_EXTERN PetscErrorCode VecCreate_MPICUDA(Vec);
19 PETSC_EXTERN PetscErrorCode VecCreate_CUDA(Vec);
20 #endif
21 #if defined(PETSC_HAVE_KOKKOS_KERNELS)
22 PETSC_EXTERN PetscErrorCode VecCreate_SeqKokkos(Vec);
23 PETSC_EXTERN PetscErrorCode VecCreate_MPIKokkos(Vec);
24 PETSC_EXTERN PetscErrorCode VecCreate_Kokkos(Vec);
25 #endif
26 #if defined(PETSC_HAVE_HIP)
27 PETSC_EXTERN PetscErrorCode VecCreate_SeqHIP(Vec);
28 PETSC_EXTERN PetscErrorCode VecCreate_MPIHIP(Vec);
29 PETSC_EXTERN PetscErrorCode VecCreate_HIP(Vec);
30 #endif
31 
32 /*@C
33   VecRegisterAll - Registers all of the vector components in the Vec package.
34 
35   Not Collective
36 
37   Level: advanced
38 
39 .seealso:  VecRegister(), VecRegisterDestroy(), VecRegister()
40 @*/
41 PetscErrorCode VecRegisterAll(void)
42 {
43   PetscFunctionBegin;
44   if (VecRegisterAllCalled) PetscFunctionReturn(0);
45   VecRegisterAllCalled = PETSC_TRUE;
46 
47   PetscCall(VecRegister(VECSEQ,        VecCreate_Seq));
48   PetscCall(VecRegister(VECMPI,        VecCreate_MPI));
49   PetscCall(VecRegister(VECSTANDARD,   VecCreate_Standard));
50   PetscCall(VecRegister(VECSHARED,     VecCreate_Shared));
51 #if defined PETSC_HAVE_VIENNACL
52   PetscCall(VecRegister(VECSEQVIENNACL,    VecCreate_SeqViennaCL));
53   PetscCall(VecRegister(VECMPIVIENNACL,    VecCreate_MPIViennaCL));
54   PetscCall(VecRegister(VECVIENNACL,       VecCreate_ViennaCL));
55 #endif
56 #if defined(PETSC_HAVE_CUDA)
57   PetscCall(VecRegister(VECSEQCUDA,    VecCreate_SeqCUDA));
58   PetscCall(VecRegister(VECMPICUDA,    VecCreate_MPICUDA));
59   PetscCall(VecRegister(VECCUDA,       VecCreate_CUDA));
60 #endif
61 #if defined(PETSC_HAVE_KOKKOS_KERNELS)
62   PetscCall(VecRegister(VECSEQKOKKOS,  VecCreate_SeqKokkos));
63   PetscCall(VecRegister(VECMPIKOKKOS,  VecCreate_MPIKokkos));
64   PetscCall(VecRegister(VECKOKKOS,     VecCreate_Kokkos));
65 #endif
66 #if defined(PETSC_HAVE_HIP)
67   PetscCall(VecRegister(VECSEQHIP,    VecCreate_SeqHIP));
68   PetscCall(VecRegister(VECMPIHIP,    VecCreate_MPIHIP));
69   PetscCall(VecRegister(VECHIP,       VecCreate_HIP));
70 #endif
71   PetscFunctionReturn(0);
72 }
73