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