Block-Structured AMR Software Framework
AMReX_Reduce.H File Reference
#include <AMReX_Config.H>
#include <AMReX_Gpu.H>
#include <AMReX_Arena.H>
#include <AMReX_OpenMP.H>
#include <AMReX_MFIter.H>
#include <AMReX_ValLocPair.H>
#include <algorithm>
#include <functional>
#include <limits>

Go to the source code of this file.

Classes

struct  amrex::ReduceOpSum
 
struct  amrex::ReduceOpMin
 
struct  amrex::ReduceOpMax
 
struct  amrex::ReduceOpLogicalAnd
 
struct  amrex::ReduceOpLogicalOr
 
class  amrex::ReduceData< Ts >
 
struct  amrex::Reduce::detail::iterate_box
 
struct  amrex::Reduce::detail::iterate_box_comp
 
class  amrex::ReduceOps< Ps >
 

Namespaces

 amrex
 
 amrex::Reduce
 
 amrex::Reduce::detail
 

Functions

template<std::size_t I, typename T , typename P >
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void amrex::Reduce::detail::for_each_parallel (T &d, T const &s)
 
template<std::size_t I, typename T , typename P , typename P1 , typename... Ps>
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void amrex::Reduce::detail::for_each_parallel (T &d, T const &s)
 
template<std::size_t I, typename T , typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void amrex::Reduce::detail::for_each_local (T &d, T const &s)
 
template<std::size_t I, typename T , typename P , typename P1 , typename... Ps>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void amrex::Reduce::detail::for_each_local (T &d, T const &s)
 
template<std::size_t I, typename T , typename P >
AMREX_GPU_HOST_DEVICE constexpr AMREX_FORCE_INLINE void amrex::Reduce::detail::for_each_init (T &t)
 
template<std::size_t I, typename T , typename P , typename P1 , typename... Ps>
AMREX_GPU_HOST_DEVICE constexpr AMREX_FORCE_INLINE void amrex::Reduce::detail::for_each_init (T &t)
 
template<typename F >
AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto amrex::Reduce::detail::call_f (F const &f, int i, int j, int k, IndexType) noexcept -> decltype(f(0, 0, 0))
 
template<typename I , typename F , typename T , typename... Ps, std::enable_if_t< std::is_same< iterate_box, I >::value, int > = 0>
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void amrex::Reduce::detail::mf_call_f (F const &f, int ibox, int i, int j, int k, int, T &r) noexcept
 
template<typename T , typename N , typename M = std::enable_if_t<std::is_integral<N>::value>>
amrex::Reduce::Sum (N n, T const *v, T init_val=0)
 
template<typename T , typename N , typename F , typename M = std::enable_if_t<std::is_integral<N>::value>>
amrex::Reduce::Sum (N n, F const &f, T init_val=0)
 
template<typename T , typename N , typename M = std::enable_if_t<std::is_integral<N>::value>>
amrex::Reduce::Min (N n, T const *v, T init_val=std::numeric_limits< T >::max())
 
template<typename T , typename N , typename F , typename M = std::enable_if_t<std::is_integral<N>::value>>
amrex::Reduce::Min (N n, F const &f, T init_val=std::numeric_limits< T >::max())
 
template<typename T , typename N , typename M = std::enable_if_t<std::is_integral<N>::value>>
amrex::Reduce::Max (N n, T const *v, T init_val=std::numeric_limits< T >::lowest())
 
template<typename T , typename N , typename F , typename M = std::enable_if_t<std::is_integral<N>::value>>
amrex::Reduce::Max (N n, F const &f, T init_val=std::numeric_limits< T >::lowest())
 
template<typename T , typename N , typename M = std::enable_if_t<std::is_integral<N>::value>>
std::pair< T, T > amrex::Reduce::MinMax (N n, T const *v)
 
template<typename T , typename N , typename F , typename M = std::enable_if_t<std::is_integral<N>::value>>
std::pair< T, T > amrex::Reduce::MinMax (N n, F const &f)
 
template<typename T , typename N , typename P , typename M = std::enable_if_t<std::is_integral<N>::value>>
bool amrex::Reduce::AnyOf (N n, T const *v, P const &pred)
 
template<typename P >
bool amrex::Reduce::AnyOf (Box const &box, P const &pred)
 
template<typename... Ts, typename... Ps>
constexpr AMREX_GPU_HOST_DEVICE GpuTuple< Ts... > amrex::IdentityTuple (GpuTuple< Ts... >, ReduceOps< Ps... >) noexcept
 Return a GpuTuple containing the identity element for each operation in ReduceOps. For example 0, +inf and -inf for ReduceOpSum, ReduceOpMin and ReduceOpMax respectively. More...
 
template<typename... Ts, typename... Ps>
constexpr AMREX_GPU_HOST_DEVICE GpuTuple< Ts... > amrex::IdentityTuple (GpuTuple< Ts... >, TypeList< Ps... >) noexcept
 Return a GpuTuple containing the identity element for each ReduceOp in TypeList. For example 0, +inf and -inf for ReduceOpSum, ReduceOpMin and ReduceOpMax respectively. More...