xref: /petsc/src/vec/is/sf/impls/basic/cupm/cuda/sfcupm.cu (revision 92c13d488c7a5148a675f28cf57aea51154a8297)
1 #include <petscdevice_cuda.h>
2 #include <petsc/private/sfimpl.h>
3 #include "../sfcupm.hpp"
4 #include "../sfcupm_impl.hpp"
5 
6 namespace Petsc
7 {
8 
9 namespace sf
10 {
11 
12 namespace cupm
13 {
14 
15 namespace impl
16 {
17 
18 template struct SfInterface<device::cupm::DeviceType::CUDA>;
19 
20 } // namespace impl
21 
22 } // namespace cupm
23 
24 } // namespace sf
25 
26 } // namespace Petsc
27 
28 using PetscSFCuda = ::Petsc::sf::cupm::impl::SfInterface<::Petsc::device::cupm::DeviceType::CUDA>;
29 
PetscSFMalloc_CUDA(PetscMemType mtype,size_t size,void ** ptr)30 PetscErrorCode PetscSFMalloc_CUDA(PetscMemType mtype, size_t size, void **ptr)
31 {
32   PetscFunctionBegin;
33   PetscCall(PetscSFCuda::Malloc(mtype, size, ptr));
34   PetscFunctionReturn(PETSC_SUCCESS);
35 }
36 
PetscSFFree_CUDA(PetscMemType mtype,void * ptr)37 PetscErrorCode PetscSFFree_CUDA(PetscMemType mtype, void *ptr)
38 {
39   PetscFunctionBegin;
40   PetscCall(PetscSFCuda::Free(mtype, ptr));
41   PetscFunctionReturn(PETSC_SUCCESS);
42 }
43 
PetscSFLinkSetUp_CUDA(PetscSF sf,PetscSFLink link,MPI_Datatype unit)44 PetscErrorCode PetscSFLinkSetUp_CUDA(PetscSF sf, PetscSFLink link, MPI_Datatype unit)
45 {
46   PetscFunctionBegin;
47   PetscCall(PetscSFCuda::LinkSetUp(sf, link, unit));
48   PetscFunctionReturn(PETSC_SUCCESS);
49 }
50