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