TiledArray::math::VectorOpUnwind< N > Struct Template Reference

Documentation

template<std::size_t N>
struct TiledArray::math::VectorOpUnwind< N >

Vector loop unwind helper class.

This object will unwind N steps of a vector operation loop.

Template Parameters
NThe number of steps to unwind

Definition at line 110 of file vector_op.h.

Public Types

typedef VectorOpUnwind< N - 1ul > VectorOpUnwindN1
 

Static Public Member Functions

template<typename Op , typename Result , typename... Args>
static TILEDARRAY_FORCE_INLINE void for_each (Op &&op, Result *MADNESS_RESTRICT const result, const Args *MADNESS_RESTRICT const ... args)
 
template<typename Op , typename Result , typename... Args>
static TILEDARRAY_FORCE_INLINE void for_each_ptr (Op &&op, Result *MADNESS_RESTRICT const result, const Args *MADNESS_RESTRICT const ... args)
 
template<typename Op , typename Result , typename... Args>
static TILEDARRAY_FORCE_INLINE void reduce (Op &&op, Result &MADNESS_RESTRICT result, const Args *MADNESS_RESTRICT const ... args)
 
template<typename Result , typename Arg >
static TILEDARRAY_FORCE_INLINE void scatter (Result *MADNESS_RESTRICT const result, const Arg *MADNESS_RESTRICT const arg, const std::size_t result_stride)
 
template<typename Result , typename Arg >
static TILEDARRAY_FORCE_INLINE void gather (Result *MADNESS_RESTRICT const result, const Arg *MADNESS_RESTRICT const arg, std::size_t arg_stride)
 

Static Public Attributes

static constexpr std::size_t offset = TILEDARRAY_LOOP_UNWIND - N - 1ul
 

Member Typedef Documentation

◆ VectorOpUnwindN1

template<std::size_t N>
typedef VectorOpUnwind<N - 1ul> TiledArray::math::VectorOpUnwind< N >::VectorOpUnwindN1

Definition at line 111 of file vector_op.h.

Member Function Documentation

◆ for_each()

template<std::size_t N>
template<typename Op , typename Result , typename... Args>
static TILEDARRAY_FORCE_INLINE void TiledArray::math::VectorOpUnwind< N >::for_each ( Op &&  op,
Result *MADNESS_RESTRICT const  result,
const Args *MADNESS_RESTRICT const ...  args 
)
inlinestatic

Definition at line 116 of file vector_op.h.

Here is the caller graph for this function:

◆ for_each_ptr()

template<std::size_t N>
template<typename Op , typename Result , typename... Args>
static TILEDARRAY_FORCE_INLINE void TiledArray::math::VectorOpUnwind< N >::for_each_ptr ( Op &&  op,
Result *MADNESS_RESTRICT const  result,
const Args *MADNESS_RESTRICT const ...  args 
)
inlinestatic

Definition at line 124 of file vector_op.h.

Here is the caller graph for this function:

◆ gather()

template<std::size_t N>
template<typename Result , typename Arg >
static TILEDARRAY_FORCE_INLINE void TiledArray::math::VectorOpUnwind< N >::gather ( Result *MADNESS_RESTRICT const  result,
const Arg *MADNESS_RESTRICT const  arg,
std::size_t  arg_stride 
)
inlinestatic

Definition at line 148 of file vector_op.h.

Here is the caller graph for this function:

◆ reduce()

template<std::size_t N>
template<typename Op , typename Result , typename... Args>
static TILEDARRAY_FORCE_INLINE void TiledArray::math::VectorOpUnwind< N >::reduce ( Op &&  op,
Result &MADNESS_RESTRICT  result,
const Args *MADNESS_RESTRICT const ...  args 
)
inlinestatic

Definition at line 132 of file vector_op.h.

Here is the caller graph for this function:

◆ scatter()

template<std::size_t N>
template<typename Result , typename Arg >
static TILEDARRAY_FORCE_INLINE void TiledArray::math::VectorOpUnwind< N >::scatter ( Result *MADNESS_RESTRICT const  result,
const Arg *MADNESS_RESTRICT const  arg,
const std::size_t  result_stride 
)
inlinestatic

Definition at line 140 of file vector_op.h.

Here is the caller graph for this function:

Member Data Documentation

◆ offset

template<std::size_t N>
constexpr std::size_t TiledArray::math::VectorOpUnwind< N >::offset = TILEDARRAY_LOOP_UNWIND - N - 1ul
staticconstexpr

Definition at line 113 of file vector_op.h.


The documentation for this struct was generated from the following file: