RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
Functions
RAJA::policy_by_value_interface Namespace Reference

The RAJA::policy_by_value_interface forall functions provide an interface with value-based policies. It also enforces the interface and performs static checks as well as triggering plugins and loop body updates. More...

Functions

template<typename ExecutionPolicy , typename Res , typename IdxSet , typename... Params>
RAJA_INLINE resources::EventProxy< Res > forall_Icount (ExecutionPolicy &&p, Res r, IdxSet &&c, Params &&... params)
 Generic dispatch over index set with icount with a value-based policy. More...
 
template<typename ExecutionPolicy , typename IdxSet , typename LoopBody , typename Res = typename resources::get_resource<ExecutionPolicy>::type>
RAJA_INLINE resources::EventProxy< Res > forall_Icount (ExecutionPolicy &&p, IdxSet &&c, LoopBody &&loop_body)
 
template<typename ExecutionPolicy , typename Res , typename IdxSet , typename... Params>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_indexset_policy< ExecutionPolicy > > forall (ExecutionPolicy &&p, Res r, IdxSet &&c, Params &&... params)
 Generic dispatch over index set with a value-based policy. More...
 
template<typename ExecutionPolicy , typename IdxSet , typename LoopBody , typename Res = typename resources::get_resource<ExecutionPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_indexset_policy< ExecutionPolicy > > forall (ExecutionPolicy &&p, IdxSet &&c, LoopBody &&loop_body)
 
template<typename ExecutionPolicy , typename Container , typename LoopBody , typename Res = typename resources::get_resource<ExecutionPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_multi_policy< ExecutionPolicy >, type_traits::is_range< Container > > forall (ExecutionPolicy &&p, Container &&c, LoopBody &&loop_body)
 Generic dispatch over containers with a multi policy. More...
 
template<typename ExecutionPolicy , typename Res , typename Container , typename IndexType , typename FirstParam , typename... Params>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_range< Container >, type_traits::is_integral< IndexType > > forall_Icount (ExecutionPolicy &&p, Res r, Container &&c, IndexType icount, FirstParam &&first, Params &&... params)
 Generic dispatch over containers with icount with a value-based policy. More...
 
template<typename ExecutionPolicy , typename Container , typename IndexType , typename LoopBody , typename Res = typename resources::get_resource<ExecutionPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_range< Container >, concepts::negate< type_traits::is_indexset_policy< ExecutionPolicy > >, type_traits::is_integral< IndexType > > forall_Icount (ExecutionPolicy &&p, Container &&c, IndexType icount, LoopBody &&loop_body)
 
template<typename ExecutionPolicy , typename Res , typename Container , typename... Params>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy< Res >, concepts::negate< type_traits::is_indexset_policy< ExecutionPolicy > >, concepts::negate< type_traits::is_multi_policy< ExecutionPolicy > >, type_traits::is_range< Container > > forall (ExecutionPolicy &&p, Res r, Container &&c, Params &&... params)
 Generic dispatch over containers with a value-based policy. More...
 
template<typename ExecutionPolicy , typename Container , typename LoopBody , typename Res = typename resources::get_resource<ExecutionPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy< Res >, concepts::negate< type_traits::is_indexset_policy< ExecutionPolicy > >, concepts::negate< type_traits::is_multi_policy< ExecutionPolicy > >, type_traits::is_range< Container > > forall (ExecutionPolicy &&p, Container &&c, LoopBody &&loop_body)
 
template<typename ExecPolicy , typename Res , typename Container , typename Function = operators::plus<RAJA::detail::ContainerVal<Container>>>
RAJA_INLINE 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 > > inclusive_scan_inplace (ExecPolicy &&p, Res r, Container &&c, Function binop=Function {})
 inclusive in-place scan execution pattern More...
 
template<typename ExecPolicy , typename Container , typename Function = operators::plus<RAJA::detail::ContainerVal<Container>>, typename Res = typename resources::get_resource<ExecPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_range< Container >, concepts::negate< std::is_constructible< camp::resources::Resource, Container > > > inclusive_scan_inplace (ExecPolicy &&p, Container &&c, Function binop=Function {})
 
template<typename ExecPolicy , typename Res , typename Container , typename T = RAJA::detail::ContainerVal<Container>, typename Function = operators::plus<T>>
RAJA_INLINE 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 > > exclusive_scan_inplace (ExecPolicy &&p, Res r, Container &&c, Function binop=Function {}, T value=Function::identity())
 exclusive in-place scan execution pattern More...
 
template<typename ExecPolicy , typename Container , typename T = RAJA::detail::ContainerVal<Container>, typename Function = operators::plus<T>, typename Res = typename resources::get_resource<ExecPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_range< Container >, concepts::negate< std::is_constructible< camp::resources::Resource, Container > > > exclusive_scan_inplace (ExecPolicy &&p, Container &&c, Function binop=Function {}, T value=Function::identity())
 
template<typename ExecPolicy , typename Res , typename InContainer , typename OutContainer , typename Function = operators::plus<RAJA::detail::ContainerVal<InContainer>>>
RAJA_INLINE 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< InContainer >, type_traits::is_range< OutContainer > > inclusive_scan (ExecPolicy &&p, Res r, InContainer &&in, OutContainer &&out, Function binop=Function {})
 inclusive scan execution pattern More...
 
template<typename ExecPolicy , typename InContainer , typename OutContainer , typename Function = operators::plus<RAJA::detail::ContainerVal<InContainer>>, typename Res = typename resources::get_resource<ExecPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_range< InContainer >, concepts::negate< std::is_constructible< camp::resources::Resource, InContainer > >, type_traits::is_range< OutContainer > > inclusive_scan (ExecPolicy &&p, InContainer &&in, OutContainer &&out, Function binop=Function {})
 
template<typename ExecPolicy , typename Res , typename InContainer , typename OutContainer , typename T = RAJA::detail::ContainerVal<InContainer>, typename Function = operators::plus<T>>
RAJA_INLINE 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< InContainer >, type_traits::is_range< OutContainer > > exclusive_scan (ExecPolicy &&p, Res r, InContainer &&in, OutContainer &&out, Function binop=Function {}, T value=Function::identity())
 exclusive scan execution pattern More...
 
template<typename ExecPolicy , typename InContainer , typename OutContainer , typename T = RAJA::detail::ContainerVal<InContainer>, typename Function = operators::plus<T>, typename Res = typename resources::get_resource<ExecPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_range< InContainer >, concepts::negate< std::is_constructible< camp::resources::Resource, InContainer > >, type_traits::is_range< OutContainer > > exclusive_scan (ExecPolicy &&p, InContainer &&in, OutContainer &&out, Function binop=Function {}, T value=Function::identity())
 
template<typename ExecPolicy , typename Res , typename Container , typename Compare = operators::less<RAJA::detail::ContainerVal<Container>>>
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 More...
 
template<typename ExecPolicy , typename Container , typename Compare = operators::less<RAJA::detail::ContainerVal<Container>>, typename Res = typename resources::get_resource<ExecPolicy>::type>
concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_range< Container >, concepts::negate< std::is_constructible< camp::resources::Resource, Container > > > sort (ExecPolicy &&p, Container &&c, Compare comp=Compare {})
 
template<typename ExecPolicy , typename Res , typename Container , typename Compare = operators::less<RAJA::detail::ContainerVal<Container>>>
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 More...
 
template<typename ExecPolicy , typename Container , typename Compare = operators::less<RAJA::detail::ContainerVal<Container>>, typename Res = typename resources::get_resource<ExecPolicy>::type>
concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_range< Container >, concepts::negate< std::is_constructible< camp::resources::Resource, Container > > > stable_sort (ExecPolicy &&p, Container &&c, Compare comp=Compare {})
 
template<typename ExecPolicy , typename Res , typename KeyContainer , typename ValContainer , typename Compare = operators::less<RAJA::detail::ContainerVal<KeyContainer>>>
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 More...
 
template<typename ExecPolicy , typename KeyContainer , typename ValContainer , typename Compare = operators::less<RAJA::detail::ContainerVal<KeyContainer>>, typename Res = typename resources::get_resource<ExecPolicy>::type>
concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_range< KeyContainer >, concepts::negate< std::is_constructible< camp::resources::Resource, KeyContainer > >, type_traits::is_range< ValContainer > > sort_pairs (ExecPolicy &&p, KeyContainer &&keys, ValContainer &&vals, Compare comp=Compare {})
 
template<typename ExecPolicy , typename Res , typename KeyContainer , typename ValContainer , typename Compare = operators::less<RAJA::detail::ContainerVal<KeyContainer>>>
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 More...
 
template<typename ExecPolicy , typename KeyContainer , typename ValContainer , typename Compare = operators::less<RAJA::detail::ContainerVal<KeyContainer>>, typename Res = typename resources::get_resource<ExecPolicy>::type>
concepts::enable_if_t< resources::EventProxy< Res >, type_traits::is_execution_policy< ExecPolicy >, type_traits::is_range< KeyContainer >, concepts::negate< std::is_constructible< camp::resources::Resource, KeyContainer > >, type_traits::is_range< ValContainer > > stable_sort_pairs (ExecPolicy &&p, KeyContainer &&keys, ValContainer &&vals, Compare comp=Compare {})
 

Detailed Description

The RAJA::policy_by_value_interface forall functions provide an interface with value-based policies. It also enforces the interface and performs static checks as well as triggering plugins and loop body updates.

Function Documentation

◆ forall_Icount() [1/4]

template<typename ExecutionPolicy , typename Res , typename IdxSet , typename... Params>
RAJA_INLINE resources::EventProxy<Res> RAJA::policy_by_value_interface::forall_Icount ( ExecutionPolicy &&  p,
Res  r,
IdxSet &&  c,
Params &&...  params 
)

Generic dispatch over index set with icount with a value-based policy.

◆ forall_Icount() [2/4]

template<typename ExecutionPolicy , typename IdxSet , typename LoopBody , typename Res = typename resources::get_resource<ExecutionPolicy>::type>
RAJA_INLINE resources::EventProxy<Res> RAJA::policy_by_value_interface::forall_Icount ( ExecutionPolicy &&  p,
IdxSet &&  c,
LoopBody &&  loop_body 
)

◆ forall() [1/5]

template<typename ExecutionPolicy , typename Res , typename IdxSet , typename... Params>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy<Res>, type_traits::is_indexset_policy<ExecutionPolicy> > RAJA::policy_by_value_interface::forall ( ExecutionPolicy &&  p,
Res  r,
IdxSet &&  c,
Params &&...  params 
)

Generic dispatch over index set with a value-based policy.

◆ forall() [2/5]

template<typename ExecutionPolicy , typename IdxSet , typename LoopBody , typename Res = typename resources::get_resource<ExecutionPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy<Res>, type_traits::is_indexset_policy<ExecutionPolicy> > RAJA::policy_by_value_interface::forall ( ExecutionPolicy &&  p,
IdxSet &&  c,
LoopBody &&  loop_body 
)

◆ forall() [3/5]

template<typename ExecutionPolicy , typename Container , typename LoopBody , typename Res = typename resources::get_resource<ExecutionPolicy>::type>
RAJA_INLINE concepts::enable_if_t<resources::EventProxy<Res>, type_traits::is_multi_policy<ExecutionPolicy>, type_traits::is_range<Container> > RAJA::policy_by_value_interface::forall ( ExecutionPolicy &&  p,
Container &&  c,
LoopBody &&  loop_body 
)

Generic dispatch over containers with a multi policy.

◆ forall_Icount() [3/4]

template<typename ExecutionPolicy , typename Res , typename Container , typename IndexType , typename FirstParam , typename... Params>
RAJA_INLINE concepts::enable_if_t<resources::EventProxy<Res>, type_traits::is_range<Container>, type_traits::is_integral<IndexType> > RAJA::policy_by_value_interface::forall_Icount ( ExecutionPolicy &&  p,
Res  r,
Container &&  c,
IndexType  icount,
FirstParam &&  first,
Params &&...  params 
)

Generic dispatch over containers with icount with a value-based policy.

◆ forall_Icount() [4/4]

template<typename ExecutionPolicy , typename Container , typename IndexType , typename LoopBody , typename Res = typename resources::get_resource<ExecutionPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy<Res>, type_traits::is_range<Container>, concepts::negate<type_traits::is_indexset_policy<ExecutionPolicy> >, type_traits::is_integral<IndexType> > RAJA::policy_by_value_interface::forall_Icount ( ExecutionPolicy &&  p,
Container &&  c,
IndexType  icount,
LoopBody &&  loop_body 
)

◆ forall() [4/5]

template<typename ExecutionPolicy , typename Res , typename Container , typename... Params>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy<Res>, concepts::negate<type_traits::is_indexset_policy<ExecutionPolicy> >, concepts::negate<type_traits::is_multi_policy<ExecutionPolicy> >, type_traits::is_range<Container> > RAJA::policy_by_value_interface::forall ( ExecutionPolicy &&  p,
Res  r,
Container &&  c,
Params &&...  params 
)

Generic dispatch over containers with a value-based policy.

◆ forall() [5/5]

template<typename ExecutionPolicy , typename Container , typename LoopBody , typename Res = typename resources::get_resource<ExecutionPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy<Res>, concepts::negate<type_traits::is_indexset_policy<ExecutionPolicy> >, concepts::negate<type_traits::is_multi_policy<ExecutionPolicy> >, type_traits::is_range<Container> > RAJA::policy_by_value_interface::forall ( ExecutionPolicy &&  p,
Container &&  c,
LoopBody &&  loop_body 
)

◆ inclusive_scan_inplace() [1/2]

template<typename ExecPolicy , typename Res , typename Container , typename Function = operators::plus<RAJA::detail::ContainerVal<Container>>>
RAJA_INLINE 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> > RAJA::policy_by_value_interface::inclusive_scan_inplace ( ExecPolicy &&  p,
Res  r,
Container &&  c,
Function  binop = Function {} 
)

inclusive in-place scan execution pattern

Parameters
[in]pExecution policy
[in,out]cRandom-Access Container
[in]binopbinary function to apply for scan
[in]valueidentity value for binary function, binop

◆ inclusive_scan_inplace() [2/2]

template<typename ExecPolicy , typename Container , typename Function = operators::plus<RAJA::detail::ContainerVal<Container>>, typename Res = typename resources::get_resource<ExecPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy<Res>, type_traits::is_execution_policy<ExecPolicy>, type_traits::is_range<Container>, concepts::negate< std::is_constructible<camp::resources::Resource, Container> > > RAJA::policy_by_value_interface::inclusive_scan_inplace ( ExecPolicy &&  p,
Container &&  c,
Function  binop = Function {} 
)

◆ exclusive_scan_inplace() [1/2]

template<typename ExecPolicy , typename Res , typename Container , typename T = RAJA::detail::ContainerVal<Container>, typename Function = operators::plus<T>>
RAJA_INLINE 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> > RAJA::policy_by_value_interface::exclusive_scan_inplace ( ExecPolicy &&  p,
Res  r,
Container &&  c,
Function  binop = Function {},
value = Function::identity() 
)

exclusive in-place scan execution pattern

Parameters
[in]pExecution policy
[in,out]cRandomAccess Container
[in]binopbinary function to apply for scan
[in]valueidentity for binary function, binop

◆ exclusive_scan_inplace() [2/2]

template<typename ExecPolicy , typename Container , typename T = RAJA::detail::ContainerVal<Container>, typename Function = operators::plus<T>, typename Res = typename resources::get_resource<ExecPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy<Res>, type_traits::is_execution_policy<ExecPolicy>, type_traits::is_range<Container>, concepts::negate< std::is_constructible<camp::resources::Resource, Container> > > RAJA::policy_by_value_interface::exclusive_scan_inplace ( ExecPolicy &&  p,
Container &&  c,
Function  binop = Function {},
value = Function::identity() 
)

◆ inclusive_scan() [1/2]

template<typename ExecPolicy , typename Res , typename InContainer , typename OutContainer , typename Function = operators::plus<RAJA::detail::ContainerVal<InContainer>>>
RAJA_INLINE 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<InContainer>, type_traits::is_range<OutContainer> > RAJA::policy_by_value_interface::inclusive_scan ( ExecPolicy &&  p,
Res  r,
InContainer &&  in,
OutContainer &&  out,
Function  binop = Function {} 
)

inclusive scan execution pattern

Parameters
[in]pExecution policy
[in]cRandom-Access Container
[out]outPointer or Random-Access Iterator to start of output data range
[in]binopbinary function to apply for scan
[in]valueidentity value for binary function, binop
Note
{The range of [begin, end) must be separate from [out, out + (end - begin))}

◆ inclusive_scan() [2/2]

template<typename ExecPolicy , typename InContainer , typename OutContainer , typename Function = operators::plus<RAJA::detail::ContainerVal<InContainer>>, typename Res = typename resources::get_resource<ExecPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy<Res>, type_traits::is_execution_policy<ExecPolicy>, type_traits::is_range<InContainer>, concepts::negate< std::is_constructible<camp::resources::Resource, InContainer> >, type_traits::is_range<OutContainer> > RAJA::policy_by_value_interface::inclusive_scan ( ExecPolicy &&  p,
InContainer &&  in,
OutContainer &&  out,
Function  binop = Function {} 
)

◆ exclusive_scan() [1/2]

template<typename ExecPolicy , typename Res , typename InContainer , typename OutContainer , typename T = RAJA::detail::ContainerVal<InContainer>, typename Function = operators::plus<T>>
RAJA_INLINE 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<InContainer>, type_traits::is_range<OutContainer> > RAJA::policy_by_value_interface::exclusive_scan ( ExecPolicy &&  p,
Res  r,
InContainer &&  in,
OutContainer &&  out,
Function  binop = Function {},
value = Function::identity() 
)

exclusive scan execution pattern

Parameters
[in]pExecution policy
[in]cRandom-Access Container
[out]outPointer or Random-Access Iterator to start of output data range
[in]binopbinary function to apply for scan
[in]valueidentity value for binary function, binop
Note
{The range of [begin, end) must be separate from [out, out + (end - begin))}

◆ exclusive_scan() [2/2]

template<typename ExecPolicy , typename InContainer , typename OutContainer , typename T = RAJA::detail::ContainerVal<InContainer>, typename Function = operators::plus<T>, typename Res = typename resources::get_resource<ExecPolicy>::type>
RAJA_INLINE concepts::enable_if_t< resources::EventProxy<Res>, type_traits::is_execution_policy<ExecPolicy>, type_traits::is_range<InContainer>, concepts::negate< std::is_constructible<camp::resources::Resource, InContainer> >, type_traits::is_range<OutContainer> > RAJA::policy_by_value_interface::exclusive_scan ( ExecPolicy &&  p,
InContainer &&  in,
OutContainer &&  out,
Function  binop = Function {},
value = Function::identity() 
)

◆ sort() [1/2]

template<typename ExecPolicy , typename Res , typename Container , typename Compare = operators::less<RAJA::detail::ContainerVal<Container>>>
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> > RAJA::policy_by_value_interface::sort ( ExecPolicy &&  p,
Res  r,
Container &&  c,
Compare  comp = Compare {} 
)

sort execution pattern

Parameters
[in]pExecution policy
[in,out]cRandomAccess Container range
[in]compcomparison function to apply for sort

◆ sort() [2/2]

template<typename ExecPolicy , typename Container , typename Compare = operators::less<RAJA::detail::ContainerVal<Container>>, typename Res = typename resources::get_resource<ExecPolicy>::type>
concepts::enable_if_t< resources::EventProxy<Res>, type_traits::is_execution_policy<ExecPolicy>, type_traits::is_range<Container>, concepts::negate< std::is_constructible<camp::resources::Resource, Container> > > RAJA::policy_by_value_interface::sort ( ExecPolicy &&  p,
Container &&  c,
Compare  comp = Compare {} 
)

◆ stable_sort() [1/2]

template<typename ExecPolicy , typename Res , typename Container , typename Compare = operators::less<RAJA::detail::ContainerVal<Container>>>
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> > RAJA::policy_by_value_interface::stable_sort ( ExecPolicy &&  p,
Res  r,
Container &&  c,
Compare  comp = Compare {} 
)

stable sort execution pattern

Parameters
[in]pExecution policy
[in,out]cRandomAccess Container range
[in]compcomparison function to apply for stable_sort

◆ stable_sort() [2/2]

template<typename ExecPolicy , typename Container , typename Compare = operators::less<RAJA::detail::ContainerVal<Container>>, typename Res = typename resources::get_resource<ExecPolicy>::type>
concepts::enable_if_t< resources::EventProxy<Res>, type_traits::is_execution_policy<ExecPolicy>, type_traits::is_range<Container>, concepts::negate< std::is_constructible<camp::resources::Resource, Container> > > RAJA::policy_by_value_interface::stable_sort ( ExecPolicy &&  p,
Container &&  c,
Compare  comp = Compare {} 
)

◆ sort_pairs() [1/2]

template<typename ExecPolicy , typename Res , typename KeyContainer , typename ValContainer , typename Compare = operators::less<RAJA::detail::ContainerVal<KeyContainer>>>
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> > RAJA::policy_by_value_interface::sort_pairs ( ExecPolicy &&  p,
Res  r,
KeyContainer &&  keys,
ValContainer &&  vals,
Compare  comp = Compare {} 
)

sort pairs execution pattern

Parameters
[in]pExecution policy
[in,out]keysRandomAccess Container or range of keys to be sorted
[in,out]valuesRandomAccess Container or range of values to reorder along with keys
[in]compcomparison function to apply to keys for sort

◆ sort_pairs() [2/2]

template<typename ExecPolicy , typename KeyContainer , typename ValContainer , typename Compare = operators::less<RAJA::detail::ContainerVal<KeyContainer>>, typename Res = typename resources::get_resource<ExecPolicy>::type>
concepts::enable_if_t< resources::EventProxy<Res>, type_traits::is_execution_policy<ExecPolicy>, type_traits::is_range<KeyContainer>, concepts::negate< std::is_constructible<camp::resources::Resource, KeyContainer> >, type_traits::is_range<ValContainer> > RAJA::policy_by_value_interface::sort_pairs ( ExecPolicy &&  p,
KeyContainer &&  keys,
ValContainer &&  vals,
Compare  comp = Compare {} 
)

◆ stable_sort_pairs() [1/2]

template<typename ExecPolicy , typename Res , typename KeyContainer , typename ValContainer , typename Compare = operators::less<RAJA::detail::ContainerVal<KeyContainer>>>
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> > RAJA::policy_by_value_interface::stable_sort_pairs ( ExecPolicy &&  p,
Res  r,
KeyContainer &&  keys,
ValContainer &&  vals,
Compare  comp = Compare {} 
)

stable sort pairs execution pattern

Parameters
[in]pExecution policy
[in,out]keysRandomAccess KeyContainer or range of keys to be sorted
[in,out]valsRandomAccess Container or range of values to reorder along with keys
[in]compcomparison function to apply to keys for stable_sort

◆ stable_sort_pairs() [2/2]

template<typename ExecPolicy , typename KeyContainer , typename ValContainer , typename Compare = operators::less<RAJA::detail::ContainerVal<KeyContainer>>, typename Res = typename resources::get_resource<ExecPolicy>::type>
concepts::enable_if_t< resources::EventProxy<Res>, type_traits::is_execution_policy<ExecPolicy>, type_traits::is_range<KeyContainer>, concepts::negate< std::is_constructible<camp::resources::Resource, KeyContainer> >, type_traits::is_range<ValContainer> > RAJA::policy_by_value_interface::stable_sort_pairs ( ExecPolicy &&  p,
KeyContainer &&  keys,
ValContainer &&  vals,
Compare  comp = Compare {} 
)