xref: /petsc/src/vec/vec/interface/vecregall.c (revision 9d47de495d3c23378050c1b4a410c12a375cb6c6)
1f7ecc322SBarry Smith #include <petscvec.h>
2af0996ceSBarry Smith #include <petsc/private/vecimpl.h>
38cc058d9SJed Brown PETSC_EXTERN PetscErrorCode VecCreate_Seq(Vec);
48cc058d9SJed Brown PETSC_EXTERN PetscErrorCode VecCreate_MPI(Vec);
58cc058d9SJed Brown PETSC_EXTERN PetscErrorCode VecCreate_Standard(Vec);
68cc058d9SJed Brown PETSC_EXTERN PetscErrorCode VecCreate_Shared(Vec);
7b674149eSJunchao Zhang #if defined(PETSC_HAVE_MPI_PROCESS_SHARED_MEMORY)
8803a1b88SHong Zhang PETSC_EXTERN PetscErrorCode VecCreate_Node(Vec);
974c49cccSHong Zhang #endif
10e9e886b6SKarl Rupp #if defined(PETSC_HAVE_VIENNACL)
1145b7af86SKarl Rupp PETSC_EXTERN PetscErrorCode VecCreate_SeqViennaCL(Vec);
1245b7af86SKarl Rupp PETSC_EXTERN PetscErrorCode VecCreate_MPIViennaCL(Vec);
1345b7af86SKarl Rupp PETSC_EXTERN PetscErrorCode VecCreate_ViennaCL(Vec);
14b8ced49eSKarl Rupp #endif
1510171e34SJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS)
1610171e34SJunchao Zhang PETSC_EXTERN PetscErrorCode VecCreate_SeqKokkos(Vec);
1710171e34SJunchao Zhang PETSC_EXTERN PetscErrorCode VecCreate_MPIKokkos(Vec);
1810171e34SJunchao Zhang PETSC_EXTERN PetscErrorCode VecCreate_Kokkos(Vec);
1910171e34SJunchao Zhang #endif
20aa713d4dSSatish Balay 
21da8c939bSJacob Faibussowitsch PetscBool VecRegisterAllCalled = PETSC_FALSE;
22da8c939bSJacob Faibussowitsch 
23aa713d4dSSatish Balay /*@C
2420662ed9SBarry Smith   VecRegisterAll - Registers all of the vector types in the `Vec` package.
25aa713d4dSSatish Balay 
26aa713d4dSSatish Balay   Not Collective
27aa713d4dSSatish Balay 
28aa713d4dSSatish Balay   Level: advanced
29aa713d4dSSatish Balay 
3038b5cf2dSJacob Faibussowitsch .seealso: [](ch_vectors), `Vec`, `VecType`, `VecRegister()`, `VecRegisterDestroy()`
31aa713d4dSSatish Balay @*/
VecRegisterAll(void)32d71ae5a4SJacob Faibussowitsch PetscErrorCode VecRegisterAll(void)
33d71ae5a4SJacob Faibussowitsch {
34aa713d4dSSatish Balay   PetscFunctionBegin;
353ba16761SJacob Faibussowitsch   if (VecRegisterAllCalled) PetscFunctionReturn(PETSC_SUCCESS);
36aa713d4dSSatish Balay   VecRegisterAllCalled = PETSC_TRUE;
37aa713d4dSSatish Balay 
389566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECSEQ, VecCreate_Seq));
399566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECMPI, VecCreate_MPI));
409566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECSTANDARD, VecCreate_Standard));
419566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECSHARED, VecCreate_Shared));
42*beceaeb6SBarry Smith #if defined(PETSC_HAVE_VIENNACL)
439566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECSEQVIENNACL, VecCreate_SeqViennaCL));
449566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECMPIVIENNACL, VecCreate_MPIViennaCL));
459566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECVIENNACL, VecCreate_ViennaCL));
46b8ced49eSKarl Rupp #endif
47fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA)
489566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECSEQCUDA, VecCreate_SeqCUDA));
499566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECMPICUDA, VecCreate_MPICUDA));
509566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECCUDA, VecCreate_CUDA));
5145b7af86SKarl Rupp #endif
5210171e34SJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS)
539566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECSEQKOKKOS, VecCreate_SeqKokkos));
549566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECMPIKOKKOS, VecCreate_MPIKokkos));
559566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECKOKKOS, VecCreate_Kokkos));
5610171e34SJunchao Zhang #endif
5759af0bd3SScott Kruger #if defined(PETSC_HAVE_HIP)
589566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECSEQHIP, VecCreate_SeqHIP));
599566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECMPIHIP, VecCreate_MPIHIP));
609566063dSJacob Faibussowitsch   PetscCall(VecRegister(VECHIP, VecCreate_HIP));
6159af0bd3SScott Kruger #endif
623ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
63aa713d4dSSatish Balay }
64