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