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: }