From 11aabfe36a2e0405b18065705cd6c53ddfdd9d9d Mon Sep 17 00:00:00 2001 From: Dmitriy Sobolev Date: Sun, 27 Jul 2025 21:58:54 +0100 Subject: [PATCH 1/3] [oneDPL] Add more in-place mutating parallel range algorithms --- .../parallel_api/parallel_range_api.rst | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst index d5a353e5d..c0ffa96a7 100644 --- a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst +++ b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst @@ -477,7 +477,7 @@ In-place Mutating Operations std::indirectly_writable, const T&> std::ranges::borrowed_iterator_t fill (ExecutionPolicy&& pol, R&& r, const T& value); - + // replace template remove_if (ExecutionPolicy&& pol, R&& r, Pred pred, Proj proj = {}); + // reverse + template + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::permutable> + std::ranges::borrowed_iterator_t + reverse (ExecutionPolicy&& pol, R&& r); + + // rotate + template + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::permutable> + std::ranges::borrowed_iterator_t + rotate (ExecutionPolicy&& pol, R&& r, std::ranges::iterator_t middle); + + // swap_ranges + template + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::ranges::sized_range && + std::indirectly_swappable, std::ranges::iterator_t> + std::ranges::swap_ranges_result, + std::ranges::borrowed_iterator_t> + swap_ranges (ExecutionPolicy&& pol, R1&& r1, R2&& r2); + + // unique + template , Proj> > + Comp = std::ranges::equal_to> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::permutable> + std::ranges::borrowed_subrange_t + unique (ExecutionPolicy&& pol, R&& r, Comp comp = {}, Proj proj = {}); + } .. _`C++ Standard`: https://isocpp.org/std/the-standard From 8dac4b573387ad43fc81c82fe357d8ad8ff3afb5 Mon Sep 17 00:00:00 2001 From: Dmitriy Sobolev Date: Sun, 27 Jul 2025 22:03:41 +0100 Subject: [PATCH 2/3] [oneDPL] Add partition --- .../oneDPL/source/parallel_api/parallel_range_api.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst index c0ffa96a7..888e97f7a 100644 --- a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst +++ b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst @@ -478,6 +478,15 @@ In-place Mutating Operations std::ranges::borrowed_iterator_t fill (ExecutionPolicy&& pol, R&& r, const T& value); + // partition + template , Proj> > Pred> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::permutable> + std::ranges::borrowed_subrange_t + partition (ExecutionPolicy&& pol, R&& r, Pred pred, Proj proj = {}); + // replace template Date: Tue, 29 Jul 2025 17:25:34 +0100 Subject: [PATCH 3/3] Exclude partition and rotate --- .../source/parallel_api/parallel_range_api.rst | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst index 888e97f7a..cab32ff69 100644 --- a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst +++ b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst @@ -478,15 +478,6 @@ In-place Mutating Operations std::ranges::borrowed_iterator_t fill (ExecutionPolicy&& pol, R&& r, const T& value); - // partition - template , Proj> > Pred> - requires oneapi::dpl::is_execution_policy_v> && - std::ranges::sized_range && std::permutable> - std::ranges::borrowed_subrange_t - partition (ExecutionPolicy&& pol, R&& r, Pred pred, Proj proj = {}); - // replace template reverse (ExecutionPolicy&& pol, R&& r); - // rotate - template - requires oneapi::dpl::is_execution_policy_v> && - std::ranges::sized_range && std::permutable> - std::ranges::borrowed_iterator_t - rotate (ExecutionPolicy&& pol, R&& r, std::ranges::iterator_t middle); - // swap_ranges template