Commit 413d8e00 authored by anagainaru's avatar anagainaru
Browse files

Making our Kokkos backend agnostic to Kokkos specific memory space

parent 189f3842
Loading
Loading
Loading
Loading
+3 −42
Original line number Diff line number Diff line
@@ -9,55 +9,16 @@ namespace detail
{

template <typename T>
struct memspace_kokkos_to_adios2;

template <>
struct memspace_kokkos_to_adios2<Kokkos::HostSpace>
{
    static constexpr adios2::MemorySpace value = adios2::MemorySpace::Host;
};

#if defined(KOKKOS_ENABLE_CUDA) && defined(ADIOS2_HAVE_GPU_SUPPORT)

template <>
struct memspace_kokkos_to_adios2<Kokkos::CudaSpace>
struct memspace_kokkos_to_adios2
{
    static constexpr adios2::MemorySpace value = adios2::MemorySpace::GPU;
};

template <>
struct memspace_kokkos_to_adios2<Kokkos::CudaUVMSpace>
{
    static constexpr adios2::MemorySpace value = adios2::MemorySpace::GPU;
};

template <>
struct memspace_kokkos_to_adios2<Kokkos::CudaHostPinnedSpace>
{
    static constexpr adios2::MemorySpace value = adios2::MemorySpace::GPU;
};

#endif

#if defined(KOKKOS_ENABLE_HIP) && defined(ADIOS2_HAVE_GPU_SUPPORT)
template <>
struct memspace_kokkos_to_adios2<Kokkos::Experimental::HIPSpace>
{
    static constexpr adios2::MemorySpace value = adios2::MemorySpace::GPU;
};

template <>
struct memspace_kokkos_to_adios2<Kokkos::Experimental::HIPHostPinnedSpace>
{
    static constexpr adios2::MemorySpace value = adios2::MemorySpace::GPU;
};

template <>
struct memspace_kokkos_to_adios2<Kokkos::Experimental::HIPManagedSpace>
struct memspace_kokkos_to_adios2<Kokkos::HostSpace>
{
    static constexpr adios2::MemorySpace value = adios2::MemorySpace::GPU;
    static constexpr adios2::MemorySpace value = adios2::MemorySpace::Host;
};
#endif

} // namespace detail

+4 −14
Original line number Diff line number Diff line
@@ -13,10 +13,10 @@

namespace
{
template <class MemSpace>
void KokkosDeepCopy(const char *src, char *dst, size_t byteCount)
{
    Kokkos::View<const char *, MemSpace,
    using mem_space = Kokkos::DefaultExecutionSpace::memory_space;
    Kokkos::View<const char *, mem_space,
                 Kokkos::MemoryTraits<Kokkos::Unmanaged>>
        srcView(src, byteCount);
    Kokkos::View<char *, Kokkos::HostSpace,
@@ -62,22 +62,12 @@ namespace helper
{
void MemcpyGPUToBuffer(char *dst, const char *GPUbuffer, size_t byteCount)
{
#ifdef ADIOS2_HAVE_KOKKOS_CUDA
    KokkosDeepCopy<Kokkos::CudaSpace>(GPUbuffer, dst, byteCount);
#endif
#ifdef ADIOS2_HAVE_KOKKOS_HIP
    KokkosDeepCopy<Kokkos::Experimental::HIPSpace>(GPUbuffer, dst, byteCount);
#endif
    KokkosDeepCopy(GPUbuffer, dst, byteCount);
}

void MemcpyBufferToGPU(char *GPUbuffer, const char *src, size_t byteCount)
{
#ifdef ADIOS2_HAVE_KOKKOS_CUDA
    KokkosDeepCopy<Kokkos::CudaSpace>(src, GPUbuffer, byteCount);
#endif
#ifdef ADIOS2_HAVE_KOKKOS_HIP
    KokkosDeepCopy<Kokkos::Experimental::HIPSpace>(src, GPUbuffer, byteCount);
#endif
    KokkosDeepCopy(src, GPUbuffer, byteCount);
}

bool IsGPUbuffer(const void *ptr)