23 #include "RAJA/config.hpp"
26 #include <type_traits>
36 inline namespace policy_by_value_interface
55 typename Compare = operators::less<RAJA::detail::ContainerVal<Container>>>
56 concepts::enable_if_t<resources::EventProxy<Res>,
57 type_traits::is_execution_policy<ExecPolicy>,
58 type_traits::is_resource<Res>,
59 std::is_constructible<camp::resources::Resource, Res>,
60 type_traits::is_range<Container>>
67 static_assert(type_traits::is_binary_function<Compare, bool, T, T>::value,
68 "Compare must model BinaryFunction");
69 static_assert(type_traits::is_random_access_range<Container>::value,
70 "Container must model RandomAccessRange");
72 auto begin_it = begin(c);
74 auto N = distance(begin_it, end_it);
83 return resources::EventProxy<Res>(r);
91 typename Compare = operators::less<RAJA::detail::ContainerVal<Container>>,
93 concepts::enable_if_t<
94 resources::EventProxy<Res>,
95 type_traits::is_execution_policy<ExecPolicy>,
96 type_traits::is_range<Container>,
98 std::is_constructible<camp::resources::Resource, Container>>>
101 Res r = Res::get_default();
103 std::forward<ExecPolicy>(p), r, std::forward<Container>(c), comp);
122 typename Compare = operators::less<RAJA::detail::ContainerVal<Container>>>
123 concepts::enable_if_t<resources::EventProxy<Res>,
124 type_traits::is_execution_policy<ExecPolicy>,
125 type_traits::is_resource<Res>,
126 std::is_constructible<camp::resources::Resource, Res>,
127 type_traits::is_range<Container>>
134 static_assert(type_traits::is_binary_function<Compare, bool, T, T>::value,
135 "Compare must model BinaryFunction");
136 static_assert(type_traits::is_random_access_range<Container>::value,
137 "Container must model RandomAccessRange");
139 auto begin_it = begin(c);
140 auto end_it = end(c);
141 auto N = distance(begin_it, end_it);
150 return resources::EventProxy<Res>(r);
158 typename Compare = operators::less<RAJA::detail::ContainerVal<Container>>,
160 concepts::enable_if_t<
161 resources::EventProxy<Res>,
162 type_traits::is_execution_policy<ExecPolicy>,
163 type_traits::is_range<Container>,
165 std::is_constructible<camp::resources::Resource, Container>>>
168 Res r = Res::get_default();
170 std::forward<ExecPolicy>(p), r, std::forward<Container>(c), comp);
186 template<
typename ExecPolicy,
188 typename KeyContainer,
189 typename ValContainer,
191 operators::less<RAJA::detail::ContainerVal<KeyContainer>>>
192 concepts::enable_if_t<resources::EventProxy<Res>,
193 type_traits::is_execution_policy<ExecPolicy>,
194 type_traits::is_resource<Res>,
195 std::is_constructible<camp::resources::Resource, Res>,
196 type_traits::is_range<KeyContainer>,
197 type_traits::is_range<ValContainer>>
202 Compare comp = Compare {})
208 static_assert(type_traits::is_binary_function<Compare, bool, T, T>::value,
209 "Compare must model BinaryFunction");
210 static_assert(type_traits::is_random_access_range<KeyContainer>::value,
211 "KeyContainer must model RandomAccessRange");
212 static_assert(type_traits::is_random_access_range<ValContainer>::value,
213 "ValContainer must model RandomAccessRange");
215 auto begin_key = begin(keys);
216 auto end_key = end(keys);
217 auto N = distance(begin_key, end_key);
222 end_key, begin(vals), comp);
226 return resources::EventProxy<Res>(r);
231 template<
typename ExecPolicy,
232 typename KeyContainer,
233 typename ValContainer,
235 operators::less<RAJA::detail::ContainerVal<KeyContainer>>,
237 concepts::enable_if_t<
238 resources::EventProxy<Res>,
239 type_traits::is_execution_policy<ExecPolicy>,
240 type_traits::is_range<KeyContainer>,
242 std::is_constructible<camp::resources::Resource, KeyContainer>>,
243 type_traits::is_range<ValContainer>>
247 Compare comp = Compare {})
249 Res r = Res::get_default();
251 std::forward<ExecPolicy>(p), r, std::forward<KeyContainer>(keys),
252 std::forward<ValContainer>(vals), comp);
268 template<
typename ExecPolicy,
270 typename KeyContainer,
271 typename ValContainer,
273 operators::less<RAJA::detail::ContainerVal<KeyContainer>>>
274 concepts::enable_if_t<resources::EventProxy<Res>,
275 type_traits::is_execution_policy<ExecPolicy>,
276 type_traits::is_resource<Res>,
277 std::is_constructible<camp::resources::Resource, Res>,
278 type_traits::is_range<KeyContainer>,
279 type_traits::is_range<ValContainer>>
284 Compare comp = Compare {})
290 static_assert(type_traits::is_binary_function<Compare, bool, T, T>::value,
291 "Compare must model BinaryFunction");
292 static_assert(type_traits::is_random_access_range<KeyContainer>::value,
293 "KeyContainer must model RandomAccessRange");
294 static_assert(type_traits::is_random_access_range<ValContainer>::value,
295 "ValContainer must model RandomAccessRange");
297 auto begin_key = begin(keys);
298 auto end_key = end(keys);
299 auto N = distance(begin_key, end_key);
304 end_key, begin(vals), comp);
308 return resources::EventProxy<Res>(r);
313 template<
typename ExecPolicy,
314 typename KeyContainer,
315 typename ValContainer,
317 operators::less<RAJA::detail::ContainerVal<KeyContainer>>,
319 concepts::enable_if_t<
320 resources::EventProxy<Res>,
321 type_traits::is_execution_policy<ExecPolicy>,
322 type_traits::is_range<KeyContainer>,
324 std::is_constructible<camp::resources::Resource, KeyContainer>>,
325 type_traits::is_range<ValContainer>>
329 Compare comp = Compare {})
331 Res r = Res::get_default();
333 std::forward<ExecPolicy>(p), r, std::forward<KeyContainer>(keys),
334 std::forward<ValContainer>(vals), comp);
347 template<
typename ExecPolicy,
350 concepts::enable_if_t<resources::EventProxy<Res>,
351 type_traits::is_execution_policy<ExecPolicy>>
354 Res r = Res::get_default();
355 return ::RAJA::policy_by_value_interface::sort<ExecPolicy>(
360 template<
typename ExecPolicy,
typename Res,
typename... Args>
361 concepts::enable_if_t<resources::EventProxy<Res>,
362 type_traits::is_execution_policy<ExecPolicy>,
363 type_traits::is_resource<Res>>
367 std::forward<Args>(
args)...);
376 template<
typename ExecPolicy,
379 concepts::enable_if_t<resources::EventProxy<Res>,
380 type_traits::is_execution_policy<ExecPolicy>>
383 Res r = Res::get_default();
384 return ::RAJA::policy_by_value_interface::stable_sort<ExecPolicy>(
389 template<
typename ExecPolicy,
typename Res,
typename... Args>
390 concepts::enable_if_t<resources::EventProxy<Res>,
391 type_traits::is_execution_policy<ExecPolicy>,
392 type_traits::is_resource<Res>>
405 template<
typename ExecPolicy,
408 concepts::enable_if_t<resources::EventProxy<Res>,
409 type_traits::is_execution_policy<ExecPolicy>>
412 Res r = Res::get_default();
413 return ::RAJA::policy_by_value_interface::sort_pairs<ExecPolicy>(
418 template<
typename ExecPolicy,
typename Res,
typename... Args>
419 concepts::enable_if_t<resources::EventProxy<Res>,
420 type_traits::is_execution_policy<ExecPolicy>,
421 type_traits::is_resource<Res>>
434 template<
typename ExecPolicy,
437 concepts::enable_if_t<resources::EventProxy<Res>,
438 type_traits::is_execution_policy<ExecPolicy>>
441 Res r = Res::get_default();
442 return ::RAJA::policy_by_value_interface::stable_sort_pairs<ExecPolicy>(
447 template<
typename ExecPolicy,
typename Res,
typename... Args>
448 concepts::enable_if_t<resources::EventProxy<Res>,
449 type_traits::is_execution_policy<ExecPolicy>,
450 type_traits::is_resource<Res>>
Header file for RAJA operator definitions.
Header file for basic RAJA policy mechanics.
Header file for RAJA algorithm definitions.
Header file for RAJA concept definitions.
camp::decay< decltype(*camp::val< camp::iterator_from< Container > >())> ContainerVal
Definition: algorithm.hpp:51
Args args
Definition: WorkRunner.hpp:212
void sort(Sorter sorter, Iter begin, Iter end, Compare comp)
sort given range using sorter and comparison function
Definition: sort.hpp:155
concepts::enable_if_t< resources::EventProxy< resources::Host >, type_traits::is_openmp_policy< ExecPolicy > > stable_pairs(resources::Host host_res, const ExecPolicy &, KeyIter keys_begin, KeyIter keys_end, ValIter vals_begin, Compare comp)
Definition: sort.hpp:276
concepts::enable_if_t< resources::EventProxy< resources::Host >, type_traits::is_openmp_policy< ExecPolicy > > stable(resources::Host host_res, const ExecPolicy &, Iter begin, Iter end, Compare comp)
stable sort given range using comparison function
Definition: sort.hpp:230
concepts::enable_if_t< resources::EventProxy< resources::Host >, type_traits::is_openmp_policy< ExecPolicy > > unstable(resources::Host host_res, const ExecPolicy &, Iter begin, Iter end, Compare comp)
sort given range using comparison function
Definition: sort.hpp:213
concepts::enable_if_t< resources::EventProxy< resources::Host >, type_traits::is_openmp_policy< ExecPolicy > > unstable_pairs(resources::Host host_res, const ExecPolicy &, KeyIter keys_begin, KeyIter keys_end, ValIter vals_begin, Compare comp)
sort given range of pairs using comparison function on keys
Definition: sort.hpp:250
concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_resource< Res >, std::is_constructible< camp::resources::Resource, Res >, type_traits::is_range< Container > > stable_sort(ExecPolicy &&p, Res r, Container &&c, Compare comp=Compare {})
stable sort execution pattern
Definition: sort.hpp:128
concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_resource< Res >, std::is_constructible< camp::resources::Resource, Res >, type_traits::is_range< KeyContainer >, type_traits::is_range< ValContainer > > stable_sort_pairs(ExecPolicy &&p, Res r, KeyContainer &&keys, ValContainer &&vals, Compare comp=Compare {})
stable sort pairs execution pattern
Definition: sort.hpp:280
concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_resource< Res >, std::is_constructible< camp::resources::Resource, Res >, type_traits::is_range< KeyContainer >, type_traits::is_range< ValContainer > > sort_pairs(ExecPolicy &&p, Res r, KeyContainer &&keys, ValContainer &&vals, Compare comp=Compare {})
sort pairs execution pattern
Definition: sort.hpp:198
concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_resource< Res >, std::is_constructible< camp::resources::Resource, Res >, type_traits::is_range< Container > > sort(ExecPolicy &&p, Res r, Container &&c, Compare comp=Compare {})
sort execution pattern
Definition: sort.hpp:61
Definition: AlignedRangeIndexSetBuilders.cpp:35
concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_resource< Res > > stable_sort_pairs(Res r, Args &&... args)
Definition: sort.hpp:451
concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_resource< Res > > sort_pairs(Res r, Args &&... args)
Definition: sort.hpp:422
concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_resource< Res > > stable_sort(Res r, Args &&... args)
Definition: sort.hpp:393
Definition: IndexSet.hpp:70
camp::resources::Host type
Definition: resource.hpp:49