@@ -41,7 +41,6 @@ namespace ext::oneapi::experimental {
41
41
template <int Dimensions> class root_group ;
42
42
}
43
43
44
- #if __INTEL_PREVIEW_BREAKING_CHANGES
45
44
// / Identifies an instance of the function object executing at each point in an
46
45
// / nd_range.
47
46
// /
@@ -536,216 +535,6 @@ template <int Dimensions = 1> class nd_item {
536
535
#endif
537
536
}
538
537
};
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
749
538
750
539
template <int Dims>
751
540
__SYCL_DEPRECATED (" use sycl::ext::oneapi::experimental::this_nd_item() instead" )
0 commit comments