vector_op.h File Reference
#include <TiledArray/config.h>
#include <TiledArray/external/madness.h>
#include <TiledArray/type_traits.h>
Include dependency graph for vector_op.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  TiledArray::math::VectorOpUnwind< 0ul >
 Vector loop unwind helper class. More...
 
struct  TiledArray::math::VectorOpUnwind< N >
 Vector loop unwind helper class. More...
 
class  TiledArray::math::Block< T >
 

Namespaces

 TiledArray
 
 TiledArray::math
 

Macros

#define TILEDARRAY_LOOP_UNWIND   ::TiledArray::math::LoopUnwind::value
 

Typedefs

typedef std::integral_constant< std::size_t, TILEDARRAY_CACHELINE_SIZE/sizeof(double)> TiledArray::math::LoopUnwind
 
typedef std::integral_constant< std::size_t, ~std::size_t(TILEDARRAY_LOOP_UNWIND - 1ul)> TiledArray::math::index_mask
 
typedef VectorOpUnwind< TILEDARRAY_LOOP_UNWIND - 1 > TiledArray::math::VecOpUnwindN
 

Functions

template<typename Op , typename Result , typename... Args>
TILEDARRAY_FORCE_INLINE void TiledArray::math::for_each_block (Op &&op, Result *const result, const Args *const ... args)
 
template<typename Op , typename Result , typename... Args>
TILEDARRAY_FORCE_INLINE void TiledArray::math::for_each_block (Op &&op, Block< Result > &result, Block< Args > &&... args)
 
template<typename Op , typename Result , typename... Args>
TILEDARRAY_FORCE_INLINE void TiledArray::math::for_each_block_n (Op &&op, const std::size_t n, Result *MADNESS_RESTRICT const result, const Args *MADNESS_RESTRICT const ... args)
 
template<typename Op , typename Result , typename... Args>
TILEDARRAY_FORCE_INLINE std::enable_if<(sizeof...(Args) >=0)>::type TiledArray::math::for_each_block_ptr (Op &&op, Result *const result, const Args *const ... args)
 
template<typename Op , typename Result , typename... Args>
TILEDARRAY_FORCE_INLINE std::enable_if<(sizeof...(Args) > 0)>::type TiledArray::math::for_each_block_ptr (Op &&op, Result *const result, Block< Args > &&... args)
 
template<typename Op , typename Result , typename... Args>
TILEDARRAY_FORCE_INLINE void TiledArray::math::for_each_block_ptr_n (Op &&op, const std::size_t n, Result *MADNESS_RESTRICT const result, const Args *MADNESS_RESTRICT const ... args)
 
template<typename Op , typename Result , typename... Args>
TILEDARRAY_FORCE_INLINE void TiledArray::math::reduce_block (Op &&op, Result &result, const Args *const ... args)
 
template<typename Op , typename Result , typename... Args>
TILEDARRAY_FORCE_INLINE void TiledArray::math::reduce_block (Op &&op, Result &result, Block< Args > &&... args)
 
template<typename Op , typename Result , typename... Args>
TILEDARRAY_FORCE_INLINE void TiledArray::math::reduce_block_n (Op &&op, const std::size_t n, Result &MADNESS_RESTRICT result, const Args *MADNESS_RESTRICT const ... args)
 
template<typename Result , typename Arg >
TILEDARRAY_FORCE_INLINE void TiledArray::math::copy_block (Result *const result, const Arg *const arg)
 
template<typename Arg , typename Result >
TILEDARRAY_FORCE_INLINE void TiledArray::math::copy_block_n (std::size_t n, Result *const result, const Arg *const arg)
 
template<typename Arg , typename Result >
TILEDARRAY_FORCE_INLINE void TiledArray::math::scatter_block (Result *const result, const std::size_t stride, const Arg *const arg)
 
template<typename Result , typename Arg >
TILEDARRAY_FORCE_INLINE void TiledArray::math::scatter_block_n (const std::size_t n, Result *result, const std::size_t stride, const Arg *const arg)
 
template<typename Result , typename Arg >
TILEDARRAY_FORCE_INLINE void TiledArray::math::gather_block (Result *const result, const Arg *const arg, const std::size_t stride)
 
template<typename Arg , typename Result >
TILEDARRAY_FORCE_INLINE void TiledArray::math::gather_block_n (const std::size_t n, Result *const result, const Arg *const arg, const std::size_t stride)
 
template<typename Op , typename Result , typename... Args, typename std::enable_if< std::is_void< typename std::result_of< Op(Result &, Args...)>::type >::value >::type * = nullptr>
void TiledArray::math::inplace_vector_op_serial (Op &&op, const std::size_t n, Result *const result, const Args *const ... args)
 
template<typename Op , typename Result , typename... Args, typename std::enable_if< std::is_void< typename std::result_of< Op(Result &, Args...)>::type >::value >::type * = nullptr>
void TiledArray::math::inplace_vector_op (Op &&op, const std::size_t n, Result *const result, const Args *const ... args)
 
template<typename Op , typename Result , typename... Args, typename std::enable_if<!std::is_void< typename std::result_of< Op(Args...)>::type >::value >::type * = nullptr>
void TiledArray::math::vector_op_serial (Op &&op, const std::size_t n, Result *const result, const Args *const ... args)
 
template<typename Op , typename Result , typename... Args, typename std::enable_if<!std::is_void< typename std::result_of< Op(Args...)>::type >::value >::type * = nullptr>
void TiledArray::math::vector_op (Op &&op, const std::size_t n, Result *const result, const Args *const ... args)
 
template<typename Op , typename Result , typename... Args>
void TiledArray::math::vector_ptr_op_serial (Op &&op, const std::size_t n, Result *const result, const Args *const ... args)
 
template<typename Op , typename Result , typename... Args>
void TiledArray::math::vector_ptr_op (Op &&op, const std::size_t n, Result *const result, const Args *const ... args)
 
template<typename Op , typename Result , typename... Args>
void TiledArray::math::reduce_op_serial (Op &&op, const std::size_t n, Result &result, const Args *const ... args)
 
template<typename ReduceOp , typename JoinOp , typename Result , typename... Args>
void TiledArray::math::reduce_op (ReduceOp &&reduce_op, JoinOp &&join_op, const Result &identity, const std::size_t n, Result &result, const Args *const ... args)
 
template<typename Arg , typename Result >
std::enable_if<!(std::is_same< Arg, Result >::value &&detail::is_scalar_v< Arg >)>::type TiledArray::math::copy_vector (const std::size_t n, const Arg *const arg, Result *const result)
 
template<typename T >
std::enable_if< detail::is_scalar_v< T > >::type TiledArray::math::copy_vector (const std::size_t n, const T *const arg, T *const result)
 
template<typename Arg , typename Result >
void TiledArray::math::fill_vector (const std::size_t n, const Arg &arg, Result *const result)
 
template<typename Arg , typename Result >
std::enable_if<!(detail::is_scalar_v< Arg > &&detail::is_scalar_v< Result >)>::type TiledArray::math::uninitialized_copy_vector (const std::size_t n, const Arg *const arg, Result *const result)
 
template<typename Arg , typename Result >
std::enable_if< detail::is_scalar_v< Arg > &&detail::is_scalar_v< Result > >::type TiledArray::math::uninitialized_copy_vector (const std::size_t n, const Arg *const arg, Result *const result)
 
template<typename Arg , typename Result >
std::enable_if<!(detail::is_scalar_v< Arg > &&detail::is_scalar_v< Result >)>::type TiledArray::math::uninitialized_fill_vector (const std::size_t n, const Arg &arg, Result *const result)
 
template<typename Arg , typename Result >
std::enable_if< detail::is_scalar_v< Arg > &&detail::is_scalar_v< Result > >::type TiledArray::math::uninitialized_fill_vector (const std::size_t n, const Arg &arg, Result *const result)
 
template<typename Arg >
std::enable_if<!detail::is_scalar_v< Arg > >::type TiledArray::math::destroy_vector (const std::size_t n, Arg *const arg)
 
template<typename Arg >
std::enable_if< detail::is_scalar_v< Arg > >::type TiledArray::math::destroy_vector (const std::size_t, const Arg *const)
 
template<typename Arg , typename Result , typename Op >
std::enable_if<!(detail::is_scalar_v< Arg > &&detail::is_scalar_v< Result >)>::type TiledArray::math::uninitialized_unary_vector_op (const std::size_t n, const Arg *const arg, Result *const result, Op &&op)
 
template<typename Arg , typename Result , typename Op >
std::enable_if< detail::is_scalar_v< Arg > &&detail::is_scalar_v< Result > >::type TiledArray::math::uninitialized_unary_vector_op (const std::size_t n, const Arg *const arg, Result *const result, Op &&op)
 
template<typename Left , typename Right , typename Result , typename Op >
std::enable_if<!(detail::is_scalar_v< Left > &&detail::is_scalar_v< Right > &&detail::is_scalar_v< Result >)>::type TiledArray::math::uninitialized_binary_vector_op (const std::size_t n, const Left *const left, const Right *const right, Result *const result, Op &&op)
 
template<typename Left , typename Right , typename Result , typename Op >
std::enable_if< detail::is_scalar_v< Left > &&detail::is_scalar_v< Right > &&detail::is_scalar_v< Result > >::type TiledArray::math::uninitialized_binary_vector_op (const std::size_t n, const Left *const left, const Right *const right, Result *const result, Op &&op)
 

Macro Definition Documentation

◆ TILEDARRAY_LOOP_UNWIND

#define TILEDARRAY_LOOP_UNWIND   ::TiledArray::math::LoopUnwind::value

Definition at line 40 of file vector_op.h.