Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
1f4640d
refactor __get_sycl_range
danhoeflinger Nov 18, 2025
b7d2a04
formatting
danhoeflinger Nov 18, 2025
f65e079
fixing missed iterator arg
danhoeflinger Nov 18, 2025
e29dc4f
fixing a couple missing changes
danhoeflinger Nov 18, 2025
a06c51a
Fixing issue in esimd_radix_sort
danhoeflinger Nov 19, 2025
e1daeb5
access mode optim for binary search, unique, fill, generate
danhoeflinger Dec 17, 2025
86f572a
simplify to only supported modes
danhoeflinger Dec 17, 2025
539e3c6
formatting
danhoeflinger Dec 17, 2025
a91f428
reverting bad change
danhoeflinger Dec 18, 2025
fc1f499
recursing with local no_init
danhoeflinger Dec 18, 2025
7ec7835
formatting
danhoeflinger Dec 18, 2025
0759126
address async pattern walk
danhoeflinger Dec 19, 2025
f7e9e92
add implementation details test
danhoeflinger Dec 29, 2025
e8ad39d
clang format
danhoeflinger Dec 29, 2025
552bdc5
reverting formatting only change
danhoeflinger Jan 2, 2026
7487619
dont use no_init with copy_if
danhoeflinger Jan 2, 2026
b4b4466
static assertion for read mode with no_init
danhoeflinger Jan 2, 2026
981d7d7
remove no_init for algs writing to part of output
danhoeflinger Jan 5, 2026
1aecb39
unify dpcpp and host tests
danhoeflinger Jan 5, 2026
c81e1cd
revert access mode changes for fill/generate
danhoeflinger Jan 8, 2026
5919df6
revert access mode changes for binarch search family
danhoeflinger Jan 8, 2026
cf43a29
revert access mode changes for transform_if
danhoeflinger Jan 8, 2026
a06c52e
revert access mode changes for histogram
danhoeflinger Jan 8, 2026
72fc768
revert access mode changes for copy_if family (and test changes)
danhoeflinger Jan 8, 2026
6779397
reverting unique copyback output access mode changes
danhoeflinger Jan 9, 2026
9a302a9
fix transform if output no_init
danhoeflinger Jan 9, 2026
42c08df
clang formatting
danhoeflinger Jan 9, 2026
a38456d
revert formatting only change
danhoeflinger Jan 9, 2026
6791feb
pattern_walk3_async template ordering
danhoeflinger Jan 13, 2026
d7b9528
require explicit accessmodes for walk patterns from hetero backend
danhoeflinger Jan 14, 2026
a562f1f
formatting
danhoeflinger Jan 14, 2026
0d65b10
Renaming NoInit
danhoeflinger Jan 14, 2026
83ebc10
::std->std
danhoeflinger Jan 14, 2026
3abe95d
bugfix
danhoeflinger Jan 14, 2026
b641c9c
formatting
danhoeflinger Jan 14, 2026
71de59b
formatting
danhoeflinger Jan 14, 2026
bb3533a
adding overflow detection in tests
danhoeflinger Jan 16, 2026
747c1a5
formatting
danhoeflinger Jan 16, 2026
c54f9a6
fix ::std -> std
danhoeflinger Feb 18, 2026
c817512
fix missing typename
danhoeflinger Feb 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions include/oneapi/dpl/experimental/kt/esimd_radix_sort.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ radix_sort(sycl::queue __q, _KeysIterator __keys_first, _KeysIterator __keys_las
if (__keys_last - __keys_first < 2)
return {};

auto __keys_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write, _KeysIterator>();
auto __keys_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write>();
auto __keys_rng = __keys_keep(__keys_first, __keys_last).all_view();
auto __pack = __impl::__rng_pack{::std::move(__keys_rng)};
return __impl::__radix_sort<__is_ascending, __radix_bits, /*__in_place=*/true>(__q, __pack, __pack, __param);
Expand Down Expand Up @@ -77,10 +77,10 @@ radix_sort_by_key(sycl::queue __q, _KeysIterator __keys_first, _KeysIterator __k
if (__keys_last - __keys_first < 2)
return {};

auto __keys_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write, _KeysIterator>();
auto __keys_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write>();
auto __keys_rng = __keys_keep(__keys_first, __keys_last).all_view();

auto __vals_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write, _ValsIterator>();
auto __vals_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write>();
auto __vals_rng = __vals_keep(__vals_first, __vals_first + (__keys_last - __keys_first)).all_view();
auto __pack = __impl::__rng_pack{::std::move(__keys_rng), ::std::move(__vals_rng)};
return __impl::__radix_sort<__is_ascending, __radix_bits, /*__in_place=*/true>(__q, __pack, __pack, __param);
Expand Down Expand Up @@ -113,10 +113,10 @@ radix_sort(sycl::queue __q, _KeysIterator1 __keys_first, _KeysIterator1 __keys_l
if (__n == 0)
return {};

auto __keys_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write, _KeysIterator1>();
auto __keys_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write>();
auto __keys_rng = __keys_keep(__keys_first, __keys_last).all_view();
auto __pack = __impl::__rng_pack{::std::move(__keys_rng)};
auto __keys_out_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write, _KeysIterator2>();
auto __keys_out_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write>();
auto __keys_out_rng = __keys_out_keep(__keys_out_first, __keys_out_first + __n).all_view();
auto __pack_out = __impl::__rng_pack{::std::move(__keys_out_rng)};
return __impl::__radix_sort<__is_ascending, __radix_bits, /*__in_place=*/false>(__q, ::std::move(__pack),
Expand Down Expand Up @@ -153,17 +153,17 @@ radix_sort_by_key(sycl::queue __q, _KeysIterator1 __keys_first, _KeysIterator1 _
if (__n == 0)
return {};

auto __keys_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write, _KeysIterator1>();
auto __keys_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write>();
auto __keys_rng = __keys_keep(__keys_first, __keys_last).all_view();

auto __vals_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write, _ValsIterator1>();
auto __vals_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write>();
auto __vals_rng = __vals_keep(__vals_first, __vals_first + __n).all_view();
auto __pack = __impl::__rng_pack{::std::move(__keys_rng), ::std::move(__vals_rng)};

auto __keys_out_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write, _KeysIterator2>();
auto __keys_out_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write>();
auto __keys_out_rng = __keys_out_keep(__keys_out_first, __keys_out_first + __n).all_view();

auto __vals_out_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write, _ValsIterator2>();
auto __vals_out_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write>();
auto __vals_out_rng = __vals_out_keep(__vals_out_first, __vals_out_first + __n).all_view();
auto __pack_out = __impl::__rng_pack{::std::move(__keys_out_rng), ::std::move(__vals_out_rng)};
return __impl::__radix_sort<__is_ascending, __radix_bits, /*__in_place=*/false>(__q, ::std::move(__pack),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,12 +328,12 @@ __onesweep(sycl::queue __q, _RngPack1&& __pack, _RngPack2&& __pack_out, ::std::s
__mem_holder.__allocate();

auto __get_tmp_pack = [&]() {
auto __keys_tmp_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write, _KeyT*>();
auto __keys_tmp_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write>();
auto __keys_tmp_rng = __keys_tmp_keep(__mem_holder.__keys_ptr(), __mem_holder.__keys_ptr() + __n).all_view();

if constexpr (__has_values)
{
auto __vals_tmp_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write, _ValT*>();
auto __vals_tmp_keep = oneapi::dpl::__ranges::__get_sycl_range<sycl::access_mode::read_write>();
auto __vals_tmp_rng =
__vals_tmp_keep(__mem_holder.__vals_ptr(), __mem_holder.__vals_ptr() + __n).all_view();
return __rng_pack(::std::move(__keys_tmp_rng), ::std::move(__vals_tmp_rng));
Expand Down
5 changes: 3 additions & 2 deletions include/oneapi/dpl/experimental/kt/single_pass_scan.h
Original file line number Diff line number Diff line change
Expand Up @@ -326,9 +326,10 @@ inclusive_scan(sycl::queue __queue, _InIterator __in_begin, _InIterator __in_end
{
auto __n = __in_end - __in_begin;

auto __keep1 = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read, _InIterator>();
auto __keep1 = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read>();
auto __buf1 = __keep1(__in_begin, __in_end);
auto __keep2 = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::write, _OutIterator>();
auto __keep2 = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::write,
/*_IsNoInitRequested=*/true>();
auto __buf2 = __keep2(__out_begin, __out_begin + __n);

return __impl::__single_pass_scan<true>(__queue, __buf1.all_view(), __buf2.all_view(), __binary_op, __param);
Expand Down
47 changes: 21 additions & 26 deletions include/oneapi/dpl/internal/async_impl/async_impl_hetero.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,16 @@ namespace dpl
namespace __internal
{

template <typename _BackendTag, typename _ExecutionPolicy, typename _ForwardIterator, typename _Function>
template <__par_backend_hetero::access_mode __acc_mode, bool _IsNoInitRequested, typename _BackendTag,
typename _ExecutionPolicy, typename _ForwardIterator, typename _Function>
auto
__pattern_walk1_async(__hetero_tag<_BackendTag>, _ExecutionPolicy&& __exec, _ForwardIterator __first,
_ForwardIterator __last, _Function __f)
{
auto __n = __last - __first;
assert(__n > 0);

auto __keep =
oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read_write, _ForwardIterator>();
auto __keep = oneapi::dpl::__ranges::__get_sycl_range<__acc_mode, _IsNoInitRequested>();
auto __buf = __keep(__first, __last);

auto __future_obj = oneapi::dpl::__par_backend_hetero::__parallel_for(
Expand All @@ -48,21 +48,19 @@ __pattern_walk1_async(__hetero_tag<_BackendTag>, _ExecutionPolicy&& __exec, _For
return __future_obj;
}

template <__par_backend_hetero::access_mode __acc_mode1 = __par_backend_hetero::access_mode::read,
__par_backend_hetero::access_mode __acc_mode2 = __par_backend_hetero::access_mode::write,
typename _BackendTag, typename _ExecutionPolicy, typename _ForwardIterator1, typename _ForwardIterator2,
typename _Function>
template <__par_backend_hetero::access_mode __out_acc_mode, bool _IsOutNoInitRequested, typename _BackendTag,
typename _ExecutionPolicy, typename _ForwardIterator1, typename _ForwardIterator2, typename _Function>
auto
__pattern_walk2_async(__hetero_tag<_BackendTag>, _ExecutionPolicy&& __exec, _ForwardIterator1 __first1,
_ForwardIterator1 __last1, _ForwardIterator2 __first2, _Function __f)
{
auto __n = __last1 - __first1;
assert(__n > 0);

auto __keep1 = oneapi::dpl::__ranges::__get_sycl_range<__acc_mode1, _ForwardIterator1>();
auto __keep1 = oneapi::dpl::__ranges::__get_sycl_range<sycl::access::mode::read>();
auto __buf1 = __keep1(__first1, __last1);

auto __keep2 = oneapi::dpl::__ranges::__get_sycl_range<__acc_mode2, _ForwardIterator2>();
auto __keep2 = oneapi::dpl::__ranges::__get_sycl_range<__out_acc_mode, _IsOutNoInitRequested>();
auto __buf2 = __keep2(__first2, __first2 + __n);

auto __future = oneapi::dpl::__par_backend_hetero::__parallel_for(
Expand All @@ -73,23 +71,21 @@ __pattern_walk2_async(__hetero_tag<_BackendTag>, _ExecutionPolicy&& __exec, _For
return __future.__make_future(__first2 + __n);
}

template <typename _BackendTag, typename _ExecutionPolicy, typename _ForwardIterator1, typename _ForwardIterator2,
typename _ForwardIterator3, typename _Function>
template <__par_backend_hetero::access_mode __output_acc_mode, bool _IsOutNoInitRequested, typename _BackendTag,
typename _ExecutionPolicy, typename _ForwardIterator1, typename _ForwardIterator2, typename _ForwardIterator3,
typename _Function>
auto
__pattern_walk3_async(__hetero_tag<_BackendTag>, _ExecutionPolicy&& __exec, _ForwardIterator1 __first1,
_ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator3 __first3, _Function __f)
{
auto __n = __last1 - __first1;
assert(__n > 0);

auto __keep1 =
oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read, _ForwardIterator1>();
auto __keep1 = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read>();
auto __buf1 = __keep1(__first1, __last1);
auto __keep2 =
oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read, _ForwardIterator2>();
auto __keep2 = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read>();
auto __buf2 = __keep2(__first2, __first2 + __n);
auto __keep3 =
oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::write, _ForwardIterator3>();
auto __keep3 = oneapi::dpl::__ranges::__get_sycl_range<__output_acc_mode, _IsOutNoInitRequested>();
auto __buf3 = __keep3(__first3, __first3 + __n);

auto __future = oneapi::dpl::__par_backend_hetero::__parallel_for(
Expand All @@ -106,7 +102,7 @@ auto
__pattern_walk2_brick_async(__hetero_tag<_BackendTag> __tag, _ExecutionPolicy&& __exec, _ForwardIterator1 __first1,
_ForwardIterator1 __last1, _ForwardIterator2 __first2, _Brick __brick)
{
return __pattern_walk2_async(
return __pattern_walk2_async<__par_backend_hetero::access_mode::write, /*_IsNoInitRequested=*/true>(
__tag,
__par_backend_hetero::make_wrapped_policy<__walk2_brick_wrapper>(::std::forward<_ExecutionPolicy>(__exec)),
__first1, __last1, __first2, __brick);
Expand All @@ -129,11 +125,9 @@ __pattern_transform_reduce_async(__hetero_tag<_BackendTag>, _ExecutionPolicy&& _
using _RepackedTp = __par_backend_hetero::__repacked_tuple_t<_Tp>;

auto __n = __last1 - __first1;
auto __keep1 =
oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read, _RandomAccessIterator1>();
auto __keep1 = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read>();
auto __buf1 = __keep1(__first1, __last1);
auto __keep2 =
oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read, _RandomAccessIterator2>();
auto __keep2 = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read>();
auto __buf2 = __keep2(__first2, __first2 + __n);

return oneapi::dpl::__par_backend_hetero::__parallel_transform_reduce<_RepackedTp,
Expand All @@ -159,7 +153,7 @@ __pattern_transform_reduce_async(__hetero_tag<_BackendTag>, _ExecutionPolicy&& _
using _Functor = unseq_backend::walk_n<_UnaryOperation>;
using _RepackedTp = __par_backend_hetero::__repacked_tuple_t<_Tp>;

auto __keep = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read, _ForwardIterator>();
auto __keep = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read>();
auto __buf = __keep(__first, __last);

return oneapi::dpl::__par_backend_hetero::__parallel_transform_reduce<_RepackedTp,
Expand All @@ -174,7 +168,7 @@ auto
__pattern_fill_async(__hetero_tag<_BackendTag> __tag, _ExecutionPolicy&& __exec, _ForwardIterator __first,
_ForwardIterator __last, const _T& __value)
{
return __pattern_walk1_async(
return __pattern_walk1_async<__par_backend_hetero::access_mode::read_write, /*_IsNoInitRequested=*/false>(
__tag, ::std::forward<_ExecutionPolicy>(__exec),
__par_backend_hetero::make_iter_mode<__par_backend_hetero::access_mode::write>(__first),
__par_backend_hetero::make_iter_mode<__par_backend_hetero::access_mode::write>(__last),
Expand All @@ -195,9 +189,10 @@ __pattern_transform_scan_base_async(__hetero_tag<_BackendTag>, _ExecutionPolicy&
assert(__first < __last);

auto __n = __last - __first;
auto __keep1 = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read, _Iterator1>();
auto __keep1 = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read>();
auto __buf1 = __keep1(__first, __last);
auto __keep2 = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::write, _Iterator2>();
auto __keep2 = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::write,
/*_IsNoInitRequested=*/true>();
auto __buf2 = __keep2(__result, __result + __n);

auto __res = oneapi::dpl::__par_backend_hetero::__parallel_transform_scan(
Expand Down
11 changes: 7 additions & 4 deletions include/oneapi/dpl/internal/async_impl/glue_async_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ transform_async(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIt
const auto __dispatch_tag = oneapi::dpl::__internal::__select_backend(__exec, __first, __result);

wait_for_all(::std::forward<_Events>(__dependencies)...);
auto ret_val = oneapi::dpl::__internal::__pattern_walk2_async(
auto ret_val = oneapi::dpl::__internal::__pattern_walk2_async<__par_backend_hetero::access_mode::write,
/*_IsNoInitRequested=*/true>(
__dispatch_tag, ::std::forward<_ExecutionPolicy>(__exec), __first, __last, __result,
oneapi::dpl::__internal::__transform_functor<_UnaryOperation>{::std::move(__op)});
return ret_val;
Expand All @@ -65,7 +66,8 @@ transform_async(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardI
const auto __dispatch_tag = oneapi::dpl::__internal::__select_backend(__exec, __first1, __first2, __result);

wait_for_all(::std::forward<_Events>(__dependencies)...);
auto ret_val = oneapi::dpl::__internal::__pattern_walk3_async(
auto ret_val = oneapi::dpl::__internal::__pattern_walk3_async<__par_backend_hetero::access_mode::write,
/*_IsNoInitRequested=*/true>(
__dispatch_tag, ::std::forward<_ExecutionPolicy>(__exec), __first1, __last1, __first2, __result,
oneapi::dpl::__internal::__transform_functor<_BinaryOperation>(::std::move(__op)));
return ret_val;
Expand Down Expand Up @@ -97,7 +99,7 @@ sort_async(_ExecutionPolicy&& __exec, _Iterator __first, _Iterator __last, _Comp
wait_for_all(::std::forward<_Events>(__dependencies)...);
assert(__last - __first >= 2);

auto __keep = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read_write, _Iterator>();
auto __keep = oneapi::dpl::__ranges::__get_sycl_range<__par_backend_hetero::access_mode::read_write>();
auto __buf = __keep(__first, __last);

const auto __dispatch_tag = oneapi::dpl::__internal::__select_backend(__exec, __first);
Expand Down Expand Up @@ -128,7 +130,8 @@ for_each_async(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIter
const auto __dispatch_tag = oneapi::dpl::__internal::__select_backend(__exec, __first);

wait_for_all(::std::forward<_Events>(__dependencies)...);
auto ret_val = oneapi::dpl::__internal::__pattern_walk1_async(
auto ret_val = oneapi::dpl::__internal::__pattern_walk1_async<__par_backend_hetero::access_mode::read_write,
/*_IsNoInitRequested=*/false>(
__dispatch_tag, ::std::forward<_ExecutionPolicy>(__exec), __first, __last, __f);
return ret_val;
}
Expand Down
18 changes: 9 additions & 9 deletions include/oneapi/dpl/internal/binary_search_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -194,13 +194,13 @@ lower_bound_impl(__internal::__hetero_tag<_BackendTag>, Policy&& policy, InputIt

const auto value_size = std::distance(value_start, value_end);

auto keep_input = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read, InputIterator1>();
auto keep_input = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read>();
auto input_buf = keep_input(start, end);

auto keep_values = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read, InputIterator2>();
auto keep_values = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read>();
auto value_buf = keep_values(value_start, value_end);

auto keep_result = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read_write, OutputIterator>();
auto keep_result = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read_write>();
auto result_buf = keep_result(result, result + value_size);
auto zip_vw = make_zip_view(input_buf.all_view(), value_buf.all_view(), result_buf.all_view());
const bool use_32bit_indexing = size <= std::numeric_limits<std::uint32_t>::max();
Expand All @@ -226,13 +226,13 @@ upper_bound_impl(__internal::__hetero_tag<_BackendTag>, Policy&& policy, InputIt

const auto value_size = std::distance(value_start, value_end);

auto keep_input = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read, InputIterator1>();
auto keep_input = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read>();
auto input_buf = keep_input(start, end);

auto keep_values = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read, InputIterator2>();
auto keep_values = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read>();
auto value_buf = keep_values(value_start, value_end);

auto keep_result = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read_write, OutputIterator>();
auto keep_result = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read_write>();
auto result_buf = keep_result(result, result + value_size);
auto zip_vw = make_zip_view(input_buf.all_view(), value_buf.all_view(), result_buf.all_view());
const bool use_32bit_indexing = size <= std::numeric_limits<std::uint32_t>::max();
Expand All @@ -258,13 +258,13 @@ binary_search_impl(__internal::__hetero_tag<_BackendTag>, Policy&& policy, Input

const auto value_size = std::distance(value_start, value_end);

auto keep_input = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read, InputIterator1>();
auto keep_input = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read>();
auto input_buf = keep_input(start, end);

auto keep_values = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read, InputIterator2>();
auto keep_values = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read>();
auto value_buf = keep_values(value_start, value_end);

auto keep_result = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read_write, OutputIterator>();
auto keep_result = oneapi::dpl::__ranges::__get_sycl_range<__bknd::access_mode::read_write>();
auto result_buf = keep_result(result, result + value_size);
auto zip_vw = make_zip_view(input_buf.all_view(), value_buf.all_view(), result_buf.all_view());
const bool use_32bit_indexing = size <= std::numeric_limits<std::uint32_t>::max();
Expand Down
Loading