Actual source code: sfcupm.cu

  1: #include <petscdevice_cuda.h>
  2: #include <petsc/private/sfimpl.h>
  3: #include "../sfcupm.hpp"
  4: #include "../sfcupm_impl.hpp"

  6: namespace Petsc
  7: {

  9: namespace sf
 10: {

 12: namespace cupm
 13: {

 15: namespace impl
 16: {

 18: template struct SfInterface<device::cupm::DeviceType::CUDA>;

 20: } // namespace impl

 22: } // namespace cupm

 24: } // namespace sf

 26: } // namespace Petsc

 28: using PetscSFCuda = ::Petsc::sf::cupm::impl::SfInterface<::Petsc::device::cupm::DeviceType::CUDA>;

 30: PetscErrorCode PetscSFMalloc_CUDA(PetscMemType mtype, size_t size, void **ptr)
 31: {
 32:   PetscFunctionBegin;
 33:   PetscCall(PetscSFCuda::Malloc(mtype, size, ptr));
 34:   PetscFunctionReturn(PETSC_SUCCESS);
 35: }

 37: PetscErrorCode PetscSFFree_CUDA(PetscMemType mtype, void *ptr)
 38: {
 39:   PetscFunctionBegin;
 40:   PetscCall(PetscSFCuda::Free(mtype, ptr));
 41:   PetscFunctionReturn(PETSC_SUCCESS);
 42: }

 44: PetscErrorCode PetscSFLinkSetUp_CUDA(PetscSF sf, PetscSFLink link, MPI_Datatype unit)
 45: {
 46:   PetscFunctionBegin;
 47:   PetscCall(PetscSFCuda::LinkSetUp(sf, link, unit));
 48:   PetscFunctionReturn(PETSC_SUCCESS);
 49: }