Skip to content

Commit 522c36a

Browse files
committed
[SYCL] Remove handler::copy() support of atomic accessors.
Accessors with atomic access mode were supported in handler::copy() by mistake in the patch (intel#1551). Signed-off-by: Vyacheslav N Klochkov <[email protected]>
1 parent 32ca1b9 commit 522c36a

File tree

1 file changed

+3
-59
lines changed

1 file changed

+3
-59
lines changed

sycl/include/CL/sycl/handler.hpp

Lines changed: 3 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
#include <CL/sycl/access/access.hpp>
1212
#include <CL/sycl/accessor.hpp>
13-
#include <CL/sycl/atomic.hpp>
1413
#include <CL/sycl/context.hpp>
1514
#include <CL/sycl/detail/cg.hpp>
1615
#include <CL/sycl/detail/cg_types.hpp>
@@ -533,7 +532,6 @@ class __SYCL_EXPORT handler {
533532
///
534533
/// \param Src is a source SYCL accessor.
535534
/// \param Dst is a destination SYCL accessor.
536-
// TODO: support atomic accessor in Src or/and Dst.
537535
template <typename TSrc, int DimSrc, access::mode ModeSrc,
538536
access::target TargetSrc, typename TDst, int DimDst,
539537
access::mode ModeDst, access::target TargetDst,
@@ -558,60 +556,6 @@ class __SYCL_EXPORT handler {
558556
return true;
559557
}
560558

561-
template <typename T, int Dim, access::mode Mode, access::target Target,
562-
access::placeholder IsPH>
563-
static detail::enable_if_t<Dim == 0 && Mode == access::mode::atomic, T>
564-
readFromFirstAccElement(accessor<T, Dim, Mode, Target, IsPH> Src) {
565-
#ifdef __ENABLE_USM_ADDR_SPACE__
566-
atomic<T, access::address_space::global_device_space> AtomicSrc = Src;
567-
#else
568-
atomic<T, access::address_space::global_space> AtomicSrc = Src;
569-
#endif // __ENABLE_USM_ADDR_SPACE__
570-
return AtomicSrc.load();
571-
}
572-
573-
template <typename T, int Dim, access::mode Mode, access::target Target,
574-
access::placeholder IsPH>
575-
static detail::enable_if_t<(Dim > 0) && Mode == access::mode::atomic, T>
576-
readFromFirstAccElement(accessor<T, Dim, Mode, Target, IsPH> Src) {
577-
id<Dim> Id = getDelinearizedIndex(Src.get_range(), 0);
578-
return Src[Id].load();
579-
}
580-
581-
template <typename T, int Dim, access::mode Mode, access::target Target,
582-
access::placeholder IsPH>
583-
static detail::enable_if_t<Mode != access::mode::atomic, T>
584-
readFromFirstAccElement(accessor<T, Dim, Mode, Target, IsPH> Src) {
585-
return *(Src.get_pointer());
586-
}
587-
588-
template <typename T, int Dim, access::mode Mode, access::target Target,
589-
access::placeholder IsPH>
590-
static detail::enable_if_t<Dim == 0 && Mode == access::mode::atomic, void>
591-
writeToFirstAccElement(accessor<T, Dim, Mode, Target, IsPH> Dst, T V) {
592-
#ifdef __ENABLE_USM_ADDR_SPACE__
593-
atomic<T, access::address_space::global_device_space> AtomicDst = Dst;
594-
#else
595-
atomic<T, access::address_space::global_space> AtomicDst = Dst;
596-
#endif // __ENABLE_USM_ADDR_SPACE__
597-
AtomicDst.store(V);
598-
}
599-
600-
template <typename T, int Dim, access::mode Mode, access::target Target,
601-
access::placeholder IsPH>
602-
static detail::enable_if_t<(Dim > 0) && Mode == access::mode::atomic, void>
603-
writeToFirstAccElement(accessor<T, Dim, Mode, Target, IsPH> Dst, T V) {
604-
id<Dim> Id = getDelinearizedIndex(Dst.get_range(), 0);
605-
Dst[Id].store(V);
606-
}
607-
608-
template <typename T, int Dim, access::mode Mode, access::target Target,
609-
access::placeholder IsPH>
610-
static detail::enable_if_t<Mode != access::mode::atomic, void>
611-
writeToFirstAccElement(accessor<T, Dim, Mode, Target, IsPH> Dst, T V) {
612-
*(Dst.get_pointer()) = V;
613-
}
614-
615559
/// Handles some special cases of the copy operation from one accessor
616560
/// to another accessor. Returns true if the copy is handled here.
617561
///
@@ -632,7 +576,7 @@ class __SYCL_EXPORT handler {
632576
single_task<class __copyAcc2Acc<TSrc, DimSrc, ModeSrc, TargetSrc,
633577
TDst, DimDst, ModeDst, TargetDst,
634578
IsPHSrc, IsPHDst>> ([=]() {
635-
writeToFirstAccElement(Dst, readFromFirstAccElement(Src));
579+
*(Dst.get_pointer()) = *(Src.get_pointer());
636580
});
637581
return true;
638582
}
@@ -670,7 +614,7 @@ class __SYCL_EXPORT handler {
670614
single_task<class __copyAcc2Ptr<TSrc, TDst, Dim, AccMode, AccTarget, IsPH>>
671615
([=]() {
672616
using TSrcNonConst = typename detail::remove_const_t<TSrc>;
673-
*(reinterpret_cast<TSrcNonConst *>(Dst)) = readFromFirstAccElement(Src);
617+
*(reinterpret_cast<TSrcNonConst *>(Dst)) = *(Src.get_pointer());
674618
});
675619
}
676620

@@ -703,7 +647,7 @@ class __SYCL_EXPORT handler {
703647
accessor<TDst, Dim, AccMode, AccTarget, IsPH> Dst) {
704648
single_task<class __copyPtr2Acc<TSrc, TDst, Dim, AccMode, AccTarget, IsPH>>
705649
([=]() {
706-
writeToFirstAccElement(Dst, *(reinterpret_cast<const TDst *>(Src)));
650+
*(Dst.get_pointer()) = *(reinterpret_cast<const TDst *>(Src));
707651
});
708652
}
709653
#endif // __SYCL_DEVICE_ONLY__

0 commit comments

Comments
 (0)