ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
Go to the source code of this file.
Classes | |
struct | container::EinsumOption |
Namespaces | |
namespace | container |
namespace | container::einsum_utils |
namespace | container::op |
Enumerations | |
enum | container::einsum_utils::EinsumDimensionType { container::einsum_utils::kBroadcasting = 0 , container::einsum_utils::kBatch = 1 , container::einsum_utils::kFree = 2 , container::einsum_utils::kContract = 3 , container::einsum_utils::kReduce = 4 } |
Functions | |
bool | container::einsum_utils::ValidateEinsumEquation (const std::string &equation, std::vector< std::string > &input_subscripts, std::string &output_subscript) |
Check the validation of the input equations. | |
bool | container::einsum_utils::ParseEinsumEquation (const std::string &equation, std::vector< EinsumDimensionType > &label_types, std::vector< std::vector< int > > &input_labels, std::vector< int > &output_labels, std::vector< std::vector< int > > &input_label_counts, std::vector< int > &output_label_counts, std::vector< bool > &input_has_ellipsis, bool &output_has_ellipsis) |
bool | container::einsum_utils::ProcessDimensions (const std::vector< const Tensor * > &inputs, std::vector< EinsumDimensionType > &label_types, std::vector< std::vector< int > > &input_labels, std::vector< int > &output_labels, std::vector< std::vector< int > > &input_label_counts, std::vector< int > &output_label_counts, const std::vector< bool > &input_has_ellipsis, const bool output_has_ellipsis, std::unordered_map< int, int64_t > &label_to_dim_sizes) |
bool | container::einsum_utils::RecordLabelToDimension (const int label, const int axis, const Tensor &input, std::unordered_map< int, int64_t > &label_to_dim_sizes) |
bool | container::einsum_utils::ReduceOperand (const Tensor &input, const std::vector< EinsumDimensionType > &label_types, std::vector< int > &labels, const std::vector< int > &label_counts, std::vector< int > &free_labels, int &swap_free_and_contract, Tensor &output) |
bool | container::einsum_utils::ContractOperands (std::vector< Tensor > &inputs, const std::vector< int > &swap_free_and_contract, const EinsumOption &option, Tensor &output) |
A function to perform contraction operation on multiple Tensors. | |
void | container::einsum_utils::ProcessOutput (const Tensor &input, const std::vector< einsum_utils::EinsumDimensionType > &label_types, const std::vector< std::vector< int > > &free_labels, std::unordered_map< int, int64_t > &label_to_dim_sizes, const std::vector< int > &output_labels, const std::vector< int > &output_label_counts, Tensor &output) |
template<typename... Tensors> | |
std::enable_if< std::is_same< typenamestd::common_type< Tensors... >::type, Tensor >::value, Tensor >::type | container::op::einsum_impl (const std::string &equation, const EinsumOption &option, const Tensors &... tensors) |
Computes the Einstein summation convention on the given tensors based on the expression passed as a string. | |
Variables | |
constexpr int | container::einsum_utils::kEllipsisLabel = -1 |