|
Maestro 0.2.5
Unified interface for quantum circuit simulation
|
The simple network implementation. More...
#include <SimpleDisconnectedNetwork.h>
Inheritance diagram for Network::SimpleDisconnectedNetwork< Time, Controller >:
Collaboration diagram for Network::SimpleDisconnectedNetwork< Time, Controller >:Public Types | |
| using | BaseClass = INetwork< Time > |
| The base class type. | |
| using | ExecuteResults = typename BaseClass::ExecuteResults |
| The execute results type. | |
| using | SimulatorPair = std::pair< Simulators::SimulatorType, Simulators::SimulationType > |
| using | SimulatorsSet = std::unordered_set< SimulatorPair, boost::hash< SimulatorPair > > |
Public Member Functions | |
| SimpleDisconnectedNetwork (const std::vector< Types::qubit_t > &qubits={}, const std::vector< size_t > &cbits={}) | |
| The constructor. | |
| void | AddOptimizationSimulator (Simulators::SimulatorType type, Simulators::SimulationType kind) override |
| Adds a simulator to the simulators optimization set. | |
| bool | AreClassicalBitsOnSameHost (size_t bitId1, size_t bitId2) const override |
| Check if the specified classical bits are on the same host. | |
| bool | AreEntanglementQubitsBusy (size_t qubitId1, size_t qubitId2) const override |
| Check if any of the two specified qubits used for entanglement between hosts are busy. | |
| bool | AreQubitAndClassicalBitOnSameHost (size_t qubitId, size_t bitId) const override |
| Check if the specified qubit and classical bit are on the same host. | |
| bool | AreQubitsOnSameHost (size_t qubitId1, size_t qubitId2) const override |
| Check if the specified qubits are on the same host. | |
| std::shared_ptr< Simulators::ISimulator > | ChooseBestSimulator (std::shared_ptr< Circuits::Circuit< Time > > &dcirc, size_t &counts, size_t nrQubits, size_t nrCbits, size_t nrResultCbits, Simulators::SimulatorType &simType, Simulators::SimulationType &method, std::vector< bool > &executed, bool multithreading=false, bool dontRunCircuitStart=false) const override |
| Choose the best simulator for the given circuit. | |
| void | ClearEntanglements () override |
| Clear all entanglements between hosts in the network. | |
| std::shared_ptr< INetwork< Time > > | Clone () const override |
| Clone the network. | |
| void | Configure (const char *key, const char *value) override |
| Configures the network. | |
| void | CreateNetwork (const std::vector< Types::qubit_t > &qubits, const std::vector< size_t > &cbits) |
| Creates the network hosts and controller. | |
| void | CreateScheduler (SchedulerType schType=SchedulerType::kNoEntanglementQubitsParallel) override |
| Create the scheduler for the network. | |
| void | CreateSimulator (Simulators::SimulatorType simType=Simulators::SimulatorType::kQCSim, Simulators::SimulationType simExecType=Simulators::SimulationType::kMatrixProductState, size_t nrQubits=0) override |
| Create the simulator for the network. | |
| void | Execute (const std::shared_ptr< Circuits::Circuit< Time > > &circuit) override |
| Execute the circuit on the network. | |
| std::vector< double > | ExecuteExpectations (const std::shared_ptr< Circuits::Circuit< Time > > &circuit, const std::vector< std::string > &paulis) override |
| Execute the circuit on the network and return the expectation values for the specified Pauli strings. | |
| void | ExecuteOnHost (const std::shared_ptr< Circuits::Circuit< Time > > &circuit, size_t hostId) override |
| Execute the circuit on the specified host. | |
| std::vector< std::complex< double > > | ExecuteOnHostAmplitudes (const std::shared_ptr< Circuits::Circuit< Time > > &circuit, size_t hostId) override |
| Execute circuit on host and return full statevector amplitudes. | |
| std::vector< double > | ExecuteOnHostExpectations (const std::shared_ptr< Circuits::Circuit< Time > > &circuit, size_t hostId, const std::vector< std::string > &paulis) override |
| Execute the circuit on the specified host and return the expectation values for the specified Pauli strings. | |
| std::complex< double > | ExecuteOnHostProjectOnZero (const std::shared_ptr< Circuits::Circuit< Time > > &circuit, size_t hostId) override |
| Execute circuit on host and return the projection onto the zero state. | |
| std::vector< ExecuteResults > | ExecuteScheduled (const std::vector< Schedulers::ExecuteCircuit< Time > > &circuits) override |
| Schedule and execute circuits on the network. | |
| bool | ExpectsClassicalBitFromOtherHost (const std::shared_ptr< Circuits::IOperation< Time > > &op) const override |
| Checks if a gate expects a classical bit from another host. | |
| std::vector< size_t > | GetClassicalBitsIds (size_t hostId) const override |
| Get the classical bit ids for the specified host. | |
| const std::shared_ptr< IController< Time > > | GetController () const override |
| Get the controller for the network. | |
| std::shared_ptr< Circuits::Circuit< Time > > | GetDistributedCircuit () const override |
| Get the distributed circuit. | |
| std::vector< size_t > | GetEntangledQubitMeasurementBitIds (size_t hostId) const override |
| Get the classical bit ids used for measurement of entanglement qubits between the hosts for the specified host. | |
| const std::shared_ptr< IHost< Time > > | GetHost (size_t hostId) const override |
| Get the host with the specified id. | |
| size_t | GetHostIdForAnyQubit (size_t qubitId) const override |
| Get the host id for the specified qubit. | |
| size_t | GetHostIdForClassicalBit (size_t classicalBitId) const override |
| Get the host id for the specified classical bit. | |
| size_t | GetHostIdForClassicalControl (const std::shared_ptr< Circuits::IOperation< Time > > &op) const override |
| Get the host id where the classical control bit resides for a conditioned gate. | |
| size_t | GetHostIdForEntangledQubit (size_t qubitId) const override |
| Get the host id for the specified qubit used for entanglement between hosts. | |
| size_t | GetHostIdForQubit (size_t qubitId) const override |
| Get the host id for the specified qubit. | |
| std::vector< std::shared_ptr< IHost< Time > > > & | GetHosts () |
| Get the hosts in the network. | |
| bool | GetInitialQubitsMapOptimization () const override |
| Simulators::SimulationType | GetLastSimulationType () const override |
| Get the last used simulation type. | |
| Simulators::SimulatorType | GetLastSimulatorType () const override |
| Get the last used simulator type. | |
| size_t | GetMaxSimulators () const override |
| Get the maximum number of simulators that can be used in the network. | |
| size_t | GetMPSOptimizationBondDimensionThreshold () const override |
| size_t | GetMPSOptimizationQubitsNumberThreshold () const override |
| std::vector< size_t > | GetNetworkEntangledQubitsIds (size_t hostId) const override |
| Get the qubit ids used for entanglement between hosts for the specified host. | |
| size_t | GetNumberOfGatesDistributedOrCut (const std::shared_ptr< Circuits::Circuit< Time > > &circuit) const override |
| Get the number of gates that span more than one host. | |
| size_t | GetNumClassicalBits () const override |
| Get the number of classical bits in the network. | |
| size_t | GetNumClassicalBitsForHost (size_t hostId) const override |
| Get the number of classical bits in the network for the specified host. | |
| size_t | GetNumHosts () const override |
| Get the number of hosts in the network. | |
| size_t | GetNumNetworkEntangledQubits () const override |
| Get the number of qubits used for entanglement between hosts. | |
| size_t | GetNumNetworkEntangledQubitsForHost (size_t hostId) const override |
| Get the number of qubits used for entanglement between hosts for the specified host. | |
| size_t | GetNumQubits () const override |
| Get the number of qubits in the network. | |
| size_t | GetNumQubitsForHost (size_t hostId) const override |
| Get the number of qubits in the network for the specified host. | |
| bool | GetOptimizeSimulator () const override |
| Returns the 'optimize' flag. | |
| std::shared_ptr< INetwork< Time > > | getptr () |
| Get a shared pointer to this object. | |
| std::vector< size_t > | GetQubitsIds (size_t hostId) const override |
| Get the qubit ids for the specified host. | |
| std::shared_ptr< Schedulers::IScheduler< Time > > | GetScheduler () const override |
| Get the scheduler for the network. | |
| std::shared_ptr< Simulators::ISimulator > | GetSimulator () const override |
| Get the simulator for the network. | |
| const BaseClass::SimulatorsSet & | GetSimulatorsSet () const override |
| Get the optimizations simulators set. | |
| Circuits::OperationState & | GetState () override |
| Get the classical state of the network. | |
| virtual std::vector< std::vector< std::string > > | GetSubroutinesTextCode () const |
| Get the text code that is executed on the hosts. | |
| NetworkType | GetType () const override |
| Get the type of the network. | |
| bool | IsDistributedOperation (const std::shared_ptr< Circuits::IOperation< Time > > &op) const override |
| Check if the circuit operation is distributed. | |
| bool | IsEntanglementQubitBusy (size_t qubitId) const override |
| Check if the specified qubit used for entanglement between hosts is busy. | |
| bool | IsEntanglingGate (const std::shared_ptr< Circuits::IOperation< Time > > &op) const override |
| Checks if a gate is an entangling gate. | |
| bool | IsLocalOperation (const std::shared_ptr< Circuits::IOperation< Time > > &op) const override |
| Check if the circuit operation is local. | |
| bool | IsNetworkEntangledQubit (size_t qubitId) const override |
| Check if the specified qubit id is for a qubit used for entanglement between hosts. | |
| void | MarkEntangledQubitFree (size_t qubitId) override |
| Mark the specified qubit used for entanglement between hosts as free. | |
| void | MarkEntangledQubitsBusy (size_t qubitId1, size_t qubitId2) override |
| Mark the pair of the specified qubits used for entanglement between hosts as busy. | |
| bool | OperatesWithNetworkEntangledQubit (const std::shared_ptr< Circuits::IOperation< Time > > &op) const override |
| Check if the circuit operation operates on the entanglement qubits between hosts. | |
| bool | OptimizationSimulatorExists (Simulators::SimulatorType type, Simulators::SimulationType kind) const override |
| Checks if a simulator exists in the optimization set. | |
| void | RemoveAllOptimizationSimulatorsAndAdd (Simulators::SimulatorType type, Simulators::SimulationType kind) override |
| Removes all simulators from the simulators optimization set and adds the one specified. | |
| void | RemoveOptimizationSimulator (Simulators::SimulatorType type, Simulators::SimulationType kind) override |
| Removes a simulator from the simulators optimization set. | |
| ExecuteResults | RepeatedExecute (const std::shared_ptr< Circuits::Circuit< Time > > &circuit, size_t shots=1000) override |
| Execute the circuit on the network, repeatedly. | |
| ExecuteResults | RepeatedExecuteCircuit (const Schedulers::ExecuteCircuit< Time > &executeCircuit) |
| Execute the circuit on the network, repeatedly. | |
| ExecuteResults | RepeatedExecuteCircuitOnHost (const Schedulers::ExecuteCircuit< Time > &executeCircuit, size_t hostId) |
| Execute the circuit on the specified host, repeatedly. | |
| ExecuteResults | RepeatedExecuteOnHost (const std::shared_ptr< Circuits::Circuit< Time > > &circuit, size_t hostId, size_t shots=1000) override |
| Execute the circuit on the specified host, repeatedly. | |
| bool | SendPacket (size_t fromHostId, size_t toHostId, const std::vector< uint8_t > &packet) override |
| Sends a packet between two hosts. | |
| void | SetController (const std::shared_ptr< IController< Time > > &cntrl) |
| Set the network controller host. | |
| void | SetInitialQubitsMapOptimization (bool optimize=true) override |
| void | SetMaxSimulators (size_t val) override |
| Set the maximum number of simulators that can be used in the network. | |
| void | SetMPSOptimizationBondDimensionThreshold (size_t threshold) override |
| void | SetMPSOptimizationQubitsNumberThreshold (size_t threshold) override |
| void | SetOptimizeSimulator (bool optimize=true) override |
| Allows using an optimized simulator. | |
Protected Member Functions | |
| void | ConvertBackResults (ExecuteResults &res) |
| Converts back the results from the optimized network distribution mapping. | |
| void | ConvertBackResults (ExecuteResults &res, const std::unordered_map< Types::qubit_t, Types::qubit_t > &bitsMap) const |
| Converts back the results using the passed qubits map. | |
| void | ConvertBackState () |
| Converts back the state from the optimized network distribution mapping. | |
| void | ConvertBackState (const std::unordered_map< Types::qubit_t, Types::qubit_t > &qubitsMap) |
| Converts back the state using the passed qubits map. | |
| std::unordered_map< Types::qubit_t, Types::qubit_t > | MapCircuitOnHost (const std::shared_ptr< Circuits::Circuit< Time > > &circuit, size_t hostId, size_t &nrQubits, size_t &nrCbits, bool useSeparateSimForHosts=false) |
| Map the circuit on the host. | |
Protected Attributes | |
| Circuits::OperationState | classicalState |
| The classical state of the network. | |
| std::shared_ptr< IController< Time > > | controller |
| The controller for the network. | |
| std::shared_ptr< Circuits::Circuit< Time > > | distCirc |
| The distributed circuit. | |
| std::vector< std::shared_ptr< IHost< Time > > > | hosts |
| The hosts in the network. | |
| Simulators::SimulationType | lastMethod |
| The last simulation method used. | |
| Simulators::SimulatorType | lastSimulatorType |
| The last simulator type used. | |
| std::string | maxBondDim |
| size_t | maxSimulators |
| The maximum number of simulators that can be used in the network. | |
| std::string | mpsSample |
| bool | optimizeSimulator = true |
| The flag to optimize the simulator. | |
| std::shared_ptr< Simulators::ISimulator > | simulator |
| The quantum computing simulator for the network. | |
| std::unique_ptr< Estimators::SimulatorsEstimatorInterface< Time > > | simulatorsEstimator |
| The simulators estimator. | |
| BaseClass::SimulatorsSet | simulatorsForOptimizations |
| std::string | singularValueThreshold |
| bool | useDoublePrecision = false |
The simple network implementation.
The simple network implementation. A simple network class, implementing a network containing a buch of hosts, no communication (classical or quantum) among them.
| Time | The time type used for execution times. |
Definition at line 42 of file SimpleDisconnectedNetwork.h.
| using Network::SimpleDisconnectedNetwork< Time, Controller >::BaseClass = INetwork<Time> |
The base class type.
Definition at line 44 of file SimpleDisconnectedNetwork.h.
| using Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteResults = typename BaseClass::ExecuteResults |
The execute results type.
Definition at line 45 of file SimpleDisconnectedNetwork.h.
|
inherited |
|
inherited |
|
inline |
The constructor.
Constructs the simple network object, creating the network hosts and the controller.
| qubits | The number of qubits for each host. |
| cbits | The number of classical bits for each host. |
Definition at line 57 of file SimpleDisconnectedNetwork.h.
|
inlineoverridevirtual |
Adds a simulator to the simulators optimization set.
Adds a simulator (if not already present) to the simulators optimization set.
| type | The type of the simulator to add. |
| kind | The kind of the simulation to add. |
Implements Network::INetwork< Time >.
Definition at line 1799 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::simulatorsForOptimizations.
|
inlineoverridevirtual |
Check if the specified classical bits are on the same host.
Check if the specified classical are on the same host. This does not include the classical bits used for measuring the qubits used for entanglement between the hosts.
Implements Network::INetwork< Time >.
Definition at line 1423 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
|
inlineoverridevirtual |
Check if any of the two specified qubits used for entanglement between hosts are busy.
Check if any of the two specified qubits used for entanglement between hosts are busy. This is used to check if the qubits are free in order to use them for creating an entanglement between hosts. It's not used in the simple network, because it doesn't allow quantum communication between hosts.
| qubitId1 | The id of the first qubit to check. |
| qubitId2 | The id of the second qubit to check. |
Implements Network::INetwork< Time >.
Definition at line 1636 of file SimpleDisconnectedNetwork.h.
|
inlineoverridevirtual |
Check if the specified qubit and classical bit are on the same host.
Check if the specified qubit and classical bit are on the same host. This does not include the qubits used for entanglement between the hosts and the classical bits used for their measurement.
Implements Network::INetwork< Time >.
Definition at line 1447 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
|
inlineoverridevirtual |
Check if the specified qubits are on the same host.
Check if the specified qubits are on the same host. This does not include the qubits used for entanglement between the hosts.
Implements Network::INetwork< Time >.
Definition at line 1400 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::IsDistributedOperation(), and Network::SimpleDisconnectedNetwork< Time, Controller >::IsLocalOperation().
|
inlineoverridevirtual |
Choose the best simulator for the given circuit.
Choose the best simulator for the given circuit, based on the number of qubits, number of classical bits, number of result classical bits and number of shots. The choice is made from the optimization simulators set.
WARNING: the circuit might be modified, depending on the chosen simulator and some optimization settings
| dcirc | The distributed circuit to choose the simulator for. |
| counts | The number of shots to be executed. |
| nrQubits | The number of qubits in the circuit. |
| nrCbits | The number of classical bits in the circuit. |
| nrResultCbits | The number of result classical bits in the circuit. |
| simType | The type of the chosen simulator. |
| method | The kind of simulation of the chosen simulator. |
| executed | A vector of bools marking the executed gates from the circuit (some of them might be executed when picking up the simulator - usually the gates from the beginning up to the measurements/resets). |
| multithreading | If true, allows simulators to support multithreading (default is false). Multithreading will be set to false if multithreading is implemented at a higher level (multiple simulators in parallel). |
Implements Network::INetwork< Time >.
Definition at line 1888 of file SimpleDisconnectedNetwork.h.
References Simulators::SimulatorsFactory::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetMaxSimulators(), Simulators::SimulatorsFactory::IsGpuLibraryAvailable(), Simulators::kCompositeQCSim, Simulators::kCompositeQiskitAer, Simulators::kGpuSim, Simulators::kMatrixProductState, Simulators::kPauliPropagator, Simulators::kQCSim, Simulators::kQiskitAer, Simulators::kQuestSim, Simulators::kStabilizer, Simulators::kStatevector, Simulators::kTensorNetwork, Network::SimpleDisconnectedNetwork< Time, Controller >::maxBondDim, Network::SimpleDisconnectedNetwork< Time, Controller >::mpsSample, Network::SimpleDisconnectedNetwork< Time, Controller >::OptimizationSimulatorExists(), Network::SimpleDisconnectedNetwork< Time, Controller >::optimizeSimulator, Network::SimpleDisconnectedNetwork< Time, Controller >::simulatorsEstimator, Network::SimpleDisconnectedNetwork< Time, Controller >::simulatorsForOptimizations, and Network::SimpleDisconnectedNetwork< Time, Controller >::singularValueThreshold.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
inlineoverridevirtual |
Clear all entanglements between hosts in the network.
Clear all entanglements between hosts in the network. This marks all qubits used for entanglement between hosts as free. If the entanglements are explicitely coordinated in the network, all pairs of entangled qubits are released. It's not used in the simple network, because it doesn't allow quantum communication between hosts.
Implements Network::INetwork< Time >.
Definition at line 1683 of file SimpleDisconnectedNetwork.h.
|
inlineoverridevirtual |
Clone the network.
Clone the network in a pristine state.
Implements Network::INetwork< Time >.
Definition at line 1859 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumClassicalBitsForHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumHosts(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumQubitsForHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::maxBondDim, Network::SimpleDisconnectedNetwork< Time, Controller >::mpsSample, and Network::SimpleDisconnectedNetwork< Time, Controller >::singularValueThreshold.
|
inlineoverridevirtual |
Configures the network.
This function is called to configure the network (for example the simulator(s) used by the network.
| key | The key of the configuration option. |
| value | The value of the configuration. |
Implements Network::INetwork< Time >.
Definition at line 972 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::maxBondDim, Network::SimpleDisconnectedNetwork< Time, Controller >::maxSimulators, Network::SimpleDisconnectedNetwork< Time, Controller >::mpsSample, Network::SimpleDisconnectedNetwork< Time, Controller >::simulator, Network::SimpleDisconnectedNetwork< Time, Controller >::singularValueThreshold, and Network::SimpleDisconnectedNetwork< Time, Controller >::useDoublePrecision.
|
inlineprotected |
Converts back the results from the optimized network distribution mapping.
Converts back the results from the optimized network distribution mapping. It's used only if there is an optimiser set, that is, there was a rempapping/optimizing of the circuit to be distributed.
| res | The results to convert back. |
Definition at line 2130 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::controller, and Network::SimpleDisconnectedNetwork< Time, Controller >::ConvertBackResults().
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ConvertBackResults(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
inlineprotected |
Converts back the results using the passed qubits map.
Converts back the results using the passed qubits map It's used only if there is an optimiser set, that is, there was a rempapping/optimizing of the circuit to be distributed. Or if there is an execution on a single host and the passed circuit had a different mapping for qubits than the host qubits.
| res | The results to convert back. |
| bitsMap | The map with the bits mapping. |
Definition at line 2152 of file SimpleDisconnectedNetwork.h.
References Circuits::OperationState::GetAllBits(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumClassicalBits(), and Circuits::OperationState::Remap().
|
inlineprotected |
Converts back the state from the optimized network distribution mapping.
Converts back the state from the optimized network distribution mapping. It's used only if there is an optimiser set, that is, there was a rempapping/optimizing of the circuit to be distributed.
Definition at line 2091 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::controller, and Network::SimpleDisconnectedNetwork< Time, Controller >::ConvertBackState().
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ConvertBackState().
|
inlineprotected |
Converts back the state using the passed qubits map.
Converts back the state using the passed qubits map. It's used only if there is an optimiser set, that is, there was a rempapping/optimizing of the circuit to be distributed. Or if there is an execution on a single host and the passed circuit had a different mapping for qubits than the host qubits.
| qubitsMap | The map with the qubits mapping. |
Definition at line 2112 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::GetState(), and Circuits::OperationState::Remap().
|
inline |
Creates the network hosts and controller.
Creates the network hosts and controller with the specified number of qubits and classical bits.
| qubits | The number of qubits for each host. |
| cbits | The number of classical bits for each host. |
Definition at line 71 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::controller, and Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
|
inlineoverridevirtual |
Create the scheduler for the network.
Creates the scheduler for the network. Call this only after the network topology has been set up. Should create the scheduler and set the network for it and any other necessary parameters.
| simType | The type of the scheduler to create. |
Implements Network::INetwork< Time >.
Definition at line 1023 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::controller, and Network::INetwork< Time >::getptr().
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteScheduled().
|
inlineoverridevirtual |
Create the simulator for the network.
Creates the simulator for the network. Call this only after the network topology has been set up. Should create the simulator with the proper number of qubits for the whole network and also set up a 'classical state' for the whole network and distribute the qubits and cbits to the hosts. The nrQubits parameter is used internally to allocate a simulator for a single host only - if a circuit is executed on a single host. Let it to the default value - 0 - to allocate the number of qubits for the whole network.
| simType | The type of the simulator to create. |
| simExecType | The type of the simulation - statevector, composite, matrix product state, stabilizer, tensor network... |
| nrQubits | The number of qubits to allocate for the simulator. Default is 0 - allocate the number of qubits for the whole network. |
Implements Network::INetwork< Time >.
Definition at line 933 of file SimpleDisconnectedNetwork.h.
References Circuits::OperationState::AllocateBits(), Network::SimpleDisconnectedNetwork< Time, Controller >::classicalState, Circuits::OperationState::Clear(), Simulators::SimulatorsFactory::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumClassicalBits(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumNetworkEntangledQubits(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumQubits(), Network::SimpleDisconnectedNetwork< Time, Controller >::maxBondDim, Network::SimpleDisconnectedNetwork< Time, Controller >::mpsSample, Network::SimpleDisconnectedNetwork< Time, Controller >::simulator, Network::SimpleDisconnectedNetwork< Time, Controller >::singularValueThreshold, and Network::SimpleDisconnectedNetwork< Time, Controller >::useDoublePrecision.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::Execute(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteExpectations(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHostAmplitudes(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHostExpectations(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHostProjectOnZero(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
inlineoverridevirtual |
Execute the circuit on the network.
Execute the circuit on the network, using the controller for distributing the operations to the hosts. Ensure the quantum computing simulator has been created before calling this.
| circuit | The circuit to execute. |
Implements Network::INetwork< Time >.
Definition at line 107 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetState(), Simulators::kMatrixProductState, Simulators::kQCSim, Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), Circuits::OperationState::SetResultsInOrder(), and Network::SimpleDisconnectedNetwork< Time, Controller >::simulator.
|
inlineoverridevirtual |
Execute the circuit on the network and return the expectation values for the specified Pauli strings.
Execute the circuit on the network, using the controller for distributing the operations to the hosts and return the expectation values for the specified Pauli strings. The base class functionality is used for circuit distribution, but then the distributed circuit is converted to netqasm. Ensure the quantum computing simulator and the netqasm virtual machines have been created before calling this.
| circuit | The circuit to execute. |
| paulis | The Pauli strings to measure the expectations for. |
Implements Network::INetwork< Time >.
Definition at line 200 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::controller, Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetState(), Simulators::kMatrixProductState, Simulators::kQCSim, Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), Circuits::OperationState::SetResultsInOrder(), and Network::SimpleDisconnectedNetwork< Time, Controller >::simulator.
|
inlineoverridevirtual |
Execute the circuit on the specified host.
Execute the circuit on the specified host. The circuit must fit on the host, otherwise an exception is thrown. The circuit will be mapped on the specified host, if its qubits start with indexing from 0 (if already mapped, the qubits won't be altered).
| circuit | The circuit to execute. |
| hostId | The id of the host to execute the circuit on. |
Implements Network::INetwork< Time >.
Definition at line 152 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetState(), Simulators::kMatrixProductState, Simulators::kQCSim, Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost(), Circuits::OperationState::SetResultsInOrder(), and Network::SimpleDisconnectedNetwork< Time, Controller >::simulator.
|
inlineoverridevirtual |
Execute circuit on host and return full statevector amplitudes.
Execute the circuit on the specified host and return the complex amplitudes of the resulting quantum state (one per basis state 0..2^n-1). Supported for Statevector and MPS simulation types.
| circuit | The circuit to execute. |
| hostId | The id of the host to execute the circuit on. |
Implements Network::INetwork< Time >.
Definition at line 372 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetState(), Simulators::kMatrixProductState, Simulators::kQCSim, Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost(), Circuits::OperationState::SetResultsInOrder(), and Network::SimpleDisconnectedNetwork< Time, Controller >::simulator.
|
inlineoverridevirtual |
Execute the circuit on the specified host and return the expectation values for the specified Pauli strings.
Execute the circuit on the specified host and return the expectation values for the specified Pauli strings. The circuit must fit on the host, otherwise an exception is thrown. The circuit will be mapped on the specified host, if its qubits start with indexing from 0 (if already mapped, the qubits won't be altered).
| circuit | The circuit to execute. |
| hostId | The id of the host to execute the circuit on. |
| paulis | The Pauli strings to measure the expectations for. |
Implements Network::INetwork< Time >.
Definition at line 280 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetState(), Simulators::kMatrixProductState, Simulators::kQCSim, Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost(), Circuits::OperationState::SetResultsInOrder(), and Network::SimpleDisconnectedNetwork< Time, Controller >::simulator.
|
inlineoverridevirtual |
Execute circuit on host and return the projection onto the zero state.
Execute the circuit on the specified host and return <0|Psi>, the inner product of the resulting quantum state with the all-zeros basis state. This is equivalent to Amplitude(0) but can be faster for certain simulator back-ends (e.g. MPS).
| circuit | The circuit to execute. |
| hostId | The id of the host to execute the circuit on. |
Implements Network::INetwork< Time >.
Definition at line 463 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetState(), Simulators::kMatrixProductState, Simulators::kQCSim, Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost(), Circuits::OperationState::SetResultsInOrder(), and Network::SimpleDisconnectedNetwork< Time, Controller >::simulator.
|
inlineoverridevirtual |
Schedule and execute circuits on the network.
Execute the circuits on the network, scheduling their execution and distributing the operations to the hosts. The way the circuits are distributed to the hosts depends on the specific interface implementations. The way they are scheduled depends on the network scheduler and parametrization.
| circuits | The circuits to execute, along with the number of shots. |
Implements Network::INetwork< Time >.
Definition at line 902 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::CreateScheduler(), and Network::SimpleDisconnectedNetwork< Time, Controller >::GetScheduler().
|
inlineoverridevirtual |
Checks if a gate expects a classical bit from another host.
It must be a conditional gate, conditioned on a classical bit from another host. Use it on already distributed gates, not on the original circuit.
| op | The operation to check. |
Implements Network::INetwork< Time >.
Definition at line 1341 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::GetHostIdForAnyQubit(), and Network::SimpleDisconnectedNetwork< Time, Controller >::GetHostIdForClassicalBit().
|
inlineoverridevirtual |
Get the classical bit ids for the specified host.
Get the classical bit ids for the specified host, excluding the one(s) used for measurement of entanglemen qubits between the hosts.
| hostId | The id of the host to get the classical bit ids for. |
Implements Network::INetwork< Time >.
Definition at line 1569 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
|
inlineoverridevirtual |
Get the controller for the network.
Gets a smart pointer to the controller for the network.
Implements Network::INetwork< Time >.
Definition at line 1068 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::controller.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
inlineoverridevirtual |
Get the distributed circuit.
Get the distributed circuit. Execute() must be called first, otherwise the return would be nullptr.
Implements Network::INetwork< Time >.
Definition at line 1697 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::distCirc.
|
inlineoverridevirtual |
Get the classical bit ids used for measurement of entanglement qubits between the hosts for the specified host.
Get the classical bit ids used for measurement of entanglement qubits between the hosts for the specified host.
| hostId | The id of the host to get the classical bit ids for. |
Implements Network::INetwork< Time >.
Definition at line 1585 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
|
inlineoverridevirtual |
Get the host with the specified id.
Get a smart pointer to the host that has the specified id.
| hostId | The id of the host to get. |
Implements Network::INetwork< Time >.
Definition at line 1054 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::MapCircuitOnHost().
|
inlineoverridevirtual |
Get the host id for the specified qubit.
Get the host id for the squbit, including the qubits used for entanglement between hosts.
| qubitId | The id of the qubit to get the host id for. |
Implements Network::INetwork< Time >.
Definition at line 1506 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::GetHostIdForEntangledQubit(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetHostIdForQubit(), and Network::SimpleDisconnectedNetwork< Time, Controller >::IsNetworkEntangledQubit().
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ExpectsClassicalBitFromOtherHost().
|
inlineoverridevirtual |
Get the host id for the specified classical bit.
Get the host id for the specified classical bit, excluding the one(s) used for measurement of entanglement qubits between the hosts.
| classicalBitId | The id of the classical bit to get the host id for. |
Implements Network::INetwork< Time >.
Definition at line 1522 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ExpectsClassicalBitFromOtherHost(), and Network::SimpleDisconnectedNetwork< Time, Controller >::GetHostIdForClassicalControl().
|
inlineoverridevirtual |
Get the host id where the classical control bit resides for a conditioned gate.
It must be a conditional gate, conditioned on a qubit from another host. Use it on already distributed gates, not on the original circuit.
| op | The operation to find the host of the control bit. |
Implements Network::INetwork< Time >.
Definition at line 1377 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::GetHostIdForClassicalBit().
|
inlineoverridevirtual |
Get the host id for the specified qubit used for entanglement between hosts.
Get the host id for the specified qubit used for entanglement between hosts.
| qubitId | The id of the qubit used for entanglement between hosts to get the host id for. |
Implements Network::INetwork< Time >.
Definition at line 1490 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::GetHostIdForAnyQubit().
|
inlineoverridevirtual |
Get the host id for the specified qubit.
Get the host id for the specified qubit, excluding the qubits used for entanglement between hosts.
| qubitId | The id of the qubit to get the host id for. |
Implements Network::INetwork< Time >.
Definition at line 1471 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::GetHostIdForAnyQubit().
|
inline |
Get the hosts in the network.
Gets the hosts in the network.
Definition at line 1188 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
|
inlineoverridevirtual |
Implements Network::INetwork< Time >.
Definition at line 2062 of file SimpleDisconnectedNetwork.h.
|
inlineoverridevirtual |
Get the last used simulation type.
Get the last used simulation type.
Implements Network::INetwork< Time >.
Definition at line 1720 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::lastMethod.
|
inlineoverridevirtual |
Get the last used simulator type.
Get the last used simulator type.
Implements Network::INetwork< Time >.
Definition at line 1709 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::lastSimulatorType.
|
inlineoverridevirtual |
Get the maximum number of simulators that can be used in the network.
Get the maximum number of simulators that can be used in the network. This is used to limit the number of simulators (and corresponding threads) that can be used in the network.
Implements Network::INetwork< Time >.
Definition at line 1734 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::maxSimulators.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ChooseBestSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
inlineoverridevirtual |
Implements Network::INetwork< Time >.
Definition at line 2070 of file SimpleDisconnectedNetwork.h.
|
inlineoverridevirtual |
Implements Network::INetwork< Time >.
Definition at line 2078 of file SimpleDisconnectedNetwork.h.
|
inlineoverridevirtual |
Get the qubit ids used for entanglement between hosts for the specified host.
Get the qubit ids used for entanglement between hosts for the specified host.
| hostId | The id of the host to get the qubit ids for. |
Implements Network::INetwork< Time >.
Definition at line 1553 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
|
inlineoverridevirtual |
Get the number of gates that span more than one host.
Get the number of gates that span more than one host for the given circuit.
| circuit | The circuit to check. |
Implements Network::INetwork< Time >.
Definition at line 874 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::IsLocalOperation().
|
inlineoverridevirtual |
Get the number of classical bits in the network.
Get the number of classical bits in the network, excluding the classical bits used for measurement of entanglement qubits between the hosts.
Implements Network::INetwork< Time >.
Definition at line 1154 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ConvertBackResults(), Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute().
|
inlineoverridevirtual |
Get the number of classical bits in the network for the specified host.
Get the number of classical bits in the network for the specified host, excluding the classical bits used for measurement of entanglement qubits between the hosts.
| hostId | The id of the host to get the number of classical bits for. |
Implements Network::INetwork< Time >.
Definition at line 1173 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::Clone().
|
inlineoverridevirtual |
Get the number of hosts in the network.
Get the number of hosts in the network, excluding the controller.
Implements Network::INetwork< Time >.
Definition at line 1079 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::Clone(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
inlineoverridevirtual |
Get the number of qubits used for entanglement between hosts.
Get the number of qubits used for entanglement between hosts in the network. For the simple network it's one qubit per host.
Implements Network::INetwork< Time >.
Definition at line 1120 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute().
|
inlineoverridevirtual |
Get the number of qubits used for entanglement between hosts for the specified host.
Get the number of qubits used for entanglement between hosts in the network for the specified host. For the simple network it's a single qubit.
| hostId | The id of the host to get the number of qubits used for entanglement between hosts for. |
Implements Network::INetwork< Time >.
Definition at line 1140 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
|
inlineoverridevirtual |
Get the number of qubits in the network.
Get the number of qubits in the network, excluding the qubits used for entanglement between the hosts.
Implements Network::INetwork< Time >.
Definition at line 1089 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::IsNetworkEntangledQubit(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute().
|
inlineoverridevirtual |
Get the number of qubits in the network for the specified host.
Get the number of qubits in the network for the specified host, excluding the qubits used for entanglement between the hosts.
| hostId | The id of the host to get the number of qubits for. |
Implements Network::INetwork< Time >.
Definition at line 1106 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::Clone().
|
inlineoverridevirtual |
Returns the 'optimize' flag.
Returns the flag set by SetOptimizeSimulator().
Implements Network::INetwork< Time >.
Definition at line 1776 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::optimizeSimulator.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
inlineinherited |
Get a shared pointer to this object.
Returns a shared pointer to this object. The object needs to be already wrapped in a shared pointer.
Definition at line 772 of file Network.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::CreateScheduler(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute().
|
inlineoverridevirtual |
Get the qubit ids for the specified host.
Get the qubit ids for the specified host.
| hostId | The id of the host to get the qubit ids for. |
Implements Network::INetwork< Time >.
Definition at line 1537 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::hosts.
|
inlineoverridevirtual |
Get the scheduler for the network.
Get the scheduler for the network.
Implements Network::INetwork< Time >.
Definition at line 1039 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::controller.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteScheduled().
|
inlineoverridevirtual |
Get the simulator for the network.
Get the simulator for the network.
Implements Network::INetwork< Time >.
Definition at line 998 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::simulator.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::Clone().
|
inlineoverridevirtual |
Get the optimizations simulators set.
Get the optimization simulators set. To be used internally, will not be exposed from the library.
Implements Network::INetwork< Time >.
Definition at line 1786 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::simulatorsForOptimizations.
|
inlineoverridevirtual |
Get the classical state of the network.
Gets a reference to the classical state of the network.
Implements Network::INetwork< Time >.
Definition at line 1010 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::classicalState.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ConvertBackState(), Network::SimpleDisconnectedNetwork< Time, Controller >::Execute(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteExpectations(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHostAmplitudes(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHostExpectations(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHostProjectOnZero(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
inlinevirtualinherited |
Get the text code that is executed on the hosts.
Get the text code that is executed on the hosts, if available. The circuit might be converted to code to be executed (example: netqasm). If that's the case, the text code is returned in an array, each element of the array being the code for a host. Each host might have multiple subroutines, so each element of the array is an array of strings, each string being a subroutine.
|
inlineoverridevirtual |
Get the type of the network.
Get the type of the network.
Implements Network::INetwork< Time >.
Definition at line 1226 of file SimpleDisconnectedNetwork.h.
References Network::kSimpleDisconnectedNetwork.
|
inlineoverridevirtual |
Check if the circuit operation is distributed.
Check if the specified circuit operation is distributed. A distributed operation is an operation that is executed on multiple hosts. This does not include the operations that also operate on the entanglement qubits between hosts.
| op | The operation to check. |
Implements Network::INetwork< Time >.
Definition at line 1266 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::AreQubitsOnSameHost(), and Network::SimpleDisconnectedNetwork< Time, Controller >::IsNetworkEntangledQubit().
|
inlineoverridevirtual |
Check if the specified qubit used for entanglement between hosts is busy.
Check if the specified qubit used for entanglement between hosts is busy. It's not used in the simple network, because it doesn't allow quantum communication between hosts.
| qubitId | The id of the qubit to check. |
Implements Network::INetwork< Time >.
Definition at line 1619 of file SimpleDisconnectedNetwork.h.
|
inlineoverridevirtual |
Checks if a gate is an entangling gate.
An entangling gate is a gate that operates on two qubits that are used for entanglement between hosts.
| op | The operation to check. |
Implements Network::INetwork< Time >.
Definition at line 1321 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::IsNetworkEntangledQubit(), and Circuits::kGate.
|
inlineoverridevirtual |
Check if the circuit operation is local.
Check if the specified circuit operation is local. A local operation is an operation that is executed on a single host. This does not include the operations that also operate on the entanglement qubits between hosts.
| op | The operation to check. |
Implements Network::INetwork< Time >.
Definition at line 1240 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::AreQubitsOnSameHost().
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumberOfGatesDistributedOrCut().
|
inlineoverridevirtual |
Check if the specified qubit id is for a qubit used for entanglement between hosts.
Check if the specified qubit id is for a qubit used for entanglement between hosts.
| qubitId | The id of the qubit to check. |
Implements Network::INetwork< Time >.
Definition at line 1603 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumQubits().
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::GetHostIdForAnyQubit(), Network::SimpleDisconnectedNetwork< Time, Controller >::IsDistributedOperation(), Network::SimpleDisconnectedNetwork< Time, Controller >::IsEntanglingGate(), and Network::SimpleDisconnectedNetwork< Time, Controller >::OperatesWithNetworkEntangledQubit().
|
inlineprotected |
Map the circuit on the host.
Map the circuit on the host. It's used only if there is an execution on a single host and the passed circuit had a different mapping for qubits than the host qubits.
| circuit | The circuit to map. |
| hostId | The id of the host to map the circuit on. |
Definition at line 2184 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::distCirc, and Network::SimpleDisconnectedNetwork< Time, Controller >::GetHost().
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
inlineoverridevirtual |
Mark the specified qubit used for entanglement between hosts as free.
Mark the specified qubit used for entanglement between hosts as free. This is used to mark the qubits as free when they are not used anymore for an entanglement between hosts. It's not used in the simple network, because it doesn't allow quantum communication between hosts.
| qubitId | The id of the qubit to mark as free. |
Implements Network::INetwork< Time >.
Definition at line 1669 of file SimpleDisconnectedNetwork.h.
|
inlineoverridevirtual |
Mark the pair of the specified qubits used for entanglement between hosts as busy.
Mark the pair of the specified qubits used for entanglement between hosts as busy. This is used to mark the qubits as busy when they are used for creating an entanglement between hosts. It's not used in the simple network, because it doesn't allow quantum communication between hosts.
| qubitId1 | The id of the first qubit to mark as busy. |
| qubitId2 | The id of the second qubit to mark as busy. |
Implements Network::INetwork< Time >.
Definition at line 1653 of file SimpleDisconnectedNetwork.h.
|
inlineoverridevirtual |
Check if the circuit operation operates on the entanglement qubits between hosts.
Check if the specified circuit operation operates on the entanglement qubits between hosts.
| op | The operation to check. |
Implements Network::INetwork< Time >.
Definition at line 1300 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::IsNetworkEntangledQubit().
|
inlineoverridevirtual |
Checks if a simulator exists in the optimization set.
Checks if a simulator exists in the optimization set.
| type | The type of the simulator to check. |
| kind | The kind of the simulation to check. |
Implements Network::INetwork< Time >.
Definition at line 1844 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::simulatorsForOptimizations.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ChooseBestSimulator().
|
inlineoverridevirtual |
Removes all simulators from the simulators optimization set and adds the one specified.
Removes all simulators from the simulators optimization set and adds the one specified.
| type | The type of the simulator to add. |
| kind | The kind of the simulation to add. |
Implements Network::INetwork< Time >.
Definition at line 1827 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::simulatorsForOptimizations.
|
inlineoverridevirtual |
Removes a simulator from the simulators optimization set.
Removes a simulator from the simulators optimization set, if it exists.
| type | The type of the simulator to remove. |
| kind | The kind of the simulation to remove. |
Implements Network::INetwork< Time >.
Definition at line 1812 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::simulatorsForOptimizations.
|
inlineoverridevirtual |
Execute the circuit on the network, repeatedly.
Execute the circuit on the network, distributing the operations to the hosts, repeating the execution 'shots' times. The way the circuit is distributed to the hosts depends on the specific interface implementations.
| circuit | The circuit to execute. |
| shots | The number of times to repeat the execution. |
Implements Network::INetwork< Time >.
Definition at line 519 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::ChooseBestSimulator(), Circuits::OperationState::Clear(), Network::SimpleDisconnectedNetwork< Time, Controller >::controller, Network::SimpleDisconnectedNetwork< Time, Controller >::ConvertBackResults(), Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::distCirc, Network::SimpleDisconnectedNetwork< Time, Controller >::GetMaxSimulators(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumClassicalBits(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumNetworkEntangledQubits(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumQubits(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetOptimizeSimulator(), Network::INetwork< Time >::getptr(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetState(), Simulators::kCompositeQCSim, Simulators::kCompositeQiskitAer, Simulators::kGpuSim, Simulators::kQCSim, Simulators::kQiskitAer, Simulators::kQuestSim, Simulators::kStabilizer, Simulators::kStatevector, Network::SimpleDisconnectedNetwork< Time, Controller >::lastMethod, Network::SimpleDisconnectedNetwork< Time, Controller >::lastSimulatorType, Network::SimpleDisconnectedNetwork< Time, Controller >::maxBondDim, Network::SimpleDisconnectedNetwork< Time, Controller >::mpsSample, Network::SimpleDisconnectedNetwork< Time, Controller >::optimizeSimulator, Network::SimpleDisconnectedNetwork< Time, Controller >::simulator, Network::SimpleDisconnectedNetwork< Time, Controller >::simulatorsEstimator, and Network::SimpleDisconnectedNetwork< Time, Controller >::singularValueThreshold.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::Execute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteExpectations().
|
inlineinherited |
Execute the circuit on the network, repeatedly.
Execute the circuit on the network, distributing the operations to the hosts, repeating the execution 'shots' times. The way the circuit is distributed to the hosts depends on the specific interface implementations.
| executeCircuit | The circuit to execute, together with the number of shots. |
Definition at line 223 of file Network.h.
References Schedulers::ExecuteCircuit< Time >::circuit, Network::INetwork< Time >::RepeatedExecute(), and Schedulers::ExecuteCircuit< Time >::shots.
|
inlineinherited |
Execute the circuit on the specified host, repeatedly.
Execute the circuit on the specified host, repeating the execution 'shots' times. The circuit must fit on the host, otherwise an exception is thrown. The circuit will be mapped on the specified host, if its qubits start with indexing from 0 (if already mapped, the qubits won't be altered).
| executeCircuit | The circuit to execute, together with the number of shots. |
| hostId | The id of the host to execute the circuit on. |
Definition at line 265 of file Network.h.
References Schedulers::ExecuteCircuit< Time >::circuit, Network::INetwork< Time >::RepeatedExecuteOnHost(), and Schedulers::ExecuteCircuit< Time >::shots.
|
inlineoverridevirtual |
Execute the circuit on the specified host, repeatedly.
Execute the circuit on the specified host, repeating the execution 'shots' times. The circuit must fit on the host, otherwise an exception is thrown. The circuit will be mapped on the specified host, if its qubits start with indexing from 0 (if already mapped, the qubits won't be altered).
| circuit | The circuit to execute. |
| hostId | The id of the host to execute the circuit on. |
| shots | The number of times to repeat the execution. |
Implements Network::INetwork< Time >.
Definition at line 711 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::ChooseBestSimulator(), Circuits::OperationState::Clear(), Network::SimpleDisconnectedNetwork< Time, Controller >::ConvertBackResults(), Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::distCirc, Network::SimpleDisconnectedNetwork< Time, Controller >::GetController(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetMaxSimulators(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumHosts(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetOptimizeSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetState(), Simulators::kCompositeQCSim, Simulators::kCompositeQiskitAer, Simulators::kGpuSim, Simulators::kQCSim, Simulators::kQiskitAer, Simulators::kQuestSim, Simulators::kStabilizer, Simulators::kStatevector, Network::SimpleDisconnectedNetwork< Time, Controller >::lastMethod, Network::SimpleDisconnectedNetwork< Time, Controller >::lastSimulatorType, Network::SimpleDisconnectedNetwork< Time, Controller >::MapCircuitOnHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::maxBondDim, Network::SimpleDisconnectedNetwork< Time, Controller >::mpsSample, Network::SimpleDisconnectedNetwork< Time, Controller >::simulator, and Network::SimpleDisconnectedNetwork< Time, Controller >::singularValueThreshold.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHostAmplitudes(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHostExpectations(), and Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHostProjectOnZero().
|
inlineoverridevirtual |
Sends a packet between two hosts.
Sends a packet between the two specified hosts. It's not used in the simple network, because sending/receiving the classical information is done using a shared classical state for the simulator.
| fromHostId | The id of the host to send the packet from. |
| toHostId | The id of the host to send the packet to. |
| packet | The packet to send. |
Implements Network::INetwork< Time >.
Definition at line 1214 of file SimpleDisconnectedNetwork.h.
|
inline |
Set the network controller host.
Sets the network controller host.
| [in] | cntrl | The controller host. |
Definition at line 1197 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::controller.
|
inlineoverridevirtual |
Implements Network::INetwork< Time >.
Definition at line 2058 of file SimpleDisconnectedNetwork.h.
|
inlineoverridevirtual |
Set the maximum number of simulators that can be used in the network.
Set the maximum number of simulators that can be used in the network. This is used to limit the number of simulators (and corresponding threads) that can be used in the network.
| maxSimulators | The maximum number of simulators that can be used in the network. |
Implements Network::INetwork< Time >.
Definition at line 1747 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::maxSimulators.
|
inlineoverridevirtual |
Implements Network::INetwork< Time >.
Definition at line 2066 of file SimpleDisconnectedNetwork.h.
|
inlineoverridevirtual |
Implements Network::INetwork< Time >.
Definition at line 2074 of file SimpleDisconnectedNetwork.h.
|
inlineoverridevirtual |
Allows using an optimized simulator.
If set, allows changing the simulator with an optimized one. States/amplitudes are not available in such a case, disable if you need them.
| optimize | If true, the simulator will be optimized if possible. |
Implements Network::INetwork< Time >.
Definition at line 1765 of file SimpleDisconnectedNetwork.h.
References Network::SimpleDisconnectedNetwork< Time, Controller >::optimizeSimulator.
|
protected |
The classical state of the network.
Definition at line 2283 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), and Network::SimpleDisconnectedNetwork< Time, Controller >::GetState().
|
protected |
The controller for the network.
Definition at line 2291 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ConvertBackResults(), Network::SimpleDisconnectedNetwork< Time, Controller >::ConvertBackState(), Network::SimpleDisconnectedNetwork< Time, Controller >::CreateNetwork(), Network::SimpleDisconnectedNetwork< Time, Controller >::CreateScheduler(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteExpectations(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetController(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetScheduler(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::SetController().
|
protected |
The distributed circuit.
Definition at line 2288 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::GetDistributedCircuit(), Network::SimpleDisconnectedNetwork< Time, Controller >::MapCircuitOnHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
protected |
The hosts in the network.
Definition at line 2296 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::AreClassicalBitsOnSameHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::AreQubitAndClassicalBitOnSameHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::AreQubitsOnSameHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::CreateNetwork(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetClassicalBitsIds(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetEntangledQubitMeasurementBitIds(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetHostIdForClassicalBit(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetHostIdForEntangledQubit(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetHostIdForQubit(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetHosts(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNetworkEntangledQubitsIds(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumClassicalBits(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumClassicalBitsForHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumHosts(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumNetworkEntangledQubits(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumNetworkEntangledQubitsForHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumQubits(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetNumQubitsForHost(), and Network::SimpleDisconnectedNetwork< Time, Controller >::GetQubitsIds().
|
protected |
The last simulation method used.
Definition at line 2269 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::GetLastSimulationType(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
protected |
The last simulator type used.
Definition at line 2267 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::GetLastSimulatorType(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
protected |
Definition at line 2273 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ChooseBestSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::Clone(), Network::SimpleDisconnectedNetwork< Time, Controller >::Configure(), Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
protected |
The maximum number of simulators that can be used in the network.
Definition at line 2278 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::Configure(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetMaxSimulators(), and Network::SimpleDisconnectedNetwork< Time, Controller >::SetMaxSimulators().
|
protected |
Definition at line 2275 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ChooseBestSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::Clone(), Network::SimpleDisconnectedNetwork< Time, Controller >::Configure(), Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
protected |
The flag to optimize the simulator.
Definition at line 2264 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ChooseBestSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetOptimizeSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::SetOptimizeSimulator().
|
protected |
The quantum computing simulator for the network.
Definition at line 2285 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::Configure(), Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::Execute(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteExpectations(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHost(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHostAmplitudes(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHostExpectations(), Network::SimpleDisconnectedNetwork< Time, Controller >::ExecuteOnHostProjectOnZero(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
protected |
The simulators estimator.
Definition at line 2299 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ChooseBestSimulator(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute().
|
protected |
Definition at line 2265 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::AddOptimizationSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::ChooseBestSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::GetSimulatorsSet(), Network::SimpleDisconnectedNetwork< Time, Controller >::OptimizationSimulatorExists(), Network::SimpleDisconnectedNetwork< Time, Controller >::RemoveAllOptimizationSimulatorsAndAdd(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RemoveOptimizationSimulator().
|
protected |
Definition at line 2274 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::ChooseBestSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::Clone(), Network::SimpleDisconnectedNetwork< Time, Controller >::Configure(), Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator(), Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecute(), and Network::SimpleDisconnectedNetwork< Time, Controller >::RepeatedExecuteOnHost().
|
protected |
Definition at line 2276 of file SimpleDisconnectedNetwork.h.
Referenced by Network::SimpleDisconnectedNetwork< Time, Controller >::Configure(), and Network::SimpleDisconnectedNetwork< Time, Controller >::CreateSimulator().