QuISP
Loading...
Searching...
No Matches
HardwareMonitor.h
Go to the documentation of this file.
1
5#pragma once
6
7#include "IHardwareMonitor.h"
8
9#include <complex>
10
11#include "rules/Rule.h"
13
14namespace quisp::modules {
15
22 public:
25 int getQnicNumQubits(int qnic_index, QNIC_type qnic_type) override;
26 std::unique_ptr<InterfaceInfo> findInterfaceByNeighborAddr(int neighbor_address) override;
27 std::unique_ptr<ConnectionSetupInfo> findConnectionInfoByQnicAddr(int qnic_address) override;
28
29 protected:
31
32 private:
33 // Matrices of single qubit errors. Used when conducting tomography.
35 Eigen::Matrix2cd X; // double 2*2 matrix
36 Eigen::Matrix2cd Y; // complex double 2*2 matrix
37 Eigen::Matrix2cd Z;
38 Eigen::Matrix2cd I;
39 };
40
42
43 // number of qnics connected to stand alone BSA or internal hom in the neighbor.
45 // number of qnics connected to internal hom.
47 // number of qnics connected to epps.
50
53 bool X_Purification = false;
54 bool Z_Purification = false;
57
58 // in the case of retry connection setup, the partner could be changed.
59 std::map<int, int> qnic_partner_map;
60
62
63 cModule *getQnic(int qnic_index, QNIC_type qnic_type);
67
68 TomographyOutcomeTable *temporal_tomography_output; // qnic address -> partner . count_id . outcome
71 std::string file_dir_name;
72 std::string purification_type;
73
74 protected:
75 void initialize(int stage) override;
76 void finish() override;
77 void handleMessage(cMessage *msg) override;
78 int numInitStages() const override { return 2; };
80 virtual std::unique_ptr<NeighborInfo> createNeighborInfo(const cModule &thisNode);
81 virtual std::unique_ptr<NeighborInfo> getNeighbor(cModule *qnic_pointer);
82 virtual cModule *getQNodeWithAddress(int address);
83 virtual InterfaceInfo getQnicInterfaceByQnicAddr(int qnic_index, QNIC_type qnic_type);
84 virtual void sendLinkTomographyRuleSet(int my_address, int partner_address, QNIC_type qnic_type, int qnic_index, unsigned long rule_id);
85 virtual Eigen::Matrix4cd reconstruct_density_matrix(int qnic_id, int partner);
86 virtual unsigned long createUniqueId();
87 virtual void writeToFile_Topology_with_LinkCost(int qnic_id, double link_cost, double fidelity, double bellpair_per_sec);
88
89 std::unique_ptr<quisp::rules::Rule> constructPurifyRule(const std::string &rule_name, const rules::PurType pur_type, const int partner_address, const QNIC_type qnic_type,
90 const int qnic_index, const int send_tag) const;
91
92 std::unique_ptr<quisp::rules::Rule> constructCorrelationCheckRule(const std::string &rule_name, const rules::PurType pur_type, const int partner_address,
93 const QNIC_type qnic_type, const int qnic_index, const int receive_tag) const;
94};
95
97
98} // namespace quisp::modules
99
100namespace std {
101std::stringstream &operator<<(std::stringstream &os, const quisp::modules::NeighborInfo &v);
102std::basic_ostream<char> &operator<<(std::basic_ostream<char> &os, const quisp::modules::InterfaceInfo &v);
103} // namespace std
Rule.
HardwareMonitor.
Definition HardwareMonitor.h:21
int numInitStages() const override
Definition HardwareMonitor.h:78
std::unique_ptr< quisp::rules::Rule > constructCorrelationCheckRule(const std::string &rule_name, const rules::PurType pur_type, const int partner_address, const QNIC_type qnic_type, const int qnic_index, const int receive_tag) const
Definition HardwareMonitor.cc:1054
virtual cModule * getQNodeWithAddress(int address)
Definition HardwareMonitor.cc:1165
RawData * tomography_data
Definition HardwareMonitor.h:65
virtual void writeToFile_Topology_with_LinkCost(int qnic_id, double link_cost, double fidelity, double bellpair_per_sec)
Definition HardwareMonitor.cc:530
int num_end_nodes
Definition HardwareMonitor.h:56
SingleQubitError Pauli
Definition HardwareMonitor.h:66
std::string tomography_output_filename
Definition HardwareMonitor.h:70
virtual Eigen::Matrix4cd reconstruct_density_matrix(int qnic_id, int partner)
Definition HardwareMonitor.cc:423
TomographyOutcomeTable * temporal_tomography_output
Definition HardwareMonitor.h:68
int getQnicNumQubits(int qnic_index, QNIC_type qnic_type) override
Definition HardwareMonitor.cc:1069
std::unique_ptr< quisp::rules::Rule > constructPurifyRule(const std::string &rule_name, const rules::PurType pur_type, const int partner_address, const QNIC_type qnic_type, const int qnic_index, const int send_tag) const
Definition HardwareMonitor.cc:1016
int num_qnic
Definition HardwareMonitor.h:44
virtual std::unique_ptr< NeighborInfo > getNeighbor(cModule *qnic_pointer)
Definition HardwareMonitor.cc:1151
int num_purification
Definition HardwareMonitor.h:52
virtual unsigned long createUniqueId()
Definition HardwareMonitor.cc:91
int num_qnic_rp
Definition HardwareMonitor.h:48
bool Z_Purification
Definition HardwareMonitor.h:54
void prepareNeighborTable()
Definition HardwareMonitor.cc:1123
int num_qnic_r
Definition HardwareMonitor.h:46
bool do_link_level_tomography
Definition HardwareMonitor.h:51
int num_measure
Definition HardwareMonitor.h:55
HardwareMonitor()
Definition HardwareMonitor.cc:30
std::string purification_type
Definition HardwareMonitor.h:72
~HardwareMonitor()
Definition HardwareMonitor.cc:31
std::map< int, int > qnic_partner_map
Definition HardwareMonitor.h:59
int my_address
Definition HardwareMonitor.h:41
std::unique_ptr< InterfaceInfo > findInterfaceByNeighborAddr(int neighbor_address) override
Definition HardwareMonitor.cc:103
cModule * getQnic(int qnic_index, QNIC_type qnic_type)
Definition HardwareMonitor.cc:1075
void handleMessage(cMessage *msg) override
Definition HardwareMonitor.cc:113
std::unique_ptr< ConnectionSetupInfo > findConnectionInfoByQnicAddr(int qnic_address) override
Definition HardwareMonitor.cc:1107
virtual InterfaceInfo getQnicInterfaceByQnicAddr(int qnic_index, QNIC_type qnic_type)
Definition HardwareMonitor.cc:1087
LinkCostMap * tomography_runningtime_holder
Definition HardwareMonitor.h:69
void finish() override
Definition HardwareMonitor.cc:252
utils::ComponentProvider provider
Definition HardwareMonitor.h:30
bool X_Purification
Definition HardwareMonitor.h:53
void initialize(int stage) override
Definition HardwareMonitor.cc:34
virtual std::unique_ptr< NeighborInfo > createNeighborInfo(const cModule &thisNode)
Definition HardwareMonitor.cc:1183
int num_qnic_total
Definition HardwareMonitor.h:49
NeighborTable neighbor_table
Definition HardwareMonitor.h:64
std::string file_dir_name
Definition HardwareMonitor.h:71
virtual void sendLinkTomographyRuleSet(int my_address, int partner_address, QNIC_type qnic_type, int qnic_index, unsigned long rule_id)
Definition HardwareMonitor.cc:598
IRoutingDaemon * routing_daemon
Definition HardwareMonitor.h:61
Definition IHardwareMonitor.h:74
Definition IRoutingDaemon.h:9
ComponentProvider class provides a way to access other quisp other modules.
Definition ComponentProvider.h:22
Definition Application.cc:16
Define_Module(Application)
std::map< int, std::map< int, TomographyOutcome > > TomographyOutcomeTable
Definition IHardwareMonitor.h:72
std::map< int, InterfaceInfo > NeighborTable
Definition IHardwareMonitor.h:64
std::map< int, std::map< std::string, OutputCount > > RawData
Definition IHardwareMonitor.h:70
std::map< int, LinkCost > LinkCostMap
Definition IHardwareMonitor.h:71
QNIC_type
Definition QNIC.h:18
PurType
Definition Action.h:15
Definition QNIC.h:49
std::stringstream & operator<<(std::stringstream &os, const quisp::modules::NeighborInfo &v)
Definition HardwareMonitor.cc:1254
Eigen::Matrix2cd I
Definition HardwareMonitor.h:38
Eigen::Matrix2cd Y
Definition HardwareMonitor.h:36
Eigen::Matrix2cd X
Definition HardwareMonitor.h:35
Eigen::Matrix2cd Z
Definition HardwareMonitor.h:37
Definition IHardwareMonitor.h:19
Definition IHardwareMonitor.h:14