10 #ifdef ALPAKA_ACC_SYCL_ENABLED
12 # include <sycl/sycl.hpp>
19 struct DevGlobalTrait<TagCpuSycl, T>
22 using Type = sycl::ext::oneapi::experimental::device_global<T>;
26 struct DevGlobalTrait<TagGpuSyclIntel, T>
29 using Type = sycl::ext::oneapi::experimental::device_global<T>;
33 struct DevGlobalTrait<TagFpgaSyclIntel, T>
36 using Type = sycl::ext::oneapi::experimental::device_global<T>;
40 struct DevGlobalTrait<TagGenericSycl, T>
43 using Type = sycl::ext::oneapi::experimental::device_global<T>;
48 template<
typename TDev,
bool TBlocking,
typename TViewDst,
typename TTypeSrc>
50 detail::QueueGenericSyclBase<TDev, TBlocking>& queue,
52 sycl::ext::oneapi::experimental::device_global<TTypeSrc>
const& viewSrc)
54 queue.getNativeHandle().memcpy(
reinterpret_cast<void*
>(
getPtrNative(viewDst)), viewSrc);
58 template<
typename TDev,
bool TBlocking,
typename TTypeDst,
typename TViewSrc>
60 detail::QueueGenericSyclBase<TDev, TBlocking>& queue,
61 sycl::ext::oneapi::experimental::device_global<TTypeDst>& viewDst,
62 TViewSrc
const& viewSrc)
64 queue.getNativeHandle().memcpy(viewDst,
reinterpret_cast<void const*
>(
getPtrNative(viewSrc)));
68 template<
typename TDev,
bool TBlocking,
typename TViewDst,
typename TTypeSrc,
typename TExtent>
70 detail::QueueGenericSyclBase<TDev, TBlocking>& queue,
72 sycl::ext::oneapi::experimental::device_global<TTypeSrc>
const& viewSrc,
76 auto size =
static_cast<std::size_t
>(
getHeight(extent)) *
static_cast<std::size_t
>(
getDepth(extent))
77 *
static_cast<std::size_t
>(
getWidth(extent)) *
sizeof(
Elem);
78 queue.getNativeHandle().memcpy(
reinterpret_cast<void*
>(
getPtrNative(viewDst)), viewSrc, size);
82 template<
typename TDev,
bool TBlocking,
typename TTypeDst,
typename TViewSrc,
typename TExtent>
84 detail::QueueGenericSyclBase<TDev, TBlocking>& queue,
85 sycl::ext::oneapi::experimental::device_global<TTypeDst>& viewDst,
86 TViewSrc
const& viewSrc,
90 auto size =
static_cast<std::size_t
>(
getHeight(extent)) *
static_cast<std::size_t
>(
getDepth(extent))
91 *
static_cast<std::size_t
>(
getWidth(extent)) *
sizeof(
Elem);
92 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 >