contract_reduce.h
typename Right::value_type right_value_type
Definition: contract_reduce.h:62
ContractReduceBase(const ContractReduceBase_ &)=default
~ContractReduce()=default
ContractReduce_ & operator=(ContractReduce_ &&)=default
~ContractReduceBase()=default
ContractReduceBase_ & operator=(const ContractReduceBase_ &)=default
Contract and (sum) reduce operation.
Definition: contract_reduce.h:232
void operator()(result_type &result, const first_argument_type &left, const second_argument_type &right) const
Contract a pair of tiles and add to a target tile.
Definition: contract_reduce.h:322
ContractReduce_ & operator=(const ContractReduce_ &)=default
void permute(InputOp &&input_op, OutputOp &&output_op, Result &result, const Perm &perm, const Arg0 &arg0, const Args &... args)
Construct a permuted tensor copy.
Definition: permute.h:117
ContractReduce(const ContractReduce_ &)=default
ContractReduceBase< Result, Left, Right, TiledArray::detail::ComplexConjugate< Scalar > > ContractReduceBase_
This class type.
Definition: contract_reduce.h:491
const math::GemmHelper & gemm_helper() const
Gemm meta data accessor.
Definition: contract_reduce.h:158
ContractReduceBase< Result, Left, Right, Scalar > ContractReduceBase_
This class type.
Definition: contract_reduce.h:237
ContractReduceBase(ContractReduceBase_ &&)=default
result_type operator()(const result_type &temp) const
Post processing step.
Definition: contract_reduce.h:294
decltype(auto) conj(const Tile< Arg > &arg)
Create a complex conjugated copy of a tile.
Definition: tile.h:1256
ContractReduce< Result, Left, Right, TiledArray::detail::ComplexConjugate< void > > ContractReduce_
This class type.
Definition: contract_reduce.h:361
ContractReduceBase(const math::blas::Op left_op, const math::blas::Op right_op, const scalar_type alpha, const unsigned int result_rank, const unsigned int left_rank, const unsigned int right_rank, const Perm &perm={}, ElemMultAddOp &&elem_muladd_op={})
Construct contract/reduce functor.
Definition: contract_reduce.h:145
ContractReduce(ContractReduce_ &&)=default
void operator()(result_type &result, const result_type &arg) const
Reduce two result objects.
Definition: contract_reduce.h:310
ContractReduceBase_::first_argument_type first_argument_type
The left tile type.
Definition: contract_reduce.h:493
Contract and reduce operation.
Definition: contract_reduce.h:484
Contract and (sum) reduce base.
Definition: contract_reduce.h:52
ContractReduce< Result, Left, Right, Scalar > ContractReduce_
This class type.
Definition: contract_reduce.h:235
ContractReduceBase_::first_argument_type first_argument_type
The left tile type.
Definition: contract_reduce.h:366
ContractReduce()=default
Contract and (sum) reduce operation.
Definition: contract_reduce.h:357
ContractReduceBase_::first_argument_type first_argument_type
The left tile type.
Definition: contract_reduce.h:239
void operator()(result_type &result, const result_type &arg) const
Reduce two result objects.
Definition: contract_reduce.h:441
Tile< Result > & add_to(Tile< Result > &result, const Tile< Arg > &arg)
Add to the result tile.
Definition: tile.h:831
void operator()(result_type &result, const first_argument_type &left, const second_argument_type &right) const
Contract a pair of tiles and add to a target tile.
Definition: contract_reduce.h:453
result_type operator()(result_type &temp) const
Post processing step.
Definition: contract_reduce.h:548
typename Result::value_type result_value_type
Definition: contract_reduce.h:63
const auto & elem_muladd_op() const
Element multiply-add op accessor.
Definition: contract_reduce.h:182
ContractReduceBase< Result, Left, Right, Scalar > ContractReduceBase_
This class type.
Definition: contract_reduce.h:55
result_type operator()(result_type &temp) const
Post processing step.
Definition: contract_reduce.h:422
ContractReduceBase_ & operator=(ContractReduceBase_ &&)=default
Definition: array_impl.cpp:28
ContractReduce< Result, Left, Right, TiledArray::detail::ComplexConjugate< Scalar > > ContractReduce_
This class type.
Definition: contract_reduce.h:488
ContractReduceBase_::second_argument_type second_argument_type
The right tile type.
Definition: contract_reduce.h:368
Specialization of ComplexConjugate for the case of a unit/identity factor.
Definition: complex.h:143
void operator()(result_type &result, const result_type &arg) const
Reduce two result objects.
Definition: contract_reduce.h:568
void(result_value_type &, const left_value_type &, const right_value_type &) elem_muladd_op_type
Definition: contract_reduce.h:65
typename Left::value_type left_value_type
Definition: contract_reduce.h:61
ContractReduceBase_::second_argument_type second_argument_type
The right tile type.
Definition: contract_reduce.h:241
ContractReduceBase()=default
ContractReduce(const math::blas::Op left_op, const math::blas::Op right_op, const scalar_type alpha, const unsigned int result_rank, const unsigned int left_rank, const unsigned int right_rank, const Perm &perm={}, ElemMultAddOp &&elem_muladd_op={})
Construct contract/reduce functor.
Definition: contract_reduce.h:280
static constexpr bool plain_tensors
Definition: contract_reduce.h:74
unsigned int num_contract_ranks() const
Compute the number of contracted ranks.
Definition: contract_reduce.h:192
ContractReduceBase_::second_argument_type second_argument_type
The right tile type.
Definition: contract_reduce.h:495
ContractReduceBase< Result, Left, Right, TiledArray::detail::ComplexConjugate< void > > ContractReduceBase_
This class type.
Definition: contract_reduce.h:364
void operator()(result_type &result, const first_argument_type &left, const second_argument_type &right) const
Contract a pair of tiles and add to a target tile.
Definition: contract_reduce.h:580
Tile< Result > & conj_to(Tile< Result > &result)
In-place complex conjugate a tile.
Definition: tile.h:1311
decltype(auto) gemm(const Tile< Left > &left, const Tile< Right > &right, const Scalar factor, const math::GemmHelper &gemm_config)
Contract 2 tensors over head/tail modes and scale the product.
Definition: tile.h:1396