ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Classes | Namespaces | Enumerations | Functions | Variables
einsum_op.h File Reference
#include <ATen/core/tensor.h>
#include <ATen/core/tensor_map.h>
Include dependency graph for einsum_op.h:
This graph shows which files directly or indirectly include this file:

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