Block-Structured AMR Software Framework
AMReX_Scan.H File Reference
#include <AMReX_Config.H>
#include <AMReX_Extension.H>
#include <AMReX_Gpu.H>
#include <AMReX_Arena.H>
#include <cstdint>
#include <numeric>
#include <type_traits>

Go to the source code of this file.

Classes

struct  amrex::Scan::RetSum
 
struct  amrex::Scan::Type::Inclusive
 
struct  amrex::Scan::Type::Exclusive
 
struct  amrex::Scan::detail::STVA< T >
 
struct  amrex::Scan::detail::BlockStatus< T, SINGLE_WORD >
 
struct  amrex::Scan::detail::BlockStatus< T, true >
 
union  amrex::Scan::detail::BlockStatus< T, true >::Data< U >
 
struct  amrex::Scan::detail::BlockStatus< T, false >
 

Namespaces

 amrex
 
 amrex::Scan
 
 amrex::Scan::Type
 
 amrex::Scan::detail
 
 amrex::Gpu
 

Functions

template<typename T , typename N , typename FIN , typename FOUT , typename TYPE , typename M = std::enable_if_t<std::is_integral<N>::value && (std::is_same<std::decay_t<TYPE>,Type::Inclusive>::value || std::is_same<std::decay_t<TYPE>,Type::Exclusive>::value)>>
amrex::Scan::PrefixSum (N n, FIN const &fin, FOUT const &fout, TYPE, RetSum a_ret_sum=retSum)
 
template<typename N , typename T , typename M = std::enable_if_t<std::is_integral<N>::value>>
amrex::Scan::InclusiveSum (N n, T const *in, T *out, RetSum a_ret_sum=retSum)
 
template<typename N , typename T , typename M = std::enable_if_t<std::is_integral<N>::value>>
amrex::Scan::ExclusiveSum (N n, T const *in, T *out, RetSum a_ret_sum=retSum)
 
template<class InIter , class OutIter >
OutIter amrex::Gpu::inclusive_scan (InIter begin, InIter end, OutIter result)
 
template<class InIter , class OutIter >
OutIter amrex::Gpu::exclusive_scan (InIter begin, InIter end, OutIter result)
 

Variables

static constexpr RetSum amrex::Scan::retSum {true}
 
static constexpr RetSum amrex::Scan::noRetSum {false}
 
static constexpr struct amrex::Scan::Type::Inclusive amrex::Scan::Type::inclusive
 
static constexpr struct amrex::Scan::Type::Exclusive amrex::Scan::Type::exclusive