10 #ifndef NEW_REDUCE_HPP
11 #define NEW_REDUCE_HPP
13 #include <type_traits>
19 #if defined(RAJA_CUDA_ACTIVE)
21 #elif defined(RAJA_HIP_ACTIVE)
23 #elif defined(RAJA_SYCL_ACTIVE)
33 template<
typename T,
typename IndexType>
61 #if defined(RAJA_CUDA_ACTIVE)
62 using device_mem_pool_t = RAJA::cuda::device_mempool_type;
63 #elif defined(RAJA_HIP_ACTIVE)
64 using device_mem_pool_t = RAJA::hip::device_mempool_type;
65 #elif defined(RAJA_SYCL_ACTIVE)
66 using device_mem_pool_t = RAJA::sycl::device_mempool_type;
78 template<
typename Op,
typename T,
typename VOp>
114 #if defined(RAJA_CUDA_ACTIVE) || defined(RAJA_HIP_ACTIVE) || \
115 defined(RAJA_SYCL_ACTIVE)
119 unsigned int* device_count =
nullptr;
129 return camp::make_tuple(&
m_valop);
143 template<
typename,
typename,
typename>
class Op>
151 using op = Op<value_type, value_type, value_type>;
161 target_value(&target_in->val),
162 target_index(&target_in->loc)
170 target_value(data_in),
171 target_index(index_in)
194 value_type temp(*target_value, *target_index);
195 temp =
op {}(temp, in);
196 *target_value = temp.
val;
197 *target_index = temp.
loc;
203 #if defined(RAJA_CUDA_ACTIVE) || defined(RAJA_HIP_ACTIVE) || \
204 defined(RAJA_SYCL_ACTIVE)
208 unsigned int* device_count =
nullptr;
220 return camp::make_tuple(&
m_valop);
230 template<
template<
typename,
typename,
typename>
class Op,
typename T>
237 template<
template<
typename,
typename,
typename>
class Op,
249 template<
template<
typename,
typename,
typename>
class Op,
Header file defining prototypes for routines used to manage memory for CUDA reductions and other oper...
Header file defining prototypes for routines used to manage memory for HIP reductions and other opera...
Header file defining prototypes for routines used to manage memory for SYCL reductions and other oper...
Header file for common RAJA internal definitions.
Pointer class specialized for Struct of Array data layout allocated via RAJA basic_mempools.
Definition: SoAPtr.hpp:52
Header containing helper type traits for work with Reducers.
#define RAJA_HOST_DEVICE
Definition: macros.hpp:65
constexpr auto Reduce(T *target)
Definition: reducer.hpp:231
constexpr auto ReduceLoc(T *target, IndexType *index)
Definition: reducer.hpp:252
Definition: AlignedRangeIndexSetBuilders.cpp:35
Definition: params_base.hpp:20
index_type loc
Definition: params_base.hpp:61
value_type val
Definition: params_base.hpp:60
Definition: params_base.hpp:66
Definition: params_base.hpp:282
Definition: params_base.hpp:266
camp::tuple<> ARG_TUP_T
Definition: params_base.hpp:270
typename ARG_TUP_T::TList ARG_LIST_T
Definition: params_base.hpp:272
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::Reducer Reducer()=default
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::operator= Reducer & operator=(Reducer const &)=default
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::op Op< value_type, value_type, value_type > op
Definition: reducer.hpp:151
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::Reducer RAJA_HOST_DEVICE Reducer(value_type *target_in)
Definition: reducer.hpp:159
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::combineTarget RAJA_HOST_DEVICE void combineTarget(value_type in)
Definition: reducer.hpp:191
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::Reducer Reducer(Reducer const &)=default
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::Reducer RAJA_HOST_DEVICE Reducer(target_value_type *data_in, target_index_type *index_in)
Definition: reducer.hpp:167
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::target_value_type T target_value_type
Definition: reducer.hpp:148
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::Reducer Reducer(Reducer &&)=default
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::get_lambda_arg_tup RAJA_HOST_DEVICE ARG_TUP_T get_lambda_arg_tup()
Definition: reducer.hpp:218
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::operator= Reducer & operator=(Reducer &&)=default
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::getVal RAJA_HOST_DEVICE value_type & getVal()
Definition: reducer.hpp:201
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::get_lambda_arg RAJA_HOST_DEVICE ARG_T * get_lambda_arg()
Definition: reducer.hpp:216
RAJA::expt::detail::Reducer< Op< ValLoc< T, I >, ValLoc< T, I >, ValLoc< T, I > >, ValLoc< T, I >, ValOp< ValLoc< T, I >, Op > >::target_index_type I target_index_type
Definition: reducer.hpp:149
Definition: reducer.hpp:80
Reducer & operator=(Reducer const &)=default
VOp m_valop
Definition: reducer.hpp:98
Op op
Definition: reducer.hpp:81
RAJA_HOST_DEVICE value_type & getVal()
Definition: reducer.hpp:112
RAJA_HOST_DEVICE Reducer(value_type *target_in)
Definition: reducer.hpp:87
value_type * target
Definition: reducer.hpp:101
Reducer(Reducer &&)=default
Reducer(Reducer const &)=default
RAJA_HOST_DEVICE void combineTarget(value_type in)
Definition: reducer.hpp:105
Reducer & operator=(Reducer &&)=default
T value_type
Definition: reducer.hpp:82
RAJA_HOST_DEVICE ARG_T * get_lambda_arg()
Definition: reducer.hpp:132
static constexpr size_t num_lambda_args
Definition: reducer.hpp:135
RAJA_HOST_DEVICE ARG_TUP_T get_lambda_arg_tup()
Definition: reducer.hpp:127
RAJA_INLINE static constexpr RAJA_HOST_DEVICE RAJA::expt::ValLoc< T, IndexType > max()
Definition: reducer.hpp:43
RAJA_INLINE static constexpr RAJA_HOST_DEVICE RAJA::expt::ValLoc< T, IndexType > min()
Definition: reducer.hpp:37
Definition: Operators.hpp:250