10 #ifndef RAJA_policy_openmp_target_kernel_Collapse_HPP
11 #define RAJA_policy_openmp_target_kernel_Collapse_HPP
20 template<camp::idx_t Arg0,
22 typename... EnclosedStmts,
29 template<
typename Data>
30 static RAJA_INLINE
void exec(Data&& data)
32 auto l0 = segment_length<Arg0>(data);
33 auto l1 = segment_length<Arg1>(data);
41 #pragma omp target teams distribute parallel for schedule(static, 1) \
42 firstprivate(privatizer) collapse(2)
43 for (
auto i0 = (decltype(l0))0; i0 < l0; ++i0)
45 for (
auto i1 = (decltype(l1))0; i1 < l1; ++i1)
48 private_data.template assign_offset<Arg0>(i0);
49 private_data.template assign_offset<Arg1>(i1);
57 template<camp::idx_t Arg0,
60 typename... EnclosedStmts,
63 ArgList<Arg0, Arg1, Arg2>,
67 template<
typename Data>
68 static RAJA_INLINE
void exec(Data&& data)
70 auto l0 = segment_length<Arg0>(data);
71 auto l1 = segment_length<Arg1>(data);
72 auto l2 = segment_length<Arg2>(data);
81 #pragma omp target teams distribute parallel for schedule(static, 1) \
82 firstprivate(privatizer) collapse(3)
83 for (
auto i0 = (decltype(l0))0; i0 < l0; ++i0)
85 for (
auto i1 = (decltype(l1))0; i1 < l1; ++i1)
87 for (
auto i2 = (decltype(l2))0; i2 < l2; ++i2)
90 private_data.template assign_offset<Arg0>(i0);
91 private_data.template assign_offset<Arg1>(i1);
92 private_data.template assign_offset<Arg2>(i2);
101 template<camp::idx_t Arg0,
105 typename... EnclosedStmts,
108 ArgList<Arg0, Arg1, Arg2, Arg3>,
112 template<
typename Data>
113 static RAJA_INLINE
void exec(Data&& data)
115 auto l0 = segment_length<Arg0>(data);
116 auto l1 = segment_length<Arg1>(data);
117 auto l2 = segment_length<Arg2>(data);
118 auto l3 = segment_length<Arg3>(data);
128 #pragma omp target teams distribute parallel for schedule(static, 1) \
129 firstprivate(privatizer) collapse(4)
130 for (
auto i0 = (decltype(l0))0; i0 < l0; ++i0)
132 for (
auto i1 = (decltype(l1))0; i1 < l1; ++i1)
134 for (
auto i2 = (decltype(l2))0; i2 < l2; ++i2)
136 for (
auto i3 = (decltype(l3))0; i3 < l3; ++i3)
139 private_data.template assign_offset<Arg0>(i0);
140 private_data.template assign_offset<Arg1>(i1);
141 private_data.template assign_offset<Arg2>(i2);
142 private_data.template assign_offset<Arg3>(i2);
setSegmentType< Types, Segment, camp::at_v< typename camp::decay< Data >::index_types_t, Segment > > setSegmentTypeFromData
Definition: LoopTypes.hpp:95
RAJA_HOST_DEVICE auto thread_privatize(const T &item) -> Privatizer< T >
Create a private copy of the argument to be stored on the current thread's stack in a class of the Pr...
Definition: privatizer.hpp:88
RAJA_INLINE void execute_statement_list(Data &&data)
Definition: StatementList.hpp:84
Definition: AlignedRangeIndexSetBuilders.cpp:35
auto privatizer
Definition: launch.hpp:176
Header file for loop kernel internals.
static RAJA_INLINE void exec(Data &&data)
Definition: Collapse.hpp:68
static RAJA_INLINE void exec(Data &&data)
Definition: Collapse.hpp:30
static RAJA_INLINE void exec(Data &&data)
Definition: Collapse.hpp:113
Definition: Statement.hpp:48