20 #ifndef policy_openmp_HPP
21 #define policy_openmp_HPP
23 #include <type_traits>
31 #if defined(RAJA_COMPILER_MSVC)
32 typedef enum omp_sched_t
35 omp_sched_static = 0x1,
36 omp_sched_dynamic = 0x2,
37 omp_sched_guided = 0x3,
41 omp_sched_monotonic = 0x80000000u
56 template<multi_reduce_algorithm t_algorithm>
76 template<omp_sched_t Sched,
int Chunk>
102 static constexpr
int default_chunk_size = -1;
107 template<
int ChunkSize = default_chunk_size>
111 template<
int ChunkSize = default_chunk_size>
114 template<
int ChunkSize = default_chunk_size>
151 template<
typename Sched>
162 std::is_base_of<::RAJA::policy::omp::internal::ScheduleTag, Sched>::value,
163 "Schedule type must be one of: Auto|Runtime|Static|Dynamic|Guided");
169 template<
typename Sched>
179 std::is_base_of<::RAJA::policy::omp::internal::ScheduleTag, Sched>::value,
180 "Schedule type must be one of: Auto|Runtime|Static|Dynamic|Guided");
190 template<
int ChunkSize = default_chunk_size>
194 template<
int ChunkSize = default_chunk_size>
198 template<
int ChunkSize = default_chunk_size>
218 template<
int ChunkSize = default_chunk_size>
226 template<
typename InnerPolicy>
242 template<
int ChunkSize = default_chunk_size>
247 template<
int ChunkSize = default_chunk_size>
252 template<
int ChunkSize = default_chunk_size>
297 Pattern::workgroup_exec,
318 template<
typename tuning>
321 Pattern::multi_reduce,
324 std::conditional_t<tuning::consistent,
331 Pattern::synchronize,
335 #if defined(RAJA_COMPILER_MSVC)
350 template<RAJA::omp::multi_reduce_algorithm algorithm>
Header file for basic RAJA policy mechanics.
RAJA header file defining automatic and builtin atomic operations.
multi_reduce_algorithm
Definition: policy.hpp:51
omp_multi_reduce_combine_on_destruction omp_multi_reduce_unordered
Definition: policy.hpp:371
omp_for_schedule_exec< Auto > omp_for_exec
Definition: policy.hpp:187
omp_multi_reduce_tuning< RAJA::omp::multi_reduce_algorithm::combine_on_get > omp_multi_reduce_combine_on_get
Definition: policy.hpp:363
omp_for_schedule_exec< omp::Runtime > omp_for_runtime_exec
Definition: policy.hpp:202
omp_parallel_exec< omp_for_schedule_exec< omp::Static< ChunkSize > >> omp_parallel_for_static_exec
Definition: policy.hpp:244
omp_for_schedule_exec< omp::Static< ChunkSize > > omp_for_static_exec
Definition: policy.hpp:191
omp_multi_reduce_tuning< RAJA::omp::multi_reduce_algorithm::combine_on_destruction > omp_multi_reduce_combine_on_destruction
Definition: policy.hpp:359
omp_multi_reduce_unordered omp_multi_reduce
Definition: policy.hpp:373
omp_parallel_for_exec omp_parallel_for_segit
Definition: policy.hpp:268
omp_for_schedule_exec< omp::Dynamic< ChunkSize > > omp_for_dynamic_exec
Definition: policy.hpp:195
omp_for_schedule_exec< omp::Guided< ChunkSize > > omp_for_guided_exec
Definition: policy.hpp:199
omp_parallel_for_segit omp_parallel_segit
Definition: policy.hpp:271
omp_for_nowait_schedule_exec< omp::Static< ChunkSize > > omp_for_nowait_static_exec
Definition: policy.hpp:220
omp_parallel_exec< omp_for_schedule_exec< omp::Runtime > > omp_parallel_for_runtime_exec
Definition: policy.hpp:258
omp_parallel_exec< omp_for_schedule_exec< omp::Dynamic< ChunkSize > >> omp_parallel_for_dynamic_exec
Definition: policy.hpp:249
omp_multi_reduce_combine_on_get omp_multi_reduce_ordered
Definition: policy.hpp:367
make_policy_pattern_launch_platform_t< Policy::openmp, Pattern::forall, Launch::undefined, Platform::host, omp::Parallel, wrapper< InnerPolicy > > omp_parallel_exec
Definition: policy.hpp:233
omp_parallel_exec< omp_for_exec > omp_parallel_for_exec
Definition: policy.hpp:239
omp_parallel_exec< omp_for_schedule_exec< omp::Guided< ChunkSize > >> omp_parallel_for_guided_exec
Definition: policy.hpp:254
Definition: AlignedRangeIndexSetBuilders.cpp:35
Policy
Definition: PolicyBase.hpp:32
Definition: PolicyBase.hpp:75
Atomic policy that uses the compilers builtin __atomic_XXX routines.
Definition: atomic_builtin.hpp:48
Definition: policy.hpp:58
static constexpr bool consistent
Definition: policy.hpp:60
static constexpr multi_reduce_algorithm algorithm
Definition: policy.hpp:59
Definition: policy.hpp:105
Definition: policy.hpp:97
Definition: policy.hpp:100
Definition: policy.hpp:94
Definition: policy.hpp:119
Definition: policy.hpp:109
Definition: policy.hpp:74
Definition: policy.hpp:78
constexpr static Policy policy
Definition: policy.hpp:81
constexpr static int chunk_size
Definition: policy.hpp:80
constexpr static omp_sched_t schedule
Definition: policy.hpp:79
Definition: policy.hpp:343
Definition: policy.hpp:160
Definition: policy.hpp:177
Definition: policy.hpp:146
Definition: policy.hpp:327
Definition: policy.hpp:137
Definition: policy.hpp:315
Definition: policy.hpp:310
Definition: policy.hpp:333
Definition: policy.hpp:287
Definition: policy.hpp:282
Definition: policy.hpp:348
Definition: policy.hpp:300
Definition: PolicyBase.hpp:151