RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
Classes | Namespaces | Macros
multi_reduce.hpp File Reference

Base types used in common for RAJA reducer objects. More...

#include "RAJA/pattern/detail/forall.hpp"
#include "RAJA/util/macros.hpp"
#include "RAJA/util/Operators.hpp"
#include "RAJA/util/types.hpp"
#include "RAJA/util/RepeatView.hpp"

Go to the source code of this file.

Classes

struct  RAJA::reduce::detail::BaseMultiReduce< t_MultiReduceData >
 
class  RAJA::reduce::detail::BaseMultiReduceMin< MultiReduceData >
 Min reducer class template. More...
 
struct  RAJA::reduce::detail::BaseMultiReduceMin< MultiReduceData >::reference
 
class  RAJA::reduce::detail::BaseMultiReduceMax< MultiReduceData >
 Max reducer class template. More...
 
struct  RAJA::reduce::detail::BaseMultiReduceMax< MultiReduceData >::reference
 
class  RAJA::reduce::detail::BaseMultiReduceSum< MultiReduceData >
 Sum reducer class template. More...
 
struct  RAJA::reduce::detail::BaseMultiReduceSum< MultiReduceData >::reference
 
class  RAJA::reduce::detail::BaseMultiReduceBitOr< MultiReduceData >
 Bitwise OR reducer class template. More...
 
struct  RAJA::reduce::detail::BaseMultiReduceBitOr< MultiReduceData >::reference
 
class  RAJA::reduce::detail::BaseMultiReduceBitAnd< MultiReduceData >
 Bitwise AND reducer class template. More...
 
struct  RAJA::reduce::detail::BaseMultiReduceBitAnd< MultiReduceData >::reference
 

Namespaces

 RAJA
 
 RAJA::reduce
 
 RAJA::reduce::detail
 

Macros

#define RAJA_DECLARE_MULTI_REDUCER(OP_NAME, OP, POL, DATA)
 
#define RAJA_DECLARE_ALL_MULTI_REDUCERS(POL, DATA)
 

Detailed Description

Base types used in common for RAJA reducer objects.

Macro Definition Documentation

◆ RAJA_DECLARE_MULTI_REDUCER

#define RAJA_DECLARE_MULTI_REDUCER (   OP_NAME,
  OP,
  POL,
  DATA 
)
Value:
template<typename tuning, typename T> \
struct MultiReduce##OP_NAME<POL<tuning>, T> \
: reduce::detail::BaseMultiReduce##OP_NAME< \
DATA<T, RAJA::reduce::OP<T>, tuning>> \
{ \
using policy = POL<tuning>; \
using Base = reduce::detail::BaseMultiReduce##OP_NAME< \
DATA<T, RAJA::reduce::OP<T>, tuning>>; \
using Base::Base; \
using typename Base::value_type; \
using typename Base::reference; \
\
RAJA_SUPPRESS_HD_WARN \
RAJA_HOST_DEVICE \
reference operator[](size_t bin) const { return reference(*this, bin); } \
};

◆ RAJA_DECLARE_ALL_MULTI_REDUCERS

#define RAJA_DECLARE_ALL_MULTI_REDUCERS (   POL,
  DATA 
)
Value:
RAJA_DECLARE_MULTI_REDUCER(Sum, sum, POL, DATA) \
RAJA_DECLARE_MULTI_REDUCER(Min, min, POL, DATA) \
RAJA_DECLARE_MULTI_REDUCER(Max, max, POL, DATA) \
RAJA_DECLARE_MULTI_REDUCER(BitOr, or_bit, POL, DATA) \
RAJA_DECLARE_MULTI_REDUCER(BitAnd, and_bit, POL, DATA)
RAJA_HOST_DEVICE constexpr RAJA_INLINE Result min(Args... args)
Definition: foldl.hpp:161
RAJA_HOST_DEVICE constexpr RAJA_INLINE Result sum(Args... args)
Definition: foldl.hpp:143
RAJA_HOST_DEVICE constexpr RAJA_INLINE Result max(Args... args)
Definition: foldl.hpp:155
#define RAJA_DECLARE_MULTI_REDUCER(OP_NAME, OP, POL, DATA)
Definition: multi_reduce.hpp:31