Maestro 0.2.5
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
TensorNetworks::BaseContractor Class Referenceabstract

The Base Class Tensor Contractor. More...

#include <BaseContractor.h>

+ Inheritance diagram for TensorNetworks::BaseContractor:
+ Collaboration diagram for TensorNetworks::BaseContractor:

Public Types

using TensorsMap = ITensorContractor::TensorsMap
 

Public Member Functions

virtual std::shared_ptr< ITensorContractorClone () const =0
 Clone the tensor contractor.
 
virtual double Contract (const TensorNetwork &network, Types::qubit_t qubit)=0
 Contract the tensor network.
 
template<class PassedTensorsMap = TensorsMap>
Eigen::Index ContractNodes (Types::qubit_t qubit, PassedTensorsMap &tensors, Eigen::Index tensor1Id, Eigen::Index tensor2Id, Eigen::Index resultRank)
 
size_t GetMaxTensorRank () const override
 
bool GetMultithreading () const override
 Get the multithreading flag.
 
TensorsMap InitializeTensors (const TensorNetwork &network, Types::qubit_t qubit, std::vector< Eigen::Index > &keys, std::unordered_map< Eigen::Index, Eigen::Index > &keysKeys, bool fillKeys=true, bool contract=true) override
 
void SetMultithreading (bool multithreading=true) override
 Enable/disable multithreading.
 

Static Public Member Functions

static size_t GetResultRank (const std::shared_ptr< TensorNode > &tensor1, const std::shared_ptr< TensorNode > &tensor2)
 

Protected Attributes

bool enableMultithreading
 A flag to indicate if multithreading should be enabled.
 
size_t maxTensorRank
 The maximum rank of the tensors in the network.
 

Detailed Description

The Base Class Tensor Contractor.

Tensor contractions common functionality.

Definition at line 29 of file BaseContractor.h.

Member Typedef Documentation

◆ TensorsMap

Member Function Documentation

◆ Clone()

virtual std::shared_ptr< ITensorContractor > TensorNetworks::ITensorContractor::Clone ( ) const
pure virtualinherited

Clone the tensor contractor.

Returns
A shared pointer to the cloned tensor contractor.

Implemented in TensorNetworks::DumbContractor, TensorNetworks::ForestContractor, TensorNetworks::LookaheadContractor, TensorNetworks::StochasticContractor, and TensorNetworks::VerticalContractor.

◆ Contract()

virtual double TensorNetworks::ITensorContractor::Contract ( const TensorNetwork network,
Types::qubit_t  qubit 
)
pure virtualinherited

Contract the tensor network.

Parameters
networkThe tensor network to contract.
Returns
The result of the contraction.

Implemented in TensorNetworks::DumbContractor, TensorNetworks::ForestContractor, TensorNetworks::LookaheadContractor, TensorNetworks::StochasticContractor, and TensorNetworks::VerticalContractor.

◆ ContractNodes()

template<class PassedTensorsMap = TensorsMap>
Eigen::Index TensorNetworks::BaseContractor::ContractNodes ( Types::qubit_t  qubit,
PassedTensorsMap &  tensors,
Eigen::Index  tensor1Id,
Eigen::Index  tensor2Id,
Eigen::Index  resultRank 
)
inline

◆ GetMaxTensorRank()

size_t TensorNetworks::BaseContractor::GetMaxTensorRank ( ) const
inlineoverridevirtual

Implements TensorNetworks::ITensorContractor.

Definition at line 236 of file BaseContractor.h.

References maxTensorRank.

◆ GetMultithreading()

bool TensorNetworks::BaseContractor::GetMultithreading ( ) const
inlineoverridevirtual

Get the multithreading flag.

Returns the multithreading flag.

Returns
The multithreading flag.

Implements TensorNetworks::ITensorContractor.

Definition at line 257 of file BaseContractor.h.

References enableMultithreading.

◆ GetResultRank()

static size_t TensorNetworks::BaseContractor::GetResultRank ( const std::shared_ptr< TensorNode > &  tensor1,
const std::shared_ptr< TensorNode > &  tensor2 
)
inlinestatic

◆ InitializeTensors()

TensorsMap TensorNetworks::BaseContractor::InitializeTensors ( const TensorNetwork network,
Types::qubit_t  qubit,
std::vector< Eigen::Index > &  keys,
std::unordered_map< Eigen::Index, Eigen::Index > &  keysKeys,
bool  fillKeys = true,
bool  contract = true 
)
inlineoverridevirtual

◆ SetMultithreading()

void TensorNetworks::BaseContractor::SetMultithreading ( bool  multithreading = true)
inlineoverridevirtual

Enable/disable multithreading.

Enable/disable multithreading. Default is enabled.

Parameters
multithreadingA flag to indicate if multithreading should be enabled.

Implements TensorNetworks::ITensorContractor.

Definition at line 246 of file BaseContractor.h.

References enableMultithreading.

Member Data Documentation

◆ enableMultithreading

bool TensorNetworks::BaseContractor::enableMultithreading
protected

◆ maxTensorRank


The documentation for this class was generated from the following file: