20 #ifndef RAJA_POLICYBASE_HPP
21 #define RAJA_POLICYBASE_HPP
79 static constexpr Platform
platform = Platform_;
82 template<
typename PolicyType>
88 template<
typename PolicyType>
94 template<
typename PolicyType>
100 template<
typename PolicyType>
103 static constexpr Platform
value = PolicyType::platform;
106 template<
typename PolicyType, RAJA::Policy P_>
107 struct policy_is : camp::num<policy_of<camp::decay<PolicyType>>::value == P_>
112 : camp::num<camp::concepts::any_of<policy_is<PolicyType, Ps_>...>::value>
115 template<
typename PolicyType, RAJA::Pattern P_>
116 struct pattern_is : camp::num<pattern_of<camp::decay<PolicyType>>::value == P_>
119 template<
typename PolicyType, RAJA::Launch L_>
120 struct launch_is : camp::num<launch_of<camp::decay<PolicyType>>::value == L_>
123 template<
typename PolicyType, RAJA::Platform P_>
125 : camp::num<platform_of<camp::decay<PolicyType>>::value == P_>
128 template<
typename PolicyType,
typename Trait>
133 template<
typename Trait,
140 PolicyBaseT<Policy_, Pattern_, Launch_, Platform_, Traits...>,
142 : camp::num<camp::concepts::any_of<std::is_same<Trait, Traits>...>::value>
146 template<
typename PolicyType,
typename Trait>
149 template<
typename Inner>
176 PolicyBaseT<Policy_, Pattern_, Launch_, Platform_, Args...>;
180 PolicyBaseT<Policy_, Pattern_, Launch_, Platform::undefined, Args...>;
182 template<
Policy Policy_,
Pattern Pattern_, Platform Platform_,
typename... Args>
189 template<
typename Pol>
191 : DefineConcept(::RAJA::concepts::has_type<::RAJA::Policy>(
192 camp::decay<decltype(Pol::policy)>()),
193 ::RAJA::concepts::has_type<::RAJA::Pattern>(
194 camp::decay<decltype(Pol::pattern)>()),
195 ::RAJA::concepts::has_type<::RAJA::Launch>(
196 camp::decay<decltype(Pol::launch)>()),
197 ::RAJA::concepts::has_type<::RAJA::Platform>(
198 camp::decay<decltype(Pol::platform)>())) {};
202 namespace type_traits
205 template<
typename Pol>
209 template<
typename Pol>
213 template<
typename Pol>
217 template<
typename Pol>
222 template<
typename Pol>
226 template<
typename Pol>
230 template<
typename Pol>
234 template<
typename Pol>
242 template<
typename Pol>
246 template<
typename Pol>
Header file with aliases to camp types.
Header file for RAJA concept definitions.
DefineTypeTraitFromConcept(is_range_constructible, RAJA::concepts::RangeConstructible)
Definition: AlignedRangeIndexSetBuilders.cpp:35
Launch
Definition: PolicyBase.hpp:60
Policy
Definition: PolicyBase.hpp:32
void launch(LaunchParams const &launch_params, ReduceParams &&... rest_of_launch_args)
Definition: launch_core.hpp:268
Pattern
Definition: PolicyBase.hpp:44
Definition: PolicyBase.hpp:75
static constexpr Platform platform
Definition: PolicyBase.hpp:79
static constexpr Pattern pattern
Definition: PolicyBase.hpp:77
static constexpr Launch launch
Definition: PolicyBase.hpp:78
static constexpr Policy policy
Definition: PolicyBase.hpp:76
Definition: PolicyBase.hpp:67
Definition: PolicyBase.hpp:198
Definition: PolicyBase.hpp:121
Definition: PolicyBase.hpp:96
static constexpr Launch value
Definition: PolicyBase.hpp:97
Definition: PolicyBase.hpp:117
Definition: PolicyBase.hpp:90
static constexpr Pattern value
Definition: PolicyBase.hpp:91
Definition: PolicyBase.hpp:113
Definition: PolicyBase.hpp:130
Definition: PolicyBase.hpp:108
Definition: PolicyBase.hpp:84
static constexpr Policy value
Definition: PolicyBase.hpp:85
Definition: PolicyBase.hpp:159
Definition: PolicyBase.hpp:162
Definition: PolicyBase.hpp:224
Definition: PolicyBase.hpp:237
Definition: PolicyBase.hpp:228
Definition: PolicyBase.hpp:249
Definition: PolicyBase.hpp:215
Definition: PolicyBase.hpp:244
Definition: PolicyBase.hpp:207
Definition: PolicyBase.hpp:211
Definition: PolicyBase.hpp:232
Definition: PolicyBase.hpp:220
Definition: PolicyBase.hpp:151
Inner inner
Definition: PolicyBase.hpp:152