xref: /petsc/src/vec/is/sf/impls/basic/cupm/cuda/sfcupm.cu (revision 92c13d488c7a5148a675f28cf57aea51154a8297)
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