20 #ifndef RAJA_pattern_kernel_Hyperplane_HPP
21 #define RAJA_pattern_kernel_Hyperplane_HPP
23 #include "RAJA/config.hpp"
26 #include <type_traits>
28 #include "camp/camp.hpp"
81 template<camp::idx_t HpArgumentId,
82 typename HpExecPolicy,
85 typename... EnclosedStmts>
95 template<camp::idx_t HpArgumentId,
typename ArgList,
typename... EnclosedStmts>
99 template<camp::idx_t HpArgumentId,
100 typename HpExecPolicy,
103 typename... EnclosedStmts,
114 template<
typename Data>
115 static RAJA_INLINE
void exec(Data& data)
119 using data_t = camp::decay<Data>;
121 camp::tuple_element_t<HpArgumentId, typename data_t::offset_tuple_t>;
138 segment_length<HpArgumentId>(data) +
149 outer_wrapper, RAJA::expt::get_empty_forall_param_pack());
153 template<camp::idx_t HpArgumentId,
155 typename... EnclosedStmts,
163 template<
typename Data>
164 static RAJA_INLINE
void exec(Data& data)
168 auto h = camp::get<HpArgumentId>(data.offset_tuple);
169 using idx_t = decltype(h);
174 camp::get<Args>(data.offset_tuple)...);
177 auto len = segment_length<HpArgumentId>(data);
180 if (i >= 0 && i < len)
184 data.template assign_offset<HpArgumentId>(i);
190 data.template assign_offset<HpArgumentId>(h);
Header file for common RAJA internal macro definitions.
setSegmentType< Types, Segment, camp::at_v< typename camp::decay< Data >::index_types_t, Segment > > setSegmentTypeFromData
Definition: LoopTypes.hpp:95
camp::list< Stmts... > StatementList
Definition: StatementList.hpp:41
RAJA_INLINE void execute_statement_list(Data &&data)
Definition: StatementList.hpp:84
RAJA_INLINE void forall_impl(MultiPolicy< Selector, Policies... > p, Iterable &&iter, Body &&body)
Definition: MultiPolicy.hpp:96
Definition: AlignedRangeIndexSetBuilders.cpp:35
camp::idx_seq< ArgumentId... > ArgList
Definition: kernel.hpp:53
RAJA_HOST_DEVICE constexpr RAJA_INLINE auto foldl(Op &&RAJA_UNUSED_ARG(operation), Arg1 &&arg) -> typename detail::foldl_impl< Op, Arg1 >::Ret
Definition: foldl.hpp:104
Header file for statement wrappers and executors.
Segment class representing a contiguous range of typed indices.
Definition: RangeSegment.hpp:100
Definition: Hyperplane.hpp:97
static RAJA_INLINE void exec(Data &data)
Definition: Hyperplane.hpp:164
static RAJA_INLINE void exec(Data &data)
Definition: Hyperplane.hpp:115
Definition: Statement.hpp:48
Definition: Statement.hpp:35
Definition: Operators.hpp:367
Definition: IndexSet.hpp:70
Definition: resource.hpp:48
Definition: Collapse.hpp:35
Definition: Hyperplane.hpp:87
Header file for RAJA type definitions.