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