|
Maestro 0.1.0
Unified interface for quantum circuit simulation
|
Remapper abstract class. More...
#include <Remapper.h>
Public Member Functions | |
| virtual | ~IRemapper ()=default |
| Default virtual destructor. | |
| virtual std::shared_ptr< Circuits::Circuit< Time > > | Remap (const std::shared_ptr< Network::INetwork< Time > > &network, const std::shared_ptr< Circuits::Circuit< Time > > &circuit)=0 |
| Remap the circuit. | |
| virtual unsigned int | GetNumberOfOperationsForDistribution () const =0 |
| Get the number of operations for distribution. | |
| virtual unsigned int | GetNumberOfDistributions () const =0 |
| Get the number of distribution circuits for the last remapped circuit. | |
| std::shared_ptr< IRemapper< Time > > | getptr () |
| Get a shared pointer to this object. | |
| virtual RemapperType | GetType () const =0 |
| Returns the type of the remapper. | |
| virtual std::shared_ptr< Circuits::Circuit< Time > > | SplitCompositeOperations (const std::shared_ptr< Network::INetwork< Time > > &network, const std::shared_ptr< Circuits::Circuit< Time > > &distCirc) const |
| Split composite operations. | |
Static Public Member Functions | |
| static bool | IsNonLocalOperation (const std::shared_ptr< Circuits::IOperation< Time > > &op, const std::shared_ptr< Network::INetwork< Time > > &network) |
| Checks if an operation is non local. | |
Remapper abstract class.
Remapper abstract class. Derived classes must implement the Remap function.
| Time | The type of the time. Typically either double or unsigned long long int. Default is double. |
Definition at line 47 of file Remapper.h.
|
virtualdefault |
Default virtual destructor.
Default destructor, virtual because it's an abstract class that must be derived from.
|
pure virtual |
Get the number of distribution circuits for the last remapped circuit.
Returns the number of distribution circuits for the last remapped circuit.
|
pure virtual |
Get the number of operations for distribution.
Returns the number of operations for distribution. This is the total number of operations that are added to distribute a gate (or a group of gates that share the control qubit and have the target on the same host) using the qubits for entanglement between the hosts.
|
inline |
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 98 of file Remapper.h.
|
pure virtual |
Returns the type of the remapper.
Returns the type of the remapper.
|
inlinestatic |
Checks if an operation is non local.
An operation is non local if it needs entanglement for distribution, affecting qubits on different hosts.
| op | The operation to check. |
| network | The network to use for the check. |
Definition at line 124 of file Remapper.h.
|
pure virtual |
Remap the circuit.
Remaps the circuit to a distributed one.
| network | The network to use for remapping. |
| circuit | The circuit to remap. |
|
inlinevirtual |
Split composite operations.
Splits some composite operations. There are composite operations - other than multiple qubits quantum gates - that act on multiple qubits/classical bits that might act on qubits that are not local. This function splits those operations into ones that act on a single qubit/classical bit. Operations that are split are: Measurement, RandomGen, ConditionalMeasurement, ConditionalRandomGen, Reset. For example measurements on several qubits are split into several measurements on a single qubit.
| network | The network to use for remapping. |
| distCirc | The circuit to have its operations split if needed. |
Definition at line 160 of file Remapper.h.