From 9571fecee4600bfea0afa1c87bac511b7da5ba61 Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Thu, 14 Aug 2025 13:38:20 +0200 Subject: [PATCH 01/13] [SYCL] Add structure to pass references to ranges This allows to have single entry point for all dimentions and keep reference to user-provided range data, not copy them. --- .../ext/oneapi/experimental/rangesref.hpp | 56 +++++++++ sycl/include/sycl/nd_range.hpp | 6 + sycl/unittests/scheduler/CMakeLists.txt | 1 + sycl/unittests/scheduler/RangesRefUsage.cpp | 112 ++++++++++++++++++ 4 files changed, 175 insertions(+) create mode 100644 sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp create mode 100644 sycl/unittests/scheduler/RangesRefUsage.cpp diff --git a/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp b/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp new file mode 100644 index 0000000000000..fa0389dd7acfc --- /dev/null +++ b/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp @@ -0,0 +1,56 @@ +//==-------- rangesref.hpp --- SYCL iteration with reference to ranges --------==// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#pragma once + +#include + +namespace sycl { +inline namespace _V1 { +namespace ext::oneapi::experimental { + +// The structure to keep references to ranges and dimension unified for +// all dimensions. +class RangesRefT { + +public: + RangesRefT() = default; + RangesRefT(const RangesRefT &Desc) = default; + RangesRefT(RangesRefT &&Desc) = default; + + template + RangesRefT(sycl::range &GlobalSizes, sycl::range &LocalSizes) + : GlobalSize(&(GlobalSizes[0])), + LocalSize(&(LocalSizes[0])), + Dims{size_t(Dims_)} {} + + // to support usage in sycl::ext::oneapi::experimental::submit_with_event() + template + RangesRefT(sycl::nd_range &ExecutionRange) + : GlobalSize(&ExecutionRange.globalSize[0]), + LocalSize(&ExecutionRange.localSize[0]), + GlobalOffset(&ExecutionRange.offset[0]), + Dims{size_t(Dims_)} {} + + template + RangesRefT(sycl::range &Range) + : GlobalSize(&(Range[0])), + Dims{size_t(Dims_)} {} + + RangesRefT &operator=(const RangesRefT &Desc) = default; + RangesRefT &operator=(RangesRefT &&Desc) = default; + + const size_t *GlobalSize = nullptr; + const size_t *LocalSize = nullptr; + const size_t *GlobalOffset = nullptr; + const size_t Dims = 0; +}; + +} // namespace ext::oneapi::experimental +} // inline namespace _V1 +} // namespace sycl diff --git a/sycl/include/sycl/nd_range.hpp b/sycl/include/sycl/nd_range.hpp index e4ff4881be17a..71a550679a49a 100644 --- a/sycl/include/sycl/nd_range.hpp +++ b/sycl/include/sycl/nd_range.hpp @@ -15,6 +15,10 @@ namespace sycl { inline namespace _V1 { +namespace ext::oneapi::experimental { + class RangesRefT; +} + /// Defines the iteration domain of both the work-groups and the overall /// dispatch. /// @@ -65,6 +69,8 @@ template class nd_range { bool operator!=(const nd_range &rhs) const { return !(*this == rhs); } + + friend class sycl::_V1::ext::oneapi::experimental::RangesRefT; }; } // namespace _V1 diff --git a/sycl/unittests/scheduler/CMakeLists.txt b/sycl/unittests/scheduler/CMakeLists.txt index afc0e185eb7c0..bc2a2e4c2f420 100644 --- a/sycl/unittests/scheduler/CMakeLists.txt +++ b/sycl/unittests/scheduler/CMakeLists.txt @@ -22,4 +22,5 @@ add_sycl_unittest(SchedulerTests OBJECT AccessorDefaultCtor.cpp HostTaskAndBarrier.cpp BarrierDependencies.cpp + RangesRefUsage.cpp ) diff --git a/sycl/unittests/scheduler/RangesRefUsage.cpp b/sycl/unittests/scheduler/RangesRefUsage.cpp new file mode 100644 index 0000000000000..5bf1442a9c8fa --- /dev/null +++ b/sycl/unittests/scheduler/RangesRefUsage.cpp @@ -0,0 +1,112 @@ +//==---- RangesRefUsage.cpp --- Check RangesRefT --------------------------==// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#include + +#include + +TEST(RangesRefUsage, RangesRefUsage) { + sycl::ext::oneapi::experimental::RangesRefT r0; + ASSERT_EQ(r0.Dims, size_t{0}); + + { + sycl::range<1> global_range{1024}; + sycl::range<1> local_range{64}; + sycl::id<1> offset{10}; + sycl::nd_range<1> nd_range{global_range, local_range, offset}; + + { + sycl::ext::oneapi::experimental::RangesRefT r{nd_range}; + ASSERT_EQ(r.Dims, size_t{1}); + ASSERT_EQ(*r.GlobalSize, global_range[0]); + ASSERT_EQ(*r.LocalSize, local_range[0]); + ASSERT_EQ(*r.GlobalOffset, offset[0]); + } + { + sycl::ext::oneapi::experimental::RangesRefT r{global_range, local_range}; + ASSERT_EQ(r.Dims, size_t{1}); + ASSERT_EQ(*r.GlobalSize, global_range[0]); + ASSERT_EQ(*r.LocalSize, local_range[0]); + } + { + sycl::ext::oneapi::experimental::RangesRefT r{global_range}; + ASSERT_EQ(r.Dims, size_t{1}); + ASSERT_EQ(*r.GlobalSize, global_range[0]); + ASSERT_EQ(r.LocalSize, nullptr); + } + } + { + sycl::range<2> global_range{1024, 512}; + sycl::range<2> local_range{64, 32}; + sycl::id<2> offset{10, 20}; + sycl::nd_range<2> nd_range{global_range, local_range, offset}; + + { + sycl::ext::oneapi::experimental::RangesRefT r{nd_range}; + ASSERT_EQ(r.Dims, size_t{2}); + ASSERT_EQ(r.GlobalSize[0], global_range[0]); + ASSERT_EQ(r.GlobalSize[1], global_range[1]); + ASSERT_EQ(r.LocalSize[0], local_range[0]); + ASSERT_EQ(r.LocalSize[1], local_range[1]); + ASSERT_EQ(r.GlobalOffset[0], offset[0]); + ASSERT_EQ(r.GlobalOffset[1], offset[1]); + } + { + sycl::ext::oneapi::experimental::RangesRefT r{global_range, local_range}; + ASSERT_EQ(r.Dims, size_t{2}); + ASSERT_EQ(r.GlobalSize[0], global_range[0]); + ASSERT_EQ(r.GlobalSize[1], global_range[1]); + ASSERT_EQ(r.LocalSize[0], local_range[0]); + ASSERT_EQ(r.LocalSize[1], local_range[1]); + } + { + sycl::ext::oneapi::experimental::RangesRefT r{global_range}; + ASSERT_EQ(r.Dims, size_t{2}); + ASSERT_EQ(r.GlobalSize[0], global_range[0]); + ASSERT_EQ(r.GlobalSize[1], global_range[1]); + ASSERT_EQ(r.LocalSize, nullptr); + } + } + { + sycl::range<3> global_range{1024, 512, 256}; + sycl::range<3> local_range{64, 32, 16}; + sycl::id<3> offset{10, 20, 30}; + sycl::nd_range<3> nd_range{global_range, local_range, offset}; + + { + sycl::ext::oneapi::experimental::RangesRefT r{nd_range}; + ASSERT_EQ(r.Dims, size_t{3}); + ASSERT_EQ(r.GlobalSize[0], global_range[0]); + ASSERT_EQ(r.GlobalSize[1], global_range[1]); + ASSERT_EQ(r.GlobalSize[2], global_range[2]); + ASSERT_EQ(r.LocalSize[0], local_range[0]); + ASSERT_EQ(r.LocalSize[1], local_range[1]); + ASSERT_EQ(r.LocalSize[2], local_range[2]); + ASSERT_EQ(r.GlobalOffset[0], offset[0]); + ASSERT_EQ(r.GlobalOffset[1], offset[1]); + ASSERT_EQ(r.GlobalOffset[2], offset[2]); + } + { + sycl::ext::oneapi::experimental::RangesRefT r{global_range, local_range}; + ASSERT_EQ(r.Dims, size_t{3}); + ASSERT_EQ(r.GlobalSize[0], global_range[0]); + ASSERT_EQ(r.GlobalSize[1], global_range[1]); + ASSERT_EQ(r.GlobalSize[2], global_range[2]); + ASSERT_EQ(r.LocalSize[0], local_range[0]); + ASSERT_EQ(r.LocalSize[1], local_range[1]); + ASSERT_EQ(r.LocalSize[2], local_range[2]); + } + { + sycl::ext::oneapi::experimental::RangesRefT r{global_range}; + ASSERT_EQ(r.Dims, size_t{3}); + ASSERT_EQ(r.GlobalSize[0], global_range[0]); + ASSERT_EQ(r.GlobalSize[1], global_range[1]); + ASSERT_EQ(r.GlobalSize[2], global_range[2]); + ASSERT_EQ(r.LocalSize, nullptr); + } + } +} From 2521805710421b97ade5f8087cc2dfac071a0f07 Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Thu, 14 Aug 2025 13:55:09 +0200 Subject: [PATCH 02/13] Fix formatting. --- .../sycl/ext/oneapi/experimental/rangesref.hpp | 17 +++++++---------- sycl/include/sycl/nd_range.hpp | 2 +- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp b/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp index fa0389dd7acfc..d16d6a0ad71b6 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp @@ -1,4 +1,4 @@ -//==-------- rangesref.hpp --- SYCL iteration with reference to ranges --------==// +//==-------- rangesref.hpp --- SYCL iteration with reference to ranges -----==// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -25,22 +25,19 @@ class RangesRefT { template RangesRefT(sycl::range &GlobalSizes, sycl::range &LocalSizes) - : GlobalSize(&(GlobalSizes[0])), - LocalSize(&(LocalSizes[0])), - Dims{size_t(Dims_)} {} + : GlobalSize(&(GlobalSizes[0])), LocalSize(&(LocalSizes[0])), + Dims{size_t(Dims_)} {} // to support usage in sycl::ext::oneapi::experimental::submit_with_event() template RangesRefT(sycl::nd_range &ExecutionRange) : GlobalSize(&ExecutionRange.globalSize[0]), - LocalSize(&ExecutionRange.localSize[0]), - GlobalOffset(&ExecutionRange.offset[0]), - Dims{size_t(Dims_)} {} + LocalSize(&ExecutionRange.localSize[0]), + GlobalOffset(&ExecutionRange.offset[0]), Dims{size_t(Dims_)} {} template RangesRefT(sycl::range &Range) - : GlobalSize(&(Range[0])), - Dims{size_t(Dims_)} {} + : GlobalSize(&(Range[0])), Dims{size_t(Dims_)} {} RangesRefT &operator=(const RangesRefT &Desc) = default; RangesRefT &operator=(RangesRefT &&Desc) = default; @@ -52,5 +49,5 @@ class RangesRefT { }; } // namespace ext::oneapi::experimental -} // inline namespace _V1 +} // namespace _V1 } // namespace sycl diff --git a/sycl/include/sycl/nd_range.hpp b/sycl/include/sycl/nd_range.hpp index 71a550679a49a..34c81fa1620e9 100644 --- a/sycl/include/sycl/nd_range.hpp +++ b/sycl/include/sycl/nd_range.hpp @@ -16,7 +16,7 @@ namespace sycl { inline namespace _V1 { namespace ext::oneapi::experimental { - class RangesRefT; +class RangesRefT; } /// Defines the iteration domain of both the work-groups and the overall From 1a90e4822c6a84bcdf68fc1b4092cfc6df64d275 Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Thu, 14 Aug 2025 15:35:37 +0200 Subject: [PATCH 03/13] Fix const. --- sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp b/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp index d16d6a0ad71b6..65ad2b8934afa 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp @@ -45,7 +45,7 @@ class RangesRefT { const size_t *GlobalSize = nullptr; const size_t *LocalSize = nullptr; const size_t *GlobalOffset = nullptr; - const size_t Dims = 0; + size_t Dims = 0; }; } // namespace ext::oneapi::experimental From 38945f3c0434e14a736bdcc80f1bc179e61a2679 Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Mon, 18 Aug 2025 13:54:41 +0200 Subject: [PATCH 04/13] Rename RangesRefT to ranges_ref_view and move to sycl::detail namespace. --- .../ranges_ref_view.hpp} | 26 +++++++++---------- sycl/include/sycl/nd_range.hpp | 6 ++--- sycl/unittests/scheduler/CMakeLists.txt | 2 +- ...gesRefUsage.cpp => RangesRefViewUsage.cpp} | 24 ++++++++--------- 4 files changed, 29 insertions(+), 29 deletions(-) rename sycl/include/sycl/{ext/oneapi/experimental/rangesref.hpp => detail/ranges_ref_view.hpp} (61%) rename sycl/unittests/scheduler/{RangesRefUsage.cpp => RangesRefViewUsage.cpp} (80%) diff --git a/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp b/sycl/include/sycl/detail/ranges_ref_view.hpp similarity index 61% rename from sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp rename to sycl/include/sycl/detail/ranges_ref_view.hpp index 65ad2b8934afa..5f0eccbcc2fed 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/rangesref.hpp +++ b/sycl/include/sycl/detail/ranges_ref_view.hpp @@ -1,4 +1,4 @@ -//==-------- rangesref.hpp --- SYCL iteration with reference to ranges -----==// +//==---- ranges_ref_view.hpp --- SYCL iteration with reference to ranges ---==// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -12,35 +12,35 @@ namespace sycl { inline namespace _V1 { -namespace ext::oneapi::experimental { +namespace detail { -// The structure to keep references to ranges and dimension unified for +// The structure to keep dimension and references to ranges unified for // all dimensions. -class RangesRefT { +class ranges_ref_view { public: - RangesRefT() = default; - RangesRefT(const RangesRefT &Desc) = default; - RangesRefT(RangesRefT &&Desc) = default; + ranges_ref_view() = default; + ranges_ref_view(const ranges_ref_view &Desc) = default; + ranges_ref_view(ranges_ref_view &&Desc) = default; template - RangesRefT(sycl::range &GlobalSizes, sycl::range &LocalSizes) + ranges_ref_view(sycl::range &GlobalSizes, sycl::range &LocalSizes) : GlobalSize(&(GlobalSizes[0])), LocalSize(&(LocalSizes[0])), Dims{size_t(Dims_)} {} // to support usage in sycl::ext::oneapi::experimental::submit_with_event() template - RangesRefT(sycl::nd_range &ExecutionRange) + ranges_ref_view(sycl::nd_range &ExecutionRange) : GlobalSize(&ExecutionRange.globalSize[0]), LocalSize(&ExecutionRange.localSize[0]), GlobalOffset(&ExecutionRange.offset[0]), Dims{size_t(Dims_)} {} template - RangesRefT(sycl::range &Range) + ranges_ref_view(sycl::range &Range) : GlobalSize(&(Range[0])), Dims{size_t(Dims_)} {} - RangesRefT &operator=(const RangesRefT &Desc) = default; - RangesRefT &operator=(RangesRefT &&Desc) = default; + ranges_ref_view &operator=(const ranges_ref_view &Desc) = default; + ranges_ref_view &operator=(ranges_ref_view &&Desc) = default; const size_t *GlobalSize = nullptr; const size_t *LocalSize = nullptr; @@ -48,6 +48,6 @@ class RangesRefT { size_t Dims = 0; }; -} // namespace ext::oneapi::experimental +} // namespace detail } // namespace _V1 } // namespace sycl diff --git a/sycl/include/sycl/nd_range.hpp b/sycl/include/sycl/nd_range.hpp index 34c81fa1620e9..4ba352910b522 100644 --- a/sycl/include/sycl/nd_range.hpp +++ b/sycl/include/sycl/nd_range.hpp @@ -15,8 +15,8 @@ namespace sycl { inline namespace _V1 { -namespace ext::oneapi::experimental { -class RangesRefT; +namespace detail { +class ranges_ref_view; } /// Defines the iteration domain of both the work-groups and the overall @@ -70,7 +70,7 @@ template class nd_range { return !(*this == rhs); } - friend class sycl::_V1::ext::oneapi::experimental::RangesRefT; + friend class sycl::_V1::detail::ranges_ref_view; }; } // namespace _V1 diff --git a/sycl/unittests/scheduler/CMakeLists.txt b/sycl/unittests/scheduler/CMakeLists.txt index bc2a2e4c2f420..3d44f1d81a57e 100644 --- a/sycl/unittests/scheduler/CMakeLists.txt +++ b/sycl/unittests/scheduler/CMakeLists.txt @@ -22,5 +22,5 @@ add_sycl_unittest(SchedulerTests OBJECT AccessorDefaultCtor.cpp HostTaskAndBarrier.cpp BarrierDependencies.cpp - RangesRefUsage.cpp + RangesRefViewUsage.cpp ) diff --git a/sycl/unittests/scheduler/RangesRefUsage.cpp b/sycl/unittests/scheduler/RangesRefViewUsage.cpp similarity index 80% rename from sycl/unittests/scheduler/RangesRefUsage.cpp rename to sycl/unittests/scheduler/RangesRefViewUsage.cpp index 5bf1442a9c8fa..a705e0f01f4eb 100644 --- a/sycl/unittests/scheduler/RangesRefUsage.cpp +++ b/sycl/unittests/scheduler/RangesRefViewUsage.cpp @@ -1,16 +1,16 @@ -//==---- RangesRefUsage.cpp --- Check RangesRefT --------------------------==// +//==---- RangesRefViewUsage.cpp --- Check ranges_ref_view ------------------==// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -#include +#include #include TEST(RangesRefUsage, RangesRefUsage) { - sycl::ext::oneapi::experimental::RangesRefT r0; + sycl::detail::ranges_ref_view r0; ASSERT_EQ(r0.Dims, size_t{0}); { @@ -20,20 +20,20 @@ TEST(RangesRefUsage, RangesRefUsage) { sycl::nd_range<1> nd_range{global_range, local_range, offset}; { - sycl::ext::oneapi::experimental::RangesRefT r{nd_range}; + sycl::detail::ranges_ref_view r{nd_range}; ASSERT_EQ(r.Dims, size_t{1}); ASSERT_EQ(*r.GlobalSize, global_range[0]); ASSERT_EQ(*r.LocalSize, local_range[0]); ASSERT_EQ(*r.GlobalOffset, offset[0]); } { - sycl::ext::oneapi::experimental::RangesRefT r{global_range, local_range}; + sycl::detail::ranges_ref_view r{global_range, local_range}; ASSERT_EQ(r.Dims, size_t{1}); ASSERT_EQ(*r.GlobalSize, global_range[0]); ASSERT_EQ(*r.LocalSize, local_range[0]); } { - sycl::ext::oneapi::experimental::RangesRefT r{global_range}; + sycl::detail::ranges_ref_view r{global_range}; ASSERT_EQ(r.Dims, size_t{1}); ASSERT_EQ(*r.GlobalSize, global_range[0]); ASSERT_EQ(r.LocalSize, nullptr); @@ -46,7 +46,7 @@ TEST(RangesRefUsage, RangesRefUsage) { sycl::nd_range<2> nd_range{global_range, local_range, offset}; { - sycl::ext::oneapi::experimental::RangesRefT r{nd_range}; + sycl::detail::ranges_ref_view r{nd_range}; ASSERT_EQ(r.Dims, size_t{2}); ASSERT_EQ(r.GlobalSize[0], global_range[0]); ASSERT_EQ(r.GlobalSize[1], global_range[1]); @@ -56,7 +56,7 @@ TEST(RangesRefUsage, RangesRefUsage) { ASSERT_EQ(r.GlobalOffset[1], offset[1]); } { - sycl::ext::oneapi::experimental::RangesRefT r{global_range, local_range}; + sycl::detail::ranges_ref_view r{global_range, local_range}; ASSERT_EQ(r.Dims, size_t{2}); ASSERT_EQ(r.GlobalSize[0], global_range[0]); ASSERT_EQ(r.GlobalSize[1], global_range[1]); @@ -64,7 +64,7 @@ TEST(RangesRefUsage, RangesRefUsage) { ASSERT_EQ(r.LocalSize[1], local_range[1]); } { - sycl::ext::oneapi::experimental::RangesRefT r{global_range}; + sycl::detail::ranges_ref_view r{global_range}; ASSERT_EQ(r.Dims, size_t{2}); ASSERT_EQ(r.GlobalSize[0], global_range[0]); ASSERT_EQ(r.GlobalSize[1], global_range[1]); @@ -78,7 +78,7 @@ TEST(RangesRefUsage, RangesRefUsage) { sycl::nd_range<3> nd_range{global_range, local_range, offset}; { - sycl::ext::oneapi::experimental::RangesRefT r{nd_range}; + sycl::detail::ranges_ref_view r{nd_range}; ASSERT_EQ(r.Dims, size_t{3}); ASSERT_EQ(r.GlobalSize[0], global_range[0]); ASSERT_EQ(r.GlobalSize[1], global_range[1]); @@ -91,7 +91,7 @@ TEST(RangesRefUsage, RangesRefUsage) { ASSERT_EQ(r.GlobalOffset[2], offset[2]); } { - sycl::ext::oneapi::experimental::RangesRefT r{global_range, local_range}; + sycl::detail::ranges_ref_view r{global_range, local_range}; ASSERT_EQ(r.Dims, size_t{3}); ASSERT_EQ(r.GlobalSize[0], global_range[0]); ASSERT_EQ(r.GlobalSize[1], global_range[1]); @@ -101,7 +101,7 @@ TEST(RangesRefUsage, RangesRefUsage) { ASSERT_EQ(r.LocalSize[2], local_range[2]); } { - sycl::ext::oneapi::experimental::RangesRefT r{global_range}; + sycl::detail::ranges_ref_view r{global_range}; ASSERT_EQ(r.Dims, size_t{3}); ASSERT_EQ(r.GlobalSize[0], global_range[0]); ASSERT_EQ(r.GlobalSize[1], global_range[1]); From d4c267e5fa38c3e5d448413200e10d72feecfe93 Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Mon, 18 Aug 2025 14:04:41 +0200 Subject: [PATCH 05/13] Fix formatting. --- sycl/include/sycl/detail/ranges_ref_view.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sycl/include/sycl/detail/ranges_ref_view.hpp b/sycl/include/sycl/detail/ranges_ref_view.hpp index 5f0eccbcc2fed..661c62c4ac10c 100644 --- a/sycl/include/sycl/detail/ranges_ref_view.hpp +++ b/sycl/include/sycl/detail/ranges_ref_view.hpp @@ -24,7 +24,8 @@ class ranges_ref_view { ranges_ref_view(ranges_ref_view &&Desc) = default; template - ranges_ref_view(sycl::range &GlobalSizes, sycl::range &LocalSizes) + ranges_ref_view(sycl::range &GlobalSizes, + sycl::range &LocalSizes) : GlobalSize(&(GlobalSizes[0])), LocalSize(&(LocalSizes[0])), Dims{size_t(Dims_)} {} From 0d76be90a0489a758aa3be6aef43410b0c906f2a Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Tue, 19 Aug 2025 18:19:08 +0200 Subject: [PATCH 06/13] Move assignment near ctors. --- sycl/include/sycl/detail/ranges_ref_view.hpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sycl/include/sycl/detail/ranges_ref_view.hpp b/sycl/include/sycl/detail/ranges_ref_view.hpp index 661c62c4ac10c..e81a989b2ed16 100644 --- a/sycl/include/sycl/detail/ranges_ref_view.hpp +++ b/sycl/include/sycl/detail/ranges_ref_view.hpp @@ -22,6 +22,8 @@ class ranges_ref_view { ranges_ref_view() = default; ranges_ref_view(const ranges_ref_view &Desc) = default; ranges_ref_view(ranges_ref_view &&Desc) = default; + ranges_ref_view &operator=(const ranges_ref_view &Desc) = default; + ranges_ref_view &operator=(ranges_ref_view &&Desc) = default; template ranges_ref_view(sycl::range &GlobalSizes, @@ -40,9 +42,6 @@ class ranges_ref_view { ranges_ref_view(sycl::range &Range) : GlobalSize(&(Range[0])), Dims{size_t(Dims_)} {} - ranges_ref_view &operator=(const ranges_ref_view &Desc) = default; - ranges_ref_view &operator=(ranges_ref_view &&Desc) = default; - const size_t *GlobalSize = nullptr; const size_t *LocalSize = nullptr; const size_t *GlobalOffset = nullptr; From 858bf21676caf7a04aed08e849e7ae2518b949ec Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Tue, 19 Aug 2025 18:25:16 +0200 Subject: [PATCH 07/13] Decrease dumpilcation is the test. --- .../scheduler/RangesRefViewUsage.cpp | 124 +++++------------- 1 file changed, 33 insertions(+), 91 deletions(-) diff --git a/sycl/unittests/scheduler/RangesRefViewUsage.cpp b/sycl/unittests/scheduler/RangesRefViewUsage.cpp index a705e0f01f4eb..85cb4c505e1cb 100644 --- a/sycl/unittests/scheduler/RangesRefViewUsage.cpp +++ b/sycl/unittests/scheduler/RangesRefViewUsage.cpp @@ -9,104 +9,46 @@ #include -TEST(RangesRefUsage, RangesRefUsage) { - sycl::detail::ranges_ref_view r0; - ASSERT_EQ(r0.Dims, size_t{0}); - +template +void TestNDRangesRefView(sycl::range global, sycl::range local, + sycl::id offset) { { - sycl::range<1> global_range{1024}; - sycl::range<1> local_range{64}; - sycl::id<1> offset{10}; - sycl::nd_range<1> nd_range{global_range, local_range, offset}; - - { - sycl::detail::ranges_ref_view r{nd_range}; - ASSERT_EQ(r.Dims, size_t{1}); - ASSERT_EQ(*r.GlobalSize, global_range[0]); - ASSERT_EQ(*r.LocalSize, local_range[0]); - ASSERT_EQ(*r.GlobalOffset, offset[0]); - } - { - sycl::detail::ranges_ref_view r{global_range, local_range}; - ASSERT_EQ(r.Dims, size_t{1}); - ASSERT_EQ(*r.GlobalSize, global_range[0]); - ASSERT_EQ(*r.LocalSize, local_range[0]); - } - { - sycl::detail::ranges_ref_view r{global_range}; - ASSERT_EQ(r.Dims, size_t{1}); - ASSERT_EQ(*r.GlobalSize, global_range[0]); - ASSERT_EQ(r.LocalSize, nullptr); + sycl::nd_range nd_range{global, local, offset}; + sycl::detail::ranges_ref_view r{nd_range}; + ASSERT_EQ(r.Dims, size_t{dims}); + for (int d = 0; d < dims; d++) { + ASSERT_EQ(r.GlobalSize[d], global[d]); + ASSERT_EQ(r.LocalSize[d], local[d]); + ASSERT_EQ(r.GlobalOffset[d], offset[d]); } } { - sycl::range<2> global_range{1024, 512}; - sycl::range<2> local_range{64, 32}; - sycl::id<2> offset{10, 20}; - sycl::nd_range<2> nd_range{global_range, local_range, offset}; - - { - sycl::detail::ranges_ref_view r{nd_range}; - ASSERT_EQ(r.Dims, size_t{2}); - ASSERT_EQ(r.GlobalSize[0], global_range[0]); - ASSERT_EQ(r.GlobalSize[1], global_range[1]); - ASSERT_EQ(r.LocalSize[0], local_range[0]); - ASSERT_EQ(r.LocalSize[1], local_range[1]); - ASSERT_EQ(r.GlobalOffset[0], offset[0]); - ASSERT_EQ(r.GlobalOffset[1], offset[1]); - } - { - sycl::detail::ranges_ref_view r{global_range, local_range}; - ASSERT_EQ(r.Dims, size_t{2}); - ASSERT_EQ(r.GlobalSize[0], global_range[0]); - ASSERT_EQ(r.GlobalSize[1], global_range[1]); - ASSERT_EQ(r.LocalSize[0], local_range[0]); - ASSERT_EQ(r.LocalSize[1], local_range[1]); - } - { - sycl::detail::ranges_ref_view r{global_range}; - ASSERT_EQ(r.Dims, size_t{2}); - ASSERT_EQ(r.GlobalSize[0], global_range[0]); - ASSERT_EQ(r.GlobalSize[1], global_range[1]); - ASSERT_EQ(r.LocalSize, nullptr); + sycl::detail::ranges_ref_view r{global, local}; + ASSERT_EQ(r.Dims, size_t{dims}); + for (int d = 0; d < dims; d++) { + ASSERT_EQ(r.GlobalSize[d], global[d]); + ASSERT_EQ(r.LocalSize[d], local[d]); } + ASSERT_EQ(r.GlobalOffset, nullptr); } { - sycl::range<3> global_range{1024, 512, 256}; - sycl::range<3> local_range{64, 32, 16}; - sycl::id<3> offset{10, 20, 30}; - sycl::nd_range<3> nd_range{global_range, local_range, offset}; - - { - sycl::detail::ranges_ref_view r{nd_range}; - ASSERT_EQ(r.Dims, size_t{3}); - ASSERT_EQ(r.GlobalSize[0], global_range[0]); - ASSERT_EQ(r.GlobalSize[1], global_range[1]); - ASSERT_EQ(r.GlobalSize[2], global_range[2]); - ASSERT_EQ(r.LocalSize[0], local_range[0]); - ASSERT_EQ(r.LocalSize[1], local_range[1]); - ASSERT_EQ(r.LocalSize[2], local_range[2]); - ASSERT_EQ(r.GlobalOffset[0], offset[0]); - ASSERT_EQ(r.GlobalOffset[1], offset[1]); - ASSERT_EQ(r.GlobalOffset[2], offset[2]); - } - { - sycl::detail::ranges_ref_view r{global_range, local_range}; - ASSERT_EQ(r.Dims, size_t{3}); - ASSERT_EQ(r.GlobalSize[0], global_range[0]); - ASSERT_EQ(r.GlobalSize[1], global_range[1]); - ASSERT_EQ(r.GlobalSize[2], global_range[2]); - ASSERT_EQ(r.LocalSize[0], local_range[0]); - ASSERT_EQ(r.LocalSize[1], local_range[1]); - ASSERT_EQ(r.LocalSize[2], local_range[2]); - } - { - sycl::detail::ranges_ref_view r{global_range}; - ASSERT_EQ(r.Dims, size_t{3}); - ASSERT_EQ(r.GlobalSize[0], global_range[0]); - ASSERT_EQ(r.GlobalSize[1], global_range[1]); - ASSERT_EQ(r.GlobalSize[2], global_range[2]); - ASSERT_EQ(r.LocalSize, nullptr); + sycl::detail::ranges_ref_view r{global}; + ASSERT_EQ(r.Dims, size_t{dims}); + for (int d = 0; d < dims; d++) { + ASSERT_EQ(r.GlobalSize[d], global[d]); } + ASSERT_EQ(r.LocalSize, nullptr); + ASSERT_EQ(r.GlobalOffset, nullptr); } } + + +TEST(RangesRefUsage, RangesRefUsage) { + TestNDRangesRefView(sycl::range<1>{1024}, sycl::range<1>{64}, + sycl::id<1>{10}); + TestNDRangesRefView( + sycl::range<2>{1024, 512}, sycl::range<2>{64, 32}, sycl::id<2>{10, 5}); + TestNDRangesRefView( + sycl::range<3>{1024, 512, 256}, sycl::range<3>{64, 32, 16}, + sycl::id<3>{10, 5, 2}); +} From 95beb6a98c821ab47c3d6947dd7a90beeb3177d0 Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Tue, 19 Aug 2025 18:30:59 +0200 Subject: [PATCH 08/13] Fix formatting. --- sycl/unittests/scheduler/RangesRefViewUsage.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/sycl/unittests/scheduler/RangesRefViewUsage.cpp b/sycl/unittests/scheduler/RangesRefViewUsage.cpp index 85cb4c505e1cb..6f18a26915af3 100644 --- a/sycl/unittests/scheduler/RangesRefViewUsage.cpp +++ b/sycl/unittests/scheduler/RangesRefViewUsage.cpp @@ -45,10 +45,9 @@ void TestNDRangesRefView(sycl::range global, sycl::range local, TEST(RangesRefUsage, RangesRefUsage) { TestNDRangesRefView(sycl::range<1>{1024}, sycl::range<1>{64}, - sycl::id<1>{10}); - TestNDRangesRefView( - sycl::range<2>{1024, 512}, sycl::range<2>{64, 32}, sycl::id<2>{10, 5}); - TestNDRangesRefView( - sycl::range<3>{1024, 512, 256}, sycl::range<3>{64, 32, 16}, - sycl::id<3>{10, 5, 2}); + sycl::id<1>{10}); + TestNDRangesRefView(sycl::range<2>{1024, 512}, sycl::range<2>{64, 32}, + sycl::id<2>{10, 5}); + TestNDRangesRefView(sycl::range<3>{1024, 512, 256}, + sycl::range<3>{64, 32, 16}, sycl::id<3>{10, 5, 2}); } From f2e347dae4d491213115d2c6fb6d1616f6707688 Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Tue, 19 Aug 2025 18:52:29 +0200 Subject: [PATCH 09/13] Fix formatting. --- sycl/unittests/scheduler/RangesRefViewUsage.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/sycl/unittests/scheduler/RangesRefViewUsage.cpp b/sycl/unittests/scheduler/RangesRefViewUsage.cpp index 6f18a26915af3..37d82511dadff 100644 --- a/sycl/unittests/scheduler/RangesRefViewUsage.cpp +++ b/sycl/unittests/scheduler/RangesRefViewUsage.cpp @@ -42,7 +42,6 @@ void TestNDRangesRefView(sycl::range global, sycl::range local, } } - TEST(RangesRefUsage, RangesRefUsage) { TestNDRangesRefView(sycl::range<1>{1024}, sycl::range<1>{64}, sycl::id<1>{10}); From 71e2eee620f6cd446c13aa1c244de72b1cbcee46 Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Fri, 22 Aug 2025 16:51:40 +0200 Subject: [PATCH 10/13] Add export to sycl::detail::NDRDescT. --- sycl/include/sycl/detail/ranges_ref_view.hpp | 4 +++ sycl/source/detail/queue_impl.cpp | 19 ++++++++++ .../scheduler/RangesRefViewUsage.cpp | 36 +++++++++++++++++++ 3 files changed, 59 insertions(+) diff --git a/sycl/include/sycl/detail/ranges_ref_view.hpp b/sycl/include/sycl/detail/ranges_ref_view.hpp index e81a989b2ed16..5d6c5eb7a24d5 100644 --- a/sycl/include/sycl/detail/ranges_ref_view.hpp +++ b/sycl/include/sycl/detail/ranges_ref_view.hpp @@ -14,6 +14,8 @@ namespace sycl { inline namespace _V1 { namespace detail { +class NDRDescT; + // The structure to keep dimension and references to ranges unified for // all dimensions. class ranges_ref_view { @@ -42,6 +44,8 @@ class ranges_ref_view { ranges_ref_view(sycl::range &Range) : GlobalSize(&(Range[0])), Dims{size_t(Dims_)} {} + sycl::detail::NDRDescT toNDRDescT() const; + const size_t *GlobalSize = nullptr; const size_t *LocalSize = nullptr; const size_t *GlobalOffset = nullptr; diff --git a/sycl/source/detail/queue_impl.cpp b/sycl/source/detail/queue_impl.cpp index 24ed44b219e3a..696476a678c9a 100644 --- a/sycl/source/detail/queue_impl.cpp +++ b/sycl/source/detail/queue_impl.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -126,6 +127,24 @@ prepareSYCLEventAssociatedWithQueue(detail::queue_impl &QueueImpl) { return detail::createSyclObjFromImpl(EventImpl); } +sycl::detail::NDRDescT ranges_ref_view::toNDRDescT() const { + NDRDescT NDRDesc; + + NDRDesc.Dims = Dims; + for (size_t i = 0; i < Dims; ++i) { + NDRDesc.GlobalSize[i] = GlobalSize[i]; + } + if (LocalSize) + for (size_t i = 0; i < Dims; ++i) { + NDRDesc.LocalSize[i] = LocalSize[i]; + } + if (GlobalOffset) + for (size_t i = 0; i < Dims; ++i) { + NDRDesc.GlobalOffset[i] = GlobalOffset[i]; + } + return NDRDesc; +} + const std::vector & queue_impl::getExtendDependencyList(const std::vector &DepEvents, std::vector &MutableVec, diff --git a/sycl/unittests/scheduler/RangesRefViewUsage.cpp b/sycl/unittests/scheduler/RangesRefViewUsage.cpp index 37d82511dadff..152b486709ec3 100644 --- a/sycl/unittests/scheduler/RangesRefViewUsage.cpp +++ b/sycl/unittests/scheduler/RangesRefViewUsage.cpp @@ -6,6 +6,7 @@ // //===----------------------------------------------------------------------===// #include +#include #include @@ -21,6 +22,14 @@ void TestNDRangesRefView(sycl::range global, sycl::range local, ASSERT_EQ(r.LocalSize[d], local[d]); ASSERT_EQ(r.GlobalOffset[d], offset[d]); } + + sycl::detail::NDRDescT NDRDesc = r.toNDRDescT(); + ASSERT_EQ(NDRDesc.Dims, size_t{dims}); + for (int d = 0; d < dims; d++) { + ASSERT_EQ(NDRDesc.GlobalSize[d], global[d]); + ASSERT_EQ(NDRDesc.LocalSize[d], local[d]); + ASSERT_EQ(NDRDesc.GlobalOffset[d], offset[d]); + } } { sycl::detail::ranges_ref_view r{global, local}; @@ -30,6 +39,20 @@ void TestNDRangesRefView(sycl::range global, sycl::range local, ASSERT_EQ(r.LocalSize[d], local[d]); } ASSERT_EQ(r.GlobalOffset, nullptr); + + sycl::detail::NDRDescT NDRDesc = r.toNDRDescT(); + ASSERT_EQ(NDRDesc.Dims, size_t{dims}); + for (int d = 0; d < dims; d++) { + ASSERT_EQ(NDRDesc.GlobalSize[d], global[d]); + ASSERT_EQ(NDRDesc.LocalSize[d], local[d]); + } + for (int d = dims; d < 3; d++) { + ASSERT_EQ(NDRDesc.GlobalSize[d], 0UL); + ASSERT_EQ(NDRDesc.LocalSize[d], 0UL); + } + for (int d = 0; d < 3; d++) { + ASSERT_EQ(NDRDesc.GlobalOffset[d], 0UL); + } } { sycl::detail::ranges_ref_view r{global}; @@ -39,6 +62,19 @@ void TestNDRangesRefView(sycl::range global, sycl::range local, } ASSERT_EQ(r.LocalSize, nullptr); ASSERT_EQ(r.GlobalOffset, nullptr); + + sycl::detail::NDRDescT NDRDesc = r.toNDRDescT(); + ASSERT_EQ(NDRDesc.Dims, size_t{dims}); + for (int d = 0; d < dims; d++) { + ASSERT_EQ(NDRDesc.GlobalSize[d], global[d]); + } + for (int d = dims; d < 3; d++) { + ASSERT_EQ(NDRDesc.GlobalSize[d], 0UL); + } + for (int d = 0; d < 3; d++) { + ASSERT_EQ(NDRDesc.LocalSize[d], 0UL); + ASSERT_EQ(NDRDesc.GlobalOffset[d], 0UL); + } } } From 7a3f2699105352161d44f5bc11e5d322231b66c4 Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Fri, 22 Aug 2025 17:32:26 +0200 Subject: [PATCH 11/13] Fix formatting. --- sycl/unittests/scheduler/RangesRefViewUsage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/unittests/scheduler/RangesRefViewUsage.cpp b/sycl/unittests/scheduler/RangesRefViewUsage.cpp index 152b486709ec3..f28b914e16c11 100644 --- a/sycl/unittests/scheduler/RangesRefViewUsage.cpp +++ b/sycl/unittests/scheduler/RangesRefViewUsage.cpp @@ -5,8 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -#include #include +#include #include From d309440bb1cf67576aa7195548c271824b6df207 Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Wed, 27 Aug 2025 12:00:36 +0200 Subject: [PATCH 12/13] Rename sycl::detail::ranges_ref_view to nd_range_view. --- ...{ranges_ref_view.hpp => nd_range_view.hpp} | 24 +++++++++---------- sycl/include/sycl/nd_range.hpp | 4 ++-- sycl/source/detail/queue_impl.cpp | 8 +++---- sycl/unittests/scheduler/CMakeLists.txt | 2 +- ...sRefViewUsage.cpp => NdRangeViewUsage.cpp} | 24 +++++++++---------- 5 files changed, 31 insertions(+), 31 deletions(-) rename sycl/include/sycl/detail/{ranges_ref_view.hpp => nd_range_view.hpp} (64%) rename sycl/unittests/scheduler/{RangesRefViewUsage.cpp => NdRangeViewUsage.cpp} (78%) diff --git a/sycl/include/sycl/detail/ranges_ref_view.hpp b/sycl/include/sycl/detail/nd_range_view.hpp similarity index 64% rename from sycl/include/sycl/detail/ranges_ref_view.hpp rename to sycl/include/sycl/detail/nd_range_view.hpp index 5d6c5eb7a24d5..de3b52c075c38 100644 --- a/sycl/include/sycl/detail/ranges_ref_view.hpp +++ b/sycl/include/sycl/detail/nd_range_view.hpp @@ -1,4 +1,4 @@ -//==---- ranges_ref_view.hpp --- SYCL iteration with reference to ranges ---==// +//==---- nd_range_view.hpp --- SYCL iteration with reference to ranges ---==// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -18,37 +18,37 @@ class NDRDescT; // The structure to keep dimension and references to ranges unified for // all dimensions. -class ranges_ref_view { +class nd_range_view { public: - ranges_ref_view() = default; - ranges_ref_view(const ranges_ref_view &Desc) = default; - ranges_ref_view(ranges_ref_view &&Desc) = default; - ranges_ref_view &operator=(const ranges_ref_view &Desc) = default; - ranges_ref_view &operator=(ranges_ref_view &&Desc) = default; + nd_range_view() = default; + nd_range_view(const nd_range_view &Desc) = default; + nd_range_view(nd_range_view &&Desc) = default; + nd_range_view &operator=(const nd_range_view &Desc) = default; + nd_range_view &operator=(nd_range_view &&Desc) = default; template - ranges_ref_view(sycl::range &GlobalSizes, + nd_range_view(sycl::range &GlobalSizes, sycl::range &LocalSizes) : GlobalSize(&(GlobalSizes[0])), LocalSize(&(LocalSizes[0])), Dims{size_t(Dims_)} {} // to support usage in sycl::ext::oneapi::experimental::submit_with_event() template - ranges_ref_view(sycl::nd_range &ExecutionRange) + nd_range_view(sycl::nd_range &ExecutionRange) : GlobalSize(&ExecutionRange.globalSize[0]), LocalSize(&ExecutionRange.localSize[0]), - GlobalOffset(&ExecutionRange.offset[0]), Dims{size_t(Dims_)} {} + Offset(&ExecutionRange.offset[0]), Dims{size_t(Dims_)} {} template - ranges_ref_view(sycl::range &Range) + nd_range_view(sycl::range &Range) : GlobalSize(&(Range[0])), Dims{size_t(Dims_)} {} sycl::detail::NDRDescT toNDRDescT() const; const size_t *GlobalSize = nullptr; const size_t *LocalSize = nullptr; - const size_t *GlobalOffset = nullptr; + const size_t *Offset = nullptr; size_t Dims = 0; }; diff --git a/sycl/include/sycl/nd_range.hpp b/sycl/include/sycl/nd_range.hpp index 4ba352910b522..30816b8a4b354 100644 --- a/sycl/include/sycl/nd_range.hpp +++ b/sycl/include/sycl/nd_range.hpp @@ -16,7 +16,7 @@ namespace sycl { inline namespace _V1 { namespace detail { -class ranges_ref_view; +class nd_range_view; } /// Defines the iteration domain of both the work-groups and the overall @@ -70,7 +70,7 @@ template class nd_range { return !(*this == rhs); } - friend class sycl::_V1::detail::ranges_ref_view; + friend class sycl::_V1::detail::nd_range_view; }; } // namespace _V1 diff --git a/sycl/source/detail/queue_impl.cpp b/sycl/source/detail/queue_impl.cpp index 2ae4b74d0f369..50f4446c925a9 100644 --- a/sycl/source/detail/queue_impl.cpp +++ b/sycl/source/detail/queue_impl.cpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include @@ -127,7 +127,7 @@ prepareSYCLEventAssociatedWithQueue(detail::queue_impl &QueueImpl) { return detail::createSyclObjFromImpl(EventImpl); } -sycl::detail::NDRDescT ranges_ref_view::toNDRDescT() const { +sycl::detail::NDRDescT nd_range_view::toNDRDescT() const { NDRDescT NDRDesc; NDRDesc.Dims = Dims; @@ -138,9 +138,9 @@ sycl::detail::NDRDescT ranges_ref_view::toNDRDescT() const { for (size_t i = 0; i < Dims; ++i) { NDRDesc.LocalSize[i] = LocalSize[i]; } - if (GlobalOffset) + if (Offset) for (size_t i = 0; i < Dims; ++i) { - NDRDesc.GlobalOffset[i] = GlobalOffset[i]; + NDRDesc.GlobalOffset[i] = Offset[i]; } return NDRDesc; } diff --git a/sycl/unittests/scheduler/CMakeLists.txt b/sycl/unittests/scheduler/CMakeLists.txt index 3d44f1d81a57e..9041793ecdaf2 100644 --- a/sycl/unittests/scheduler/CMakeLists.txt +++ b/sycl/unittests/scheduler/CMakeLists.txt @@ -22,5 +22,5 @@ add_sycl_unittest(SchedulerTests OBJECT AccessorDefaultCtor.cpp HostTaskAndBarrier.cpp BarrierDependencies.cpp - RangesRefViewUsage.cpp + NdRangeViewUsage.cpp ) diff --git a/sycl/unittests/scheduler/RangesRefViewUsage.cpp b/sycl/unittests/scheduler/NdRangeViewUsage.cpp similarity index 78% rename from sycl/unittests/scheduler/RangesRefViewUsage.cpp rename to sycl/unittests/scheduler/NdRangeViewUsage.cpp index f28b914e16c11..229fad21d68d5 100644 --- a/sycl/unittests/scheduler/RangesRefViewUsage.cpp +++ b/sycl/unittests/scheduler/NdRangeViewUsage.cpp @@ -1,4 +1,4 @@ -//==---- RangesRefViewUsage.cpp --- Check ranges_ref_view ------------------==// +//==---- NdRangeViewUsage.cpp --- Check nd_range_view ------------------==// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -6,21 +6,21 @@ // //===----------------------------------------------------------------------===// #include -#include +#include #include template -void TestNDRangesRefView(sycl::range global, sycl::range local, +void TestNdRangeView(sycl::range global, sycl::range local, sycl::id offset) { { sycl::nd_range nd_range{global, local, offset}; - sycl::detail::ranges_ref_view r{nd_range}; + sycl::detail::nd_range_view r{nd_range}; ASSERT_EQ(r.Dims, size_t{dims}); for (int d = 0; d < dims; d++) { ASSERT_EQ(r.GlobalSize[d], global[d]); ASSERT_EQ(r.LocalSize[d], local[d]); - ASSERT_EQ(r.GlobalOffset[d], offset[d]); + ASSERT_EQ(r.Offset[d], offset[d]); } sycl::detail::NDRDescT NDRDesc = r.toNDRDescT(); @@ -32,13 +32,13 @@ void TestNDRangesRefView(sycl::range global, sycl::range local, } } { - sycl::detail::ranges_ref_view r{global, local}; + sycl::detail::nd_range_view r{global, local}; ASSERT_EQ(r.Dims, size_t{dims}); for (int d = 0; d < dims; d++) { ASSERT_EQ(r.GlobalSize[d], global[d]); ASSERT_EQ(r.LocalSize[d], local[d]); } - ASSERT_EQ(r.GlobalOffset, nullptr); + ASSERT_EQ(r.Offset, nullptr); sycl::detail::NDRDescT NDRDesc = r.toNDRDescT(); ASSERT_EQ(NDRDesc.Dims, size_t{dims}); @@ -55,13 +55,13 @@ void TestNDRangesRefView(sycl::range global, sycl::range local, } } { - sycl::detail::ranges_ref_view r{global}; + sycl::detail::nd_range_view r{global}; ASSERT_EQ(r.Dims, size_t{dims}); for (int d = 0; d < dims; d++) { ASSERT_EQ(r.GlobalSize[d], global[d]); } ASSERT_EQ(r.LocalSize, nullptr); - ASSERT_EQ(r.GlobalOffset, nullptr); + ASSERT_EQ(r.Offset, nullptr); sycl::detail::NDRDescT NDRDesc = r.toNDRDescT(); ASSERT_EQ(NDRDesc.Dims, size_t{dims}); @@ -79,10 +79,10 @@ void TestNDRangesRefView(sycl::range global, sycl::range local, } TEST(RangesRefUsage, RangesRefUsage) { - TestNDRangesRefView(sycl::range<1>{1024}, sycl::range<1>{64}, + TestNdRangeView(sycl::range<1>{1024}, sycl::range<1>{64}, sycl::id<1>{10}); - TestNDRangesRefView(sycl::range<2>{1024, 512}, sycl::range<2>{64, 32}, + TestNdRangeView(sycl::range<2>{1024, 512}, sycl::range<2>{64, 32}, sycl::id<2>{10, 5}); - TestNDRangesRefView(sycl::range<3>{1024, 512, 256}, + TestNdRangeView(sycl::range<3>{1024, 512, 256}, sycl::range<3>{64, 32, 16}, sycl::id<3>{10, 5, 2}); } From c7bc868a91ca1cb172857ff4b74910465a1311bb Mon Sep 17 00:00:00 2001 From: Alexandr Konovalov Date: Wed, 27 Aug 2025 12:10:54 +0200 Subject: [PATCH 13/13] Fix formatting. --- sycl/include/sycl/detail/nd_range_view.hpp | 3 +-- sycl/unittests/scheduler/NdRangeViewUsage.cpp | 11 +++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/sycl/include/sycl/detail/nd_range_view.hpp b/sycl/include/sycl/detail/nd_range_view.hpp index de3b52c075c38..35b5a606566a9 100644 --- a/sycl/include/sycl/detail/nd_range_view.hpp +++ b/sycl/include/sycl/detail/nd_range_view.hpp @@ -28,8 +28,7 @@ class nd_range_view { nd_range_view &operator=(nd_range_view &&Desc) = default; template - nd_range_view(sycl::range &GlobalSizes, - sycl::range &LocalSizes) + nd_range_view(sycl::range &GlobalSizes, sycl::range &LocalSizes) : GlobalSize(&(GlobalSizes[0])), LocalSize(&(LocalSizes[0])), Dims{size_t(Dims_)} {} diff --git a/sycl/unittests/scheduler/NdRangeViewUsage.cpp b/sycl/unittests/scheduler/NdRangeViewUsage.cpp index 229fad21d68d5..65bc466ab32eb 100644 --- a/sycl/unittests/scheduler/NdRangeViewUsage.cpp +++ b/sycl/unittests/scheduler/NdRangeViewUsage.cpp @@ -12,7 +12,7 @@ template void TestNdRangeView(sycl::range global, sycl::range local, - sycl::id offset) { + sycl::id offset) { { sycl::nd_range nd_range{global, local, offset}; sycl::detail::nd_range_view r{nd_range}; @@ -79,10 +79,9 @@ void TestNdRangeView(sycl::range global, sycl::range local, } TEST(RangesRefUsage, RangesRefUsage) { - TestNdRangeView(sycl::range<1>{1024}, sycl::range<1>{64}, - sycl::id<1>{10}); + TestNdRangeView(sycl::range<1>{1024}, sycl::range<1>{64}, sycl::id<1>{10}); TestNdRangeView(sycl::range<2>{1024, 512}, sycl::range<2>{64, 32}, - sycl::id<2>{10, 5}); - TestNdRangeView(sycl::range<3>{1024, 512, 256}, - sycl::range<3>{64, 32, 16}, sycl::id<3>{10, 5, 2}); + sycl::id<2>{10, 5}); + TestNdRangeView(sycl::range<3>{1024, 512, 256}, sycl::range<3>{64, 32, 16}, + sycl::id<3>{10, 5, 2}); }