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<TagFpgaSyclIntel, T>
38 using Type = sycl::ext::oneapi::experimental::device_global<T>;
42 struct DevGlobalTrait<TagGenericSycl, T>
45 using Type = sycl::ext::oneapi::experimental::device_global<T>;
50 template<
typename TDev,
bool TBlocking,
typename TViewDst,
typename TTypeSrc>
52 detail::QueueGenericSyclBase<TDev, TBlocking>& queue,
54 sycl::ext::oneapi::experimental::device_global<TTypeSrc>
const& viewSrc)
56 queue.getNativeHandle().memcpy(
reinterpret_cast<void*
>(
getPtrNative(viewDst)), viewSrc);
60 template<
typename TDev,
bool TBlocking,
typename TTypeDst,
typename TViewSrc>
62 detail::QueueGenericSyclBase<TDev, TBlocking>& queue,
63 sycl::ext::oneapi::experimental::device_global<TTypeDst>& viewDst,
64 TViewSrc
const& viewSrc)
66 queue.getNativeHandle().memcpy(viewDst,
reinterpret_cast<void const*
>(
getPtrNative(viewSrc)));
70 template<
typename TDev,
bool TBlocking,
typename TViewDst,
typename TTypeSrc,
typename TExtent>
72 detail::QueueGenericSyclBase<TDev, TBlocking>& queue,
74 sycl::ext::oneapi::experimental::device_global<TTypeSrc>
const& viewSrc,
78 auto size =
static_cast<std::size_t
>(
getHeight(extent)) *
static_cast<std::size_t
>(
getDepth(extent))
79 *
static_cast<std::size_t
>(
getWidth(extent)) *
sizeof(
Elem);
80 queue.getNativeHandle().memcpy(
reinterpret_cast<void*
>(
getPtrNative(viewDst)), viewSrc, size);
84 template<
typename TDev,
bool TBlocking,
typename TTypeDst,
typename TViewSrc,
typename TExtent>
86 detail::QueueGenericSyclBase<TDev, TBlocking>& queue,
87 sycl::ext::oneapi::experimental::device_global<TTypeDst>& viewDst,
88 TViewSrc
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(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 >