12#ifdef ALPAKA_ACC_SYCL_ENABLED
14# include <sycl/sycl.hpp>
21 struct DevGlobalTrait<TagCpuSycl, T>
24 using Type = sycl::ext::oneapi::experimental::device_global<T>;
28 struct DevGlobalTrait<TagGpuSyclIntel, T>
31 using Type = sycl::ext::oneapi::experimental::device_global<T>;
35 struct DevGlobalTrait<TagGpuSyclNvidia, T>
38 using Type = sycl::ext::oneapi::experimental::device_global<T>;
42 struct DevGlobalTrait<TagGpuSyclAmd, T>
45 using Type = sycl::ext::oneapi::experimental::device_global<T>;
49 struct DevGlobalTrait<TagFpgaSyclIntel, T>
52 using Type = sycl::ext::oneapi::experimental::device_global<T>;
56 struct DevGlobalTrait<TagGenericSycl, T>
59 using Type = sycl::ext::oneapi::experimental::device_global<T>;
64 template<
typename TDev,
bool TBlocking,
typename TViewDst,
typename TTypeSrc>
66 detail::QueueGenericSyclBase<TDev, TBlocking>& queue,
68 sycl::ext::oneapi::experimental::device_global<TTypeSrc>
const& viewSrc)
70 queue.getNativeHandle().memcpy(
reinterpret_cast<void*
>(
getPtrNative(viewDst)), viewSrc);
74 template<
typename TDev,
bool TBlocking,
typename TTypeDst,
typename TViewSrc>
76 detail::QueueGenericSyclBase<TDev, TBlocking>& queue,
77 sycl::ext::oneapi::experimental::device_global<TTypeDst>& viewDst,
78 TViewSrc
const& viewSrc)
80 queue.getNativeHandle().memcpy(viewDst,
reinterpret_cast<void const*
>(
getPtrNative(viewSrc)));
84 template<
typename TDev,
bool TBlocking,
typename TViewDst,
typename TTypeSrc,
typename TExtent>
86 detail::QueueGenericSyclBase<TDev, TBlocking>& queue,
88 sycl::ext::oneapi::experimental::device_global<TTypeSrc>
const& viewSrc,
92 auto size =
static_cast<std::size_t
>(
getHeight(extent)) *
static_cast<std::size_t
>(
getDepth(extent))
93 *
static_cast<std::size_t
>(
getWidth(extent)) *
sizeof(
Elem);
94 queue.getNativeHandle().memcpy(
reinterpret_cast<void*
>(
getPtrNative(viewDst)), viewSrc, size);
98 template<
typename TDev,
bool TBlocking,
typename TTypeDst,
typename TViewSrc,
typename TExtent>
100 detail::QueueGenericSyclBase<TDev, TBlocking>& queue,
101 sycl::ext::oneapi::experimental::device_global<TTypeDst>& viewDst,
102 TViewSrc
const& viewSrc,
106 auto size =
static_cast<std::size_t
>(
getHeight(extent)) *
static_cast<std::size_t
>(
getDepth(extent))
107 *
static_cast<std::size_t
>(
getWidth(extent)) *
sizeof(
Elem);
108 queue.getNativeHandle().memcpy(viewDst,
reinterpret_cast<void const*
>(
getPtrNative(viewSrc)), size);
The alpaka accelerator library.
ALPAKA_FN_HOST auto memcpy(TQueue &queue, alpaka::detail::DevGlobalImplGeneric< TTag, TTypeDst > &viewDst, TViewSrc const &viewSrc) -> void
ALPAKA_NO_HOST_ACC_WARNING ALPAKA_FN_HOST_ACC auto getHeight(TExtent const &extent=TExtent()) -> Idx< TExtent >
ALPAKA_FN_HOST auto getPtrNative(TView const &view) -> Elem< TView > const *
Gets the native pointer of the memory view.
std::remove_volatile_t< typename trait::ElemType< TView >::type > Elem
The element type trait alias template to remove the ::type.
ALPAKA_NO_HOST_ACC_WARNING ALPAKA_FN_HOST_ACC auto getDepth(TExtent const &extent=TExtent()) -> Idx< TExtent >
ALPAKA_NO_HOST_ACC_WARNING ALPAKA_FN_HOST_ACC auto getWidth(TExtent const &extent=TExtent()) -> Idx< TExtent >