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