Skip to content

Commit 2da97a5

Browse files
[ABI-Break][SYCL] Switch to new nd_item impl by default (#13197)
1 parent 220a130 commit 2da97a5

File tree

3 files changed

+7
-358
lines changed

3 files changed

+7
-358
lines changed

sycl/include/sycl/nd_item.hpp

Lines changed: 0 additions & 211 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ namespace ext::oneapi::experimental {
4141
template <int Dimensions> class root_group;
4242
}
4343

44-
#if __INTEL_PREVIEW_BREAKING_CHANGES
4544
/// Identifies an instance of the function object executing at each point in an
4645
/// nd_range.
4746
///
@@ -536,216 +535,6 @@ template <int Dimensions = 1> class nd_item {
536535
#endif
537536
}
538537
};
539-
#else
540-
/// Identifies an instance of the function object executing at each point in an
541-
/// nd_range.
542-
///
543-
/// \ingroup sycl_api
544-
template <int Dimensions = 1> class nd_item {
545-
public:
546-
static constexpr int dimensions = Dimensions;
547-
548-
nd_item() = delete;
549-
550-
id<Dimensions> get_global_id() const { return globalItem.get_id(); }
551-
552-
size_t __SYCL_ALWAYS_INLINE get_global_id(int Dimension) const {
553-
size_t Id = globalItem.get_id(Dimension);
554-
__SYCL_ASSUME_INT(Id);
555-
return Id;
556-
}
557-
558-
size_t __SYCL_ALWAYS_INLINE get_global_linear_id() const {
559-
size_t Id = globalItem.get_linear_id();
560-
__SYCL_ASSUME_INT(Id);
561-
return Id;
562-
}
563-
564-
id<Dimensions> get_local_id() const { return localItem.get_id(); }
565-
566-
size_t __SYCL_ALWAYS_INLINE get_local_id(int Dimension) const {
567-
size_t Id = localItem.get_id(Dimension);
568-
__SYCL_ASSUME_INT(Id);
569-
return Id;
570-
}
571-
572-
size_t get_local_linear_id() const {
573-
size_t Id = localItem.get_linear_id();
574-
__SYCL_ASSUME_INT(Id);
575-
return Id;
576-
}
577-
578-
group<Dimensions> get_group() const { return Group; }
579-
580-
sub_group get_sub_group() const { return sub_group(); }
581-
582-
size_t __SYCL_ALWAYS_INLINE get_group(int Dimension) const {
583-
size_t Id = Group[Dimension];
584-
__SYCL_ASSUME_INT(Id);
585-
return Id;
586-
}
587-
588-
size_t __SYCL_ALWAYS_INLINE get_group_linear_id() const {
589-
size_t Id = Group.get_linear_id();
590-
__SYCL_ASSUME_INT(Id);
591-
return Id;
592-
}
593-
594-
range<Dimensions> get_group_range() const { return Group.get_group_range(); }
595-
596-
size_t __SYCL_ALWAYS_INLINE get_group_range(int Dimension) const {
597-
size_t Range = Group.get_group_range(Dimension);
598-
__SYCL_ASSUME_INT(Range);
599-
return Range;
600-
}
601-
602-
range<Dimensions> get_global_range() const { return globalItem.get_range(); }
603-
604-
size_t get_global_range(int Dimension) const {
605-
return globalItem.get_range(Dimension);
606-
}
607-
608-
range<Dimensions> get_local_range() const { return localItem.get_range(); }
609-
610-
size_t get_local_range(int Dimension) const {
611-
return localItem.get_range(Dimension);
612-
}
613-
614-
__SYCL2020_DEPRECATED("offsets are deprecated in SYCL 2020")
615-
id<Dimensions> get_offset() const { return globalItem.get_offset(); }
616-
617-
nd_range<Dimensions> get_nd_range() const {
618-
return nd_range<Dimensions>(get_global_range(), get_local_range(),
619-
get_offset());
620-
}
621-
622-
void barrier(access::fence_space accessSpace =
623-
access::fence_space::global_and_local) const {
624-
uint32_t flags = detail::getSPIRVMemorySemanticsMask(accessSpace);
625-
__spirv_ControlBarrier(__spv::Scope::Workgroup, __spv::Scope::Workgroup,
626-
flags);
627-
}
628-
629-
/// Executes a work-group mem-fence with memory ordering on the local address
630-
/// space, global address space or both based on the value of \p accessSpace.
631-
template <access::mode accessMode = access::mode::read_write>
632-
__SYCL2020_DEPRECATED("use sycl::atomic_fence() free function instead")
633-
void mem_fence(
634-
typename std::enable_if_t<accessMode == access::mode::read ||
635-
accessMode == access::mode::write ||
636-
accessMode == access::mode::read_write,
637-
access::fence_space>
638-
accessSpace = access::fence_space::global_and_local) const {
639-
(void)accessSpace;
640-
Group.mem_fence();
641-
}
642-
643-
template <typename dataT>
644-
__SYCL2020_DEPRECATED("Use decorated multi_ptr arguments instead")
645-
device_event
646-
async_work_group_copy(local_ptr<dataT> dest, global_ptr<dataT> src,
647-
size_t numElements) const {
648-
return Group.async_work_group_copy(dest, src, numElements);
649-
}
650-
651-
template <typename dataT>
652-
__SYCL2020_DEPRECATED("Use decorated multi_ptr arguments instead")
653-
device_event
654-
async_work_group_copy(global_ptr<dataT> dest, local_ptr<dataT> src,
655-
size_t numElements) const {
656-
return Group.async_work_group_copy(dest, src, numElements);
657-
}
658-
659-
template <typename dataT>
660-
__SYCL2020_DEPRECATED("Use decorated multi_ptr arguments instead")
661-
device_event
662-
async_work_group_copy(local_ptr<dataT> dest, global_ptr<dataT> src,
663-
size_t numElements, size_t srcStride) const {
664-
665-
return Group.async_work_group_copy(dest, src, numElements, srcStride);
666-
}
667-
668-
template <typename dataT>
669-
__SYCL2020_DEPRECATED("Use decorated multi_ptr arguments instead")
670-
device_event
671-
async_work_group_copy(global_ptr<dataT> dest, local_ptr<dataT> src,
672-
size_t numElements, size_t destStride) const {
673-
return Group.async_work_group_copy(dest, src, numElements, destStride);
674-
}
675-
676-
template <typename DestDataT, typename SrcDataT>
677-
typename std::enable_if_t<
678-
std::is_same_v<DestDataT, std::remove_const_t<SrcDataT>>, device_event>
679-
async_work_group_copy(decorated_local_ptr<DestDataT> dest,
680-
decorated_global_ptr<SrcDataT> src,
681-
size_t numElements) const {
682-
return Group.async_work_group_copy(dest, src, numElements);
683-
}
684-
685-
template <typename DestDataT, typename SrcDataT>
686-
typename std::enable_if_t<
687-
std::is_same_v<DestDataT, std::remove_const_t<SrcDataT>>, device_event>
688-
async_work_group_copy(decorated_global_ptr<DestDataT> dest,
689-
decorated_local_ptr<SrcDataT> src,
690-
size_t numElements) const {
691-
return Group.async_work_group_copy(dest, src, numElements);
692-
}
693-
694-
template <typename DestDataT, typename SrcDataT>
695-
typename std::enable_if_t<
696-
std::is_same_v<DestDataT, std::remove_const_t<SrcDataT>>, device_event>
697-
async_work_group_copy(decorated_local_ptr<DestDataT> dest,
698-
decorated_global_ptr<SrcDataT> src, size_t numElements,
699-
size_t srcStride) const {
700-
701-
return Group.async_work_group_copy(dest, src, numElements, srcStride);
702-
}
703-
704-
template <typename DestDataT, typename SrcDataT>
705-
typename std::enable_if_t<
706-
std::is_same_v<DestDataT, std::remove_const_t<SrcDataT>>, device_event>
707-
async_work_group_copy(decorated_global_ptr<DestDataT> dest,
708-
decorated_local_ptr<SrcDataT> src, size_t numElements,
709-
size_t destStride) const {
710-
return Group.async_work_group_copy(dest, src, numElements, destStride);
711-
}
712-
713-
template <typename... eventTN> void wait_for(eventTN... events) const {
714-
Group.wait_for(events...);
715-
}
716-
717-
sycl::ext::oneapi::experimental::root_group<Dimensions>
718-
ext_oneapi_get_root_group() const {
719-
return sycl::ext::oneapi::experimental::root_group<Dimensions>{*this};
720-
}
721-
722-
nd_item(const nd_item &rhs) = default;
723-
724-
nd_item(nd_item &&rhs) = default;
725-
726-
nd_item &operator=(const nd_item &rhs) = default;
727-
728-
nd_item &operator=(nd_item &&rhs) = default;
729-
730-
bool operator==(const nd_item &rhs) const {
731-
return (rhs.localItem == this->localItem) &&
732-
(rhs.globalItem == this->globalItem) && (rhs.Group == this->Group);
733-
}
734-
735-
bool operator!=(const nd_item &rhs) const { return !((*this) == rhs); }
736-
737-
protected:
738-
friend class detail::Builder;
739-
nd_item(const item<Dimensions, true> &GL, const item<Dimensions, false> &L,
740-
const group<Dimensions> &GR)
741-
: globalItem(GL), localItem(L), Group(GR) {}
742-
743-
private:
744-
item<Dimensions, true> globalItem;
745-
item<Dimensions, false> localItem;
746-
group<Dimensions> Group;
747-
};
748-
#endif
749538

750539
template <int Dims>
751540
__SYCL_DEPRECATED("use sycl::ext::oneapi::experimental::this_nd_item() instead")

sycl/test/abi/layout_array.cpp

Lines changed: 7 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ SYCL_EXTERNAL void range(sycl::range<2>) {}
2929

3030
//----------------------------
3131

32+
SYCL_EXTERNAL void nd_item(sycl::nd_item<2>) {}
33+
// CHECK: 0 | class sycl::nd_item<> (empty)
34+
// CHECK-NEXT: | [sizeof=1, dsize=0, align=1,
35+
// CHECK-NEXT: | nvsize=0, nvalign=1]
36+
37+
//----------------------------
38+
3239
SYCL_EXTERNAL void item(sycl::item<2>) {}
3340

3441
// CHECK: 0 | class sycl::item<2>
@@ -47,46 +54,6 @@ SYCL_EXTERNAL void item(sycl::item<2>) {}
4754

4855
//----------------------------
4956

50-
SYCL_EXTERNAL void nd_item(sycl::nd_item<2>) {}
51-
52-
// CHECK: 0 | class sycl::nd_item<2>
53-
// CHECK-NEXT: 0 | class sycl::item<2> globalItem
54-
// CHECK-NEXT: 0 | struct sycl::detail::ItemBase<2, true> MImpl
55-
// CHECK-NEXT: 0 | class sycl::range<2> MExtent
56-
// CHECK-NEXT: 0 | class sycl::detail::array<2> (base)
57-
// CHECK-NEXT: 0 | size_t[2] common_array
58-
// CHECK-NEXT: 16 | class sycl::id<2> MIndex
59-
// CHECK-NEXT: 16 | class sycl::detail::array<2> (base)
60-
// CHECK-NEXT: 16 | size_t[2] common_array
61-
// CHECK-NEXT: 32 | class sycl::id<2> MOffset
62-
// CHECK-NEXT: 32 | class sycl::detail::array<2> (base)
63-
// CHECK-NEXT: 32 | size_t[2] common_array
64-
// CHECK-NEXT: 48 | class sycl::item<2, false> localItem
65-
// CHECK-NEXT: 48 | struct sycl::detail::ItemBase<2, false> MImpl
66-
// CHECK-NEXT: 48 | class sycl::range<2> MExtent
67-
// CHECK-NEXT: 48 | class sycl::detail::array<2> (base)
68-
// CHECK-NEXT: 48 | size_t[2] common_array
69-
// CHECK-NEXT: 64 | class sycl::id<2> MIndex
70-
// CHECK-NEXT: 64 | class sycl::detail::array<2> (base)
71-
// CHECK-NEXT: 64 | size_t[2] common_array
72-
// CHECK-NEXT: 80 | class sycl::group<2> Group
73-
// CHECK-NEXT: 80 | class sycl::range<2> globalRange
74-
// CHECK-NEXT: 80 | class sycl::detail::array<2> (base)
75-
// CHECK-NEXT: 80 | size_t[2] common_array
76-
// CHECK-NEXT: 96 | class sycl::range<2> localRange
77-
// CHECK-NEXT: 96 | class sycl::detail::array<2> (base)
78-
// CHECK-NEXT: 96 | size_t[2] common_array
79-
// CHECK-NEXT: 112 | class sycl::range<2> groupRange
80-
// CHECK-NEXT: 112 | class sycl::detail::array<2> (base)
81-
// CHECK-NEXT: 112 | size_t[2] common_array
82-
// CHECK-NEXT: 128 | class sycl::id<2> index
83-
// CHECK-NEXT: 128 | class sycl::detail::array<2> (base)
84-
// CHECK-NEXT: 128 | size_t[2] common_array
85-
// CHECK-NEXT: | [sizeof=144, dsize=144, align=8,
86-
// CHECK-NEXT: | nvsize=144, nvalign=8]
87-
88-
//----------------------------
89-
9057
SYCL_EXTERNAL void nd_range(sycl::nd_range<2>) {}
9158
// CHECK: 0 | class sycl::nd_range<2>
9259
// CHECK-NEXT: 0 | class sycl::range<2> globalSize

sycl/test/basic_tests/nd_item.cpp

Lines changed: 0 additions & 107 deletions
This file was deleted.

0 commit comments

Comments
 (0)