ExaTN
src
numerics
contraction_seq_optimizer.hpp
1
10
#ifndef EXATN_NUMERICS_CONTRACTION_SEQ_OPTIMIZER_HPP_
11
#define EXATN_NUMERICS_CONTRACTION_SEQ_OPTIMIZER_HPP_
12
13
#include "tensor_basic.hpp"
14
15
#include <list>
16
#include <memory>
17
#include <functional>
18
19
namespace
exatn
{
20
21
namespace
numerics{
22
23
//Tensor contraction triple:
24
struct
ContrTriple
{
25
unsigned
int
result_id;
//id of the tensor-result (new)
26
unsigned
int
left_id;
//id of the left input tensor (old)
27
unsigned
int
right_id;
//id of the right input tensor (old)
28
};
29
30
class
TensorNetwork
;
31
32
33
class
ContractionSeqOptimizer
{
34
35
public
:
36
37
virtual
~
ContractionSeqOptimizer
() =
default
;
38
46
virtual
double
determineContractionSequence
(
const
TensorNetwork
& network,
47
std::list<ContrTriple> & contr_seq,
48
std::function<
unsigned
int
()> intermediate_num_generator) = 0;
49
};
50
51
using
createContractionSeqOptimizerFn = std::unique_ptr<ContractionSeqOptimizer> (*)(void);
52
53
}
//namespace numerics
54
55
}
//namespace exatn
56
57
#endif //EXATN_NUMERICS_CONTRACTION_SEQ_OPTIMIZER_HPP_
exatn::numerics::TensorNetwork
Definition:
tensor_network.hpp:72
exatn::numerics::ContractionSeqOptimizer
Definition:
contraction_seq_optimizer.hpp:33
exatn
Definition:
DriverClient.hpp:10
exatn::numerics::ContrTriple
Definition:
contraction_seq_optimizer.hpp:24
exatn::numerics::ContractionSeqOptimizer::determineContractionSequence
virtual double determineContractionSequence(const TensorNetwork &network, std::list< ContrTriple > &contr_seq, std::function< unsigned int()> intermediate_num_generator)=0
Generated by
1.8.16