TiledArray
0.7.0
|
Classes | |
struct | BinaryReduceWrapper |
Binary reduction wrapper class that handles lazy tile evaluation. More... | |
struct | BinaryReduceWrapper< typename Op::first_argument_type, typename Op::second_argument_type, Op > |
Binary reduction operation wrapper. More... | |
class | Block |
class | GemmHelper |
Contraction to *GEMM helper. More... | |
class | GemmTask |
class | MatrixBlockTask |
class | OuterVectorOpUnwind |
Outer algorithm automatic loop unwinding. More... | |
class | OuterVectorOpUnwind< 0 > |
class | PartialReduceUnwind |
Partial reduce algorithm automatic loop unwinding. More... | |
class | PartialReduceUnwind< 0 > |
class | TransposeUnwind |
Partial transpose algorithm automatic loop unwinding. More... | |
class | TransposeUnwind< 0 > |
class | UnaryReduceWrapper |
Unary reduction wrapper class that handles lazy tile evaluation. More... | |
class | UnaryReduceWrapper< typename Op::argument_type, Op > |
Unary reduction wrapper class that handles lazy tile evaluation. More... | |
struct | VectorOpUnwind |
Vector loop unwind helper class. More... | |
struct | VectorOpUnwind< 0ul > |
Vector loop unwind helper class. More... | |
Typedefs | |
typedef OuterVectorOpUnwind< TILEDARRAY_LOOP_UNWIND - 1 > | OuterVectorOpUnwindN |
typedef PartialReduceUnwind< TILEDARRAY_LOOP_UNWIND - 1 > | PartialReduceUnwindN |
typedef TransposeUnwind< TILEDARRAY_LOOP_UNWIND - 1 > | TransposeUnwindN |
typedef std::integral_constant< std::size_t, TILEDARRAY_CACHELINE_SIZE/sizeof(double)> | LoopUnwind |
typedef std::integral_constant< std::size_t, ~std::size_t(TILEDARRAY_LOOP_UNWIND - 1ul)> | index_mask |
typedef VectorOpUnwind< TILEDARRAY_LOOP_UNWIND - 1 > | VecOpUnwindN |
Functions | |
template<typename S1 , typename T1 , typename T2 , typename S2 , typename T3 > | |
void | gemm (madness::cblas::CBLAS_TRANSPOSE op_a, madness::cblas::CBLAS_TRANSPOSE op_b, const integer m, const integer n, const integer k, const S1 alpha, const T1 *a, const integer lda, const T2 *b, const integer ldb, const S2 beta, T3 *c, const integer ldc) |
void | gemm (madness::cblas::CBLAS_TRANSPOSE op_a, madness::cblas::CBLAS_TRANSPOSE op_b, const integer m, const integer n, const integer k, const float alpha, const float *a, const integer lda, const float *b, const integer ldb, const float beta, float *c, const integer ldc) |
void | gemm (madness::cblas::CBLAS_TRANSPOSE op_a, madness::cblas::CBLAS_TRANSPOSE op_b, const integer m, const integer n, const integer k, const double alpha, const double *a, const integer lda, const double *b, const integer ldb, const double beta, double *c, const integer ldc) |
void | gemm (madness::cblas::CBLAS_TRANSPOSE op_a, madness::cblas::CBLAS_TRANSPOSE op_b, const integer m, const integer n, const integer k, const std::complex< float > alpha, const std::complex< float > *a, const integer lda, const std::complex< float > *b, const integer ldb, const std::complex< float > beta, std::complex< float > *c, const integer ldc) |
void | gemm (madness::cblas::CBLAS_TRANSPOSE op_a, madness::cblas::CBLAS_TRANSPOSE op_b, const integer m, const integer n, const integer k, const std::complex< double > alpha, const std::complex< double > *a, const integer lda, const std::complex< double > *b, const integer ldb, const std::complex< double > beta, std::complex< double > *c, const integer ldc) |
template<typename T , typename U > | |
std::enable_if< detail::is_numeric< T >::value >::type | scale (const integer n, const T alpha, U *x) |
void | scale (const integer n, const float alpha, float *x) |
void | scale (const integer n, const double alpha, double *x) |
void | scale (const integer n, const std::complex< float > alpha, std::complex< float > *x) |
void | scale (const integer n, const std::complex< double > alpha, std::complex< double > *x) |
void | scale (const integer n, const float alpha, std::complex< float > *x) |
void | scale (const integer n, const double alpha, std::complex< double > *x) |
template<typename T , typename U > | |
T | dot (const integer n, const T *x, const U *y) |
float | dot (integer n, const float *x, const float *y) |
double | dot (integer n, const double *x, const double *y) |
std::complex< float > | dot (integer n, const std::complex< float > *x, const std::complex< float > *y) |
std::complex< double > | dot (integer n, const std::complex< double > *x, const std::complex< double > *y) |
template<typename T > | |
Eigen::Map< const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor >, Eigen::AutoAlign > | eigen_map (const T *t, const std::size_t m, const std::size_t n) |
Construct a const Eigen::Map object for a given Tensor object. More... | |
template<typename T > | |
Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor >, Eigen::AutoAlign > | eigen_map (T *t, const std::size_t m, const std::size_t n) |
Construct an Eigen::Map object for a given Tensor object. More... | |
template<typename T > | |
Eigen::Map< const Eigen::Matrix< T, Eigen::Dynamic, 1 >, Eigen::AutoAlign > | eigen_map (const T *t, const std::size_t n) |
Construct a const Eigen::Map object for a given Tensor object. More... | |
template<typename T > | |
Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, 1 >, Eigen::AutoAlign > | eigen_map (T *t, const std::size_t n) |
Construct an Eigen::Map object for a given Tensor object. More... | |
template<typename X , typename Y , typename A , typename Op > | |
void | outer_fill (const std::size_t m, const std::size_t n, const X *const x, const Y *const y, A *a, const Op &op) |
Compute and store outer of x and y in a . More... | |
template<typename X , typename Y , typename A , typename Op > | |
void | outer (const std::size_t m, const std::size_t n, const X *const x, const Y *const y, A *a, const Op &op) |
Compute the outer of x and y to modify a . More... | |
template<typename X , typename Y , typename A , typename B , typename Op > | |
void | outer_fill (const std::size_t m, const std::size_t n, const X *MADNESS_RESTRICT const x, const Y *MADNESS_RESTRICT const y, const A *MADNESS_RESTRICT a, B *MADNESS_RESTRICT b, const Op &op) |
Compute the outer of x , y , and a , and store the result in b . More... | |
template<typename Left , typename Right , typename Result , typename Op > | |
void | row_reduce (const std::size_t m, const std::size_t n, const Left *MADNESS_RESTRICT const left, const Right *MADNESS_RESTRICT const right, Result *MADNESS_RESTRICT const result, const Op &op) |
Reduce the rows of a matrix. More... | |
template<typename Arg , typename Result , typename Op > | |
void | row_reduce (const std::size_t m, const std::size_t n, const Arg *MADNESS_RESTRICT const arg, Result *MADNESS_RESTRICT const result, const Op &op) |
Reduce the rows of a matrix. More... | |
template<typename Left , typename Right , typename Result , typename Op > | |
void | col_reduce (const std::size_t m, const std::size_t n, const Left *MADNESS_RESTRICT const left, const Right *MADNESS_RESTRICT const right, Result *MADNESS_RESTRICT const result, const Op &op) |
Reduce the columns of a matrix. More... | |
template<typename Arg , typename Result , typename Op > | |
void | col_reduce (const std::size_t m, const std::size_t n, const Arg *MADNESS_RESTRICT const arg, Result *MADNESS_RESTRICT const result, const Op &op) |
Reduce the columns of a matrix. More... | |
template<typename InputOp , typename OutputOp , typename Result , typename... Args> | |
TILEDARRAY_FORCE_INLINE void | transpose_block (InputOp &&input_op, OutputOp &&output_op, const std::size_t result_stride, Result *const result, const std::size_t arg_stride, const Args *const ... args) |
template<typename InputOp , typename OutputOp , typename Result , typename... Args> | |
TILEDARRAY_FORCE_INLINE void | transpose_block (InputOp &&input_op, OutputOp &&output_op, const std::size_t m, const std::size_t n, const std::size_t result_stride, Result *MADNESS_RESTRICT const result, const std::size_t arg_stride, const Args *MADNESS_RESTRICT const ... args) |
template<typename InputOp , typename OutputOp , typename Result , typename... Args> | |
void | transpose (InputOp &&input_op, OutputOp &&output_op, const std::size_t m, const std::size_t n, const std::size_t result_stride, Result *result, const std::size_t arg_stride, const Args *const ... args) |
Matrix transpose and initialization. More... | |
template<typename Op , typename Result , typename... Args> | |
TILEDARRAY_FORCE_INLINE void | for_each_block (Op &&op, Result *const result, const Args *const ... args) |
template<typename Op , typename Result , typename... Args> | |
TILEDARRAY_FORCE_INLINE void | for_each_block (Op &&op, Block< Result > &result, Block< Args > &&... args) |
template<typename Op , typename Result , typename... Args> | |
TILEDARRAY_FORCE_INLINE void | 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 | 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 | for_each_block_ptr (Op &&op, Result *const result, Block< Args > &&... args) |
template<typename Op , typename Result , typename... Args> | |
TILEDARRAY_FORCE_INLINE void | 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 | reduce_block (Op &&op, Result &result, const Args *const ... args) |
template<typename Op , typename Result , typename... Args> | |
TILEDARRAY_FORCE_INLINE void | reduce_block (Op &&op, Result &result, Block< Args > &&... args) |
template<typename Op , typename Result , typename... Args> | |
TILEDARRAY_FORCE_INLINE void | 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 | copy_block (Result *const result, const Arg *const arg) |
template<typename Arg , typename Result > | |
TILEDARRAY_FORCE_INLINE void | copy_block_n (std::size_t n, Result *const result, const Arg *const arg) |
template<typename Arg , typename Result > | |
TILEDARRAY_FORCE_INLINE void | scatter_block (Result *const result, const std::size_t stride, const Arg *const arg) |
template<typename Result , typename Arg > | |
TILEDARRAY_FORCE_INLINE void | 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 | gather_block (Result *const result, const Arg *const arg, const std::size_t stride) |
template<typename Arg , typename Result > | |
TILEDARRAY_FORCE_INLINE void | 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 | 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 | 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 | 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 | vector_op (Op &&op, const std::size_t n, Result *const result, const Args *const ... args) |
template<typename Op , typename Result , typename... Args> | |
void | 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 | 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 | 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 | 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 &&std::is_scalar< Arg >::value)>::type | copy_vector (const std::size_t n, const Arg *const arg, Result *const result) |
template<typename T > | |
std::enable_if< std::is_scalar< T >::value >::type | copy_vector (const std::size_t n, const T *const arg, T *const result) |
template<typename Arg , typename Result > | |
void | fill_vector (const std::size_t n, const Arg &arg, Result *const result) |
template<typename Arg , typename Result > | |
std::enable_if<!(std::is_scalar< Arg >::value &&std::is_scalar< Result >::value)>::type | uninitialized_copy_vector (const std::size_t n, const Arg *const arg, Result *const result) |
template<typename Arg , typename Result > | |
std::enable_if< std::is_scalar< Arg >::value &&std::is_scalar< Result >::value >::type | uninitialized_copy_vector (const std::size_t n, const Arg *const arg, Result *const result) |
template<typename Arg , typename Result > | |
std::enable_if<!(std::is_scalar< Arg >::value &&std::is_scalar< Result >::value)>::type | uninitialized_fill_vector (const std::size_t n, const Arg &arg, Result *const result) |
template<typename Arg , typename Result > | |
std::enable_if< std::is_scalar< Arg >::value &&std::is_scalar< Result >::value >::type | uninitialized_fill_vector (const std::size_t n, const Arg &arg, Result *const result) |
template<typename Arg > | |
std::enable_if<! std::is_scalar< Arg >::value >::type | destroy_vector (const std::size_t n, Arg *const arg) |
template<typename Arg > | |
std::enable_if< std::is_scalar< Arg >::value >::type | destroy_vector (const std::size_t, const Arg *const) |
template<typename Arg , typename Result , typename Op > | |
std::enable_if<!(std::is_scalar< Arg >::value &&std::is_scalar< Result >::value)>::type | 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< std::is_scalar< Arg >::value &&std::is_scalar< Result >::value >::type | 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<!(std::is_scalar< Left >::value &&std::is_scalar< Right >::value &&std::is_scalar< Result >::value)>::type | 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< std::is_scalar< Left >::value &&std::is_scalar< Right >::value &&std::is_scalar< Result >::value >::type | uninitialized_binary_vector_op (const std::size_t n, const Left *const left, const Right *const right, Result *const result, Op &&op) |
typedef std::integral_constant<std::size_t, ~std::size_t(TILEDARRAY_LOOP_UNWIND - 1ul)> TiledArray::math::index_mask |
Definition at line 44 of file vector_op.h.
typedef std::integral_constant<std::size_t, TILEDARRAY_CACHELINE_SIZE / sizeof(double)> TiledArray::math::LoopUnwind |
Definition at line 43 of file vector_op.h.
Definition at line 187 of file partial_reduce.h.
Definition at line 108 of file transpose.h.
Definition at line 147 of file vector_op.h.
void TiledArray::math::col_reduce | ( | const std::size_t | m, |
const std::size_t | n, | ||
const Left *MADNESS_RESTRICT const | left, | ||
const Right *MADNESS_RESTRICT const | right, | ||
Result *MADNESS_RESTRICT const | result, | ||
const Op & | op | ||
) |
Reduce the columns of a matrix.
op(result[j], left[i][j], right[i])
.
Left | The left-hand vector element type |
Right | The right-hand vector element type |
Result | The a matrix element type |
Op | The operator type |
[in] | m | The number of rows in left |
[in] | n | The size of the right-hand vector |
[in] | left | An m*n matrix |
[in] | right | A vector of size m |
[out] | result | The result vector of size n |
[in] | op | The operation that will reduce the columns of left |
Definition at line 336 of file partial_reduce.h.
void TiledArray::math::col_reduce | ( | const std::size_t | m, |
const std::size_t | n, | ||
const Arg *MADNESS_RESTRICT const | arg, | ||
Result *MADNESS_RESTRICT const | result, | ||
const Op & | op | ||
) |
Reduce the columns of a matrix.
op(result[j], arg[i][j])
.
Arg | The argument vector element type |
Result | The a matrix element type |
Op | The operator type |
[in] | m | The number of rows in left |
[in] | n | The size of the right-hand vector |
[in] | arg | An m*n matrix |
[out] | result | The result vector of size n |
[in] | op | The operation that will reduce the columns of left |
Definition at line 408 of file partial_reduce.h.
TILEDARRAY_FORCE_INLINE void TiledArray::math::copy_block | ( | Result *const | result, |
const Arg *const | arg | ||
) |
Definition at line 220 of file vector_op.h.
TILEDARRAY_FORCE_INLINE void TiledArray::math::copy_block_n | ( | std::size_t | n, |
Result *const | result, | ||
const Arg *const | arg | ||
) |
Definition at line 227 of file vector_op.h.
std::enable_if<! (std::is_same<Arg, Result>::value && std::is_scalar<Arg>::value)>::type TiledArray::math::copy_vector | ( | const std::size_t | n, |
const Arg *const | arg, | ||
Result *const | result | ||
) |
Definition at line 659 of file vector_op.h.
|
inline |
Definition at line 675 of file vector_op.h.
std::enable_if<! std::is_scalar<Arg>::value>::type TiledArray::math::destroy_vector | ( | const std::size_t | n, |
Arg *const | arg | ||
) |
|
inline |
Definition at line 727 of file vector_op.h.
T TiledArray::math::dot | ( | const integer | n, |
const T * | x, | ||
const U * | y | ||
) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Construct a const Eigen::Map object for a given Tensor object.
T | The element type |
t | The buffer pointer |
m | The number of rows in the result matrix |
n | The number of columns in the result matrix |
tensor
TiledArray::Exception | When m * n is not equal to tensor size |
Definition at line 51 of file eigen.h.
|
inline |
Construct an Eigen::Map object for a given Tensor object.
T | The tensor element type |
t | The tensor object |
m | The number of rows in the result matrix |
n | The number of columns in the result matrix |
tensor
TiledArray::Exception | When m * n is not equal to tensor size |
|
inline |
Construct a const Eigen::Map object for a given Tensor object.
T | The element type |
t | The vector pointer |
n | The number of elements in the result matrix |
tensor
TiledArray::Exception | When n is not equal to tensor size |
|
inline |
Construct an Eigen::Map object for a given Tensor object.
T | The element type |
t | The vector pointer |
n | The number of elements in the result matrix |
tensor
TiledArray::Exception | When m * n is not equal to tensor size |
void TiledArray::math::fill_vector | ( | const std::size_t | n, |
const Arg & | arg, | ||
Result *const | result | ||
) |
Definition at line 680 of file vector_op.h.
TILEDARRAY_FORCE_INLINE void TiledArray::math::for_each_block | ( | Op && | op, |
Result *const | result, | ||
const Args *const ... | args | ||
) |
Definition at line 152 of file vector_op.h.
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 | ||
) |
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 | ||
) |
Definition at line 175 of file vector_op.h.
TILEDARRAY_FORCE_INLINE std::enable_if<(sizeof...(Args) > 0)>::type TiledArray::math::for_each_block_ptr | ( | Op && | op, |
Result *const | result, | ||
Block< Args > &&... | 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 | ||
) |
TILEDARRAY_FORCE_INLINE void TiledArray::math::gather_block | ( | Result *const | result, |
const Arg *const | arg, | ||
const std::size_t | stride | ||
) |
Definition at line 250 of file vector_op.h.
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 | ||
) |
Definition at line 256 of file vector_op.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
void TiledArray::math::inplace_vector_op | ( | Op && | op, |
const std::size_t | n, | ||
Result *const | result, | ||
const Args *const ... | args | ||
) |
Definition at line 397 of file vector_op.h.
void TiledArray::math::inplace_vector_op_serial | ( | Op && | op, |
const std::size_t | n, | ||
Result *const | result, | ||
const Args *const ... | args | ||
) |
Definition at line 344 of file vector_op.h.
void TiledArray::math::outer | ( | const std::size_t | m, |
const std::size_t | n, | ||
const X *const | x, | ||
const Y *const | y, | ||
A * | a, | ||
const Op & | op | ||
) |
Compute the outer of x
and y
to modify a
.
Compute op(a[i][j], x[i], y[j])
for each i
and j
pair, where a
[i][j] is modified by op
.
X | The left hand vector element type |
Y | The right-hand vector element type |
A | The a matrix element type |
Op | The operation that will compute outer product elements |
[in] | m | The size of the left-hand vector |
[in] | n | The size of the right-hand vector |
[in] | x | The left-hand vector |
[in] | y | The right-hand vector |
[in,out] | a | The result matrix of size m*n |
[in] | op | The operation used to generate the result |
Definition at line 248 of file outer.h.
void TiledArray::math::outer_fill | ( | const std::size_t | m, |
const std::size_t | n, | ||
const X *const | x, | ||
const Y *const | y, | ||
A * | a, | ||
const Op & | op | ||
) |
Compute and store outer of x
and y
in a
.
a[i][j] = op(x[i], y[j])
.
X | The left-hand vector element type |
Y | The right-hand vector element type |
A | The a matrix element type |
[in] | m | The size of the left-hand vector |
[in] | n | The size of the right-hand vector |
[in] | x | The left-hand vector |
[in] | y | The right-hand vector |
[out] | a | The result matrix of size m*n |
[in] | op | The operation that will compute the outer product elements |
Definition at line 180 of file outer.h.
void TiledArray::math::outer_fill | ( | const std::size_t | m, |
const std::size_t | n, | ||
const X *MADNESS_RESTRICT const | x, | ||
const Y *MADNESS_RESTRICT const | y, | ||
const A *MADNESS_RESTRICT | a, | ||
B *MADNESS_RESTRICT | b, | ||
const Op & | op | ||
) |
Compute the outer of x
, y
, and a
, and store the result in b
.
Store a modified copy of a
in b
, where modified elements are generated using the following algorithm:
for each unique pair of i
and j
.
X | The left hand vector element type |
Y | The right-hand vector element type |
A | The a matrix element type |
B | The b matrix element type |
Op | The operation that will compute outer product elements |
[in] | m | The size of the left-hand vector |
[in] | n | The size of the right-hand vector |
[in] | x | The left-hand vector |
[in] | y | The right-hand vector |
[in] | a | The input matrix of size m*n |
[out] | b | The output matrix of size m*n |
[in] | op | The operation that will compute the outer product elements |
Definition at line 329 of file outer.h.
TILEDARRAY_FORCE_INLINE void TiledArray::math::reduce_block | ( | Op && | op, |
Result & | result, | ||
const Args *const ... | args | ||
) |
Definition at line 199 of file vector_op.h.
TILEDARRAY_FORCE_INLINE void TiledArray::math::reduce_block | ( | Op && | op, |
Result & | result, | ||
Block< Args > &&... | 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 | ||
) |
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 | ||
) |
Definition at line 640 of file vector_op.h.
void TiledArray::math::reduce_op_serial | ( | Op && | op, |
const std::size_t | n, | ||
Result & | result, | ||
const Args *const ... | args | ||
) |
Definition at line 567 of file vector_op.h.
void TiledArray::math::row_reduce | ( | const std::size_t | m, |
const std::size_t | n, | ||
const Left *MADNESS_RESTRICT const | left, | ||
const Right *MADNESS_RESTRICT const | right, | ||
Result *MADNESS_RESTRICT const | result, | ||
const Op & | op | ||
) |
Reduce the rows of a matrix.
op(result[i], left[i][j], right[j])
.
Left | The left-hand matrix element type |
Right | The right-hand vector element type |
Result | The result vector element type |
[in] | m | The number of rows in left |
[in] | n | The size of the right-hand vector |
[in] | left | An m*n matrix |
[in] | right | A vector of size n |
[out] | result | The result vector of size m |
[in] | op | The operation that will reduce the rows of left |
Definition at line 204 of file partial_reduce.h.
void TiledArray::math::row_reduce | ( | const std::size_t | m, |
const std::size_t | n, | ||
const Arg *MADNESS_RESTRICT const | arg, | ||
Result *MADNESS_RESTRICT const | result, | ||
const Op & | op | ||
) |
Reduce the rows of a matrix.
op(result[i], arg[i][j])
.
Arg | The left-hand vector element type |
Result | The a matrix element type |
Op | The operator type |
[in] | m | The number of rows in left |
[in] | n | The size of the right-hand vector |
[in] | arg | An m*n matrix |
[out] | result | The result vector of size m |
[in] | op | The operation that will reduce the rows of left |
Definition at line 274 of file partial_reduce.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
TILEDARRAY_FORCE_INLINE void TiledArray::math::scatter_block | ( | Result *const | result, |
const std::size_t | stride, | ||
const Arg *const | arg | ||
) |
Definition at line 234 of file vector_op.h.
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 | ||
) |
Definition at line 241 of file vector_op.h.
void TiledArray::math::transpose | ( | InputOp && | input_op, |
OutputOp && | output_op, | ||
const std::size_t | m, | ||
const std::size_t | n, | ||
const std::size_t | result_stride, | ||
Result * | result, | ||
const std::size_t | arg_stride, | ||
const Args *const ... | args | ||
) |
Matrix transpose and initialization.
This function will transpose and transform argument matrices into an uninitialized block of memory
InputOp | The input transform operation type |
OutputOp | The output transform operation type |
Result | The result element type |
Args | The argument element type |
[in] | input_op | The transformation operation applied to input arguments |
[in] | output_op | The transformation operation used to set the result |
[in] | m | The number of rows in the argument matrix |
[in] | n | The number of columns in the argument matrix |
[in] | result_stride | THe stride between result rows |
[out] | result | A pointer to the first element of the result matrix |
[in] | arg_stride | The stride between argument rows |
[in] | args | A pointer to the first element of the argument matrix |
Definition at line 176 of file transpose.h.
TILEDARRAY_FORCE_INLINE void TiledArray::math::transpose_block | ( | InputOp && | input_op, |
OutputOp && | output_op, | ||
const std::size_t | result_stride, | ||
Result *const | result, | ||
const std::size_t | arg_stride, | ||
const Args *const ... | args | ||
) |
Definition at line 113 of file transpose.h.
TILEDARRAY_FORCE_INLINE void TiledArray::math::transpose_block | ( | InputOp && | input_op, |
OutputOp && | output_op, | ||
const std::size_t | m, | ||
const std::size_t | n, | ||
const std::size_t | result_stride, | ||
Result *MADNESS_RESTRICT const | result, | ||
const std::size_t | arg_stride, | ||
const Args *MADNESS_RESTRICT const ... | args | ||
) |
Definition at line 131 of file transpose.h.
std::enable_if<! (std::is_scalar<Left>::value && std::is_scalar<Right>::value && std::is_scalar<Result>::value)>::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 | ||
) |
Definition at line 752 of file vector_op.h.
std::enable_if<std::is_scalar<Left>::value && std::is_scalar<Right>::value && std::is_scalar<Result>::value>::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 | ||
) |
std::enable_if<! (std::is_scalar<Arg>::value && std::is_scalar<Result>::value)>::type TiledArray::math::uninitialized_copy_vector | ( | const std::size_t | n, |
const Arg *const | arg, | ||
Result *const | result | ||
) |
Definition at line 688 of file vector_op.h.
|
inline |
std::enable_if<! (std::is_scalar<Arg>::value && std::is_scalar<Result>::value)>::type TiledArray::math::uninitialized_fill_vector | ( | const std::size_t | n, |
const Arg & | arg, | ||
Result *const | result | ||
) |
Definition at line 703 of file vector_op.h.
|
inline |
std::enable_if<! (std::is_scalar<Arg>::value && std::is_scalar<Result>::value)>::type TiledArray::math::uninitialized_unary_vector_op | ( | const std::size_t | n, |
const Arg *const | arg, | ||
Result *const | result, | ||
Op && | op | ||
) |
Definition at line 732 of file vector_op.h.
|
inline |
void TiledArray::math::vector_op | ( | Op && | op, |
const std::size_t | n, | ||
Result *const | result, | ||
const Args *const ... | args | ||
) |
Definition at line 478 of file vector_op.h.
void TiledArray::math::vector_op_serial | ( | Op && | op, |
const std::size_t | n, | ||
Result *const | result, | ||
const Args *const ... | args | ||
) |
Definition at line 422 of file vector_op.h.
void TiledArray::math::vector_ptr_op | ( | Op && | op, |
const std::size_t | n, | ||
Result *const | result, | ||
const Args *const ... | args | ||
) |
Definition at line 546 of file vector_op.h.
void TiledArray::math::vector_ptr_op_serial | ( | Op && | op, |
const std::size_t | n, | ||
Result *const | result, | ||
const Args *const ... | args | ||
) |
Definition at line 501 of file vector_op.h.