Actual source code: sfcupm.hip.cpp

  1: #include <../src/vec/is/sf/impls/basic/sfpack.h>
  2: #include <petscpkg_version.h>

  4: /* compilation issues on SPOCK */
  5: #undef PETSC_HAVE_COMPLEX

  7: #include <petscdevice_hip.h>
  8: #include <petsc/private/sfimpl.h>
  9: #include "../sfcupm.hpp"
 10: #include "../sfcupm_impl.hpp"

 12: namespace Petsc
 13: {

 15: namespace sf
 16: {

 18: namespace cupm
 19: {

 21: namespace impl
 22: {

 24: template struct SfInterface<device::cupm::DeviceType::HIP>;

 26: } // namespace impl

 28: } // namespace cupm

 30: } // namespace sf

 32: } // namespace Petsc

 34: using PetscSFHIP = ::Petsc::sf::cupm::impl::SfInterface<::Petsc::device::cupm::DeviceType::HIP>;

 36: PetscErrorCode PetscSFMalloc_HIP(PetscMemType mtype, size_t size, void **ptr)
 37: {
 38:   PetscFunctionBegin;
 39:   PetscCall(PetscSFHIP::Malloc(mtype, size, ptr));
 40:   PetscFunctionReturn(PETSC_SUCCESS);
 41: }

 43: PetscErrorCode PetscSFFree_HIP(PetscMemType mtype, void *ptr)
 44: {
 45:   PetscFunctionBegin;
 46:   PetscCall(PetscSFHIP::Free(mtype, ptr));
 47:   PetscFunctionReturn(PETSC_SUCCESS);
 48: }

 50: PetscErrorCode PetscSFLinkSetUp_HIP(PetscSF sf, PetscSFLink link, MPI_Datatype unit)
 51: {
 52:   PetscFunctionBegin;
 53:   PetscCall(PetscSFHIP::LinkSetUp(sf, link, unit));
 54:   PetscFunctionReturn(PETSC_SUCCESS);
 55: }