UnitarySynthesisPlugin
class qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin
Basen: ABC
Abstrakte unitäre Synthese-Plugin-Klasse
Diese abstrakte Klasse definiert die Schnittstelle für unitäre Synthese-Plugins.
Attribute
max_qubits
Gibt die maximale Anzahl von Qubits zurück, die das Unitary Synthesis Plugin unterstützt.
Wenn die Größe der zu synthetisierenden Einheit diesen Wert überschreitet, wird das Plugin default verwendet. Wenn es keine obere Grenze gibt, wird None zurückgegeben und alle Unitaries (>= min_qubits wenn es definiert ist) werden an dieses Plugin übergeben, wenn es aktiviert ist.
min_qubits
Gibt die minimale Anzahl von Qubits zurück, die das Unitary Synthesis Plugin unterstützt.
Wenn die Größe der zu synthetisierenden Einheit unter diesem Wert liegt, wird das Plugin default verwendet. Wenn es keine untere Schranke gibt, wird None zurückgegeben und alle Unitaries (<= max_qubits , wenn es definiert ist) werden an dieses Plugin übergeben, wenn es aktiviert ist.
supported_bases
Gibt ein Wörterbuch der unterstützten Basen für die Synthese zurück
Es wird erwartet, dass ein Wörterbuch zurückgegeben wird, bei dem der Schlüssel eine Zeichenkette basis und der Wert eine Liste von Gatternamen ist, in denen die basis arbeitet. Wenn die Synthesemethode nicht mehrere Basen unterstützt, sollte dies None zurückgeben. Zum Beispiel:
{
"XZX": ["rz", "rx"],
"XYX": ["rx", "ry"],
}Wird von dieser Methode ein Wörterbuch zurückgegeben, wird dem Lauf kwargs ein Parameter matched_basis übergeben, der eine Liste der Basiszeichenketten (d.h. Schlüssel im Wörterbuch) enthält, die mit dem für die Transpilierung festgelegten Ziel-Basistor übereinstimmen. Wenn kein Eintrag im Wörterbuch mit dem Ziel-Basis-Gate-Set übereinstimmt, wird der matched_basis kwarg auf eine leere Liste gesetzt, und ein Plugin kann wählen, wie es mit dem Ziel-Basis-Gate-Set umgehen will, das nicht den Fähigkeiten des Plugins entspricht.
supports_basis_gates
Gibt zurück, ob das Plugin die Aufnahme von basis_gates
Wenn dies True zurückgibt, wird der run() Methode des Plugins ein basis_gates kwarg mit einer Liste von Gate-Namen übergeben, die das Ziel-Backend unterstützt. Zum Beispiel ['sx', 'x', 'cx', 'id', 'rz'].
supports_coupling_map
Gibt zurück, ob das Plugin die Aufnahme von coupling_map
Wenn dies True zurückgibt, erhält die Methode run() des Plugins einen Warg coupling_map. Der coupling_map kwarg wird auf ein Tupel gesetzt, wobei das erste Element ein CouplingMap objekt ist, das die Qubit-Konnektivität des Ziel-Backends darstellt, das zweite Element ist eine Liste von Ganzzahlen, die die Qubit-Indizes in der Kopplungskarte darstellen, auf der sich die Unitary befindet. Beachten Sie, dass der Wert von coupling_map kwarg (None, qubit_indices) lautet, wenn für das Ziel-Backend keine Kopplungskarte festgelegt ist.
supports_gate_errors
Gibt zurück, ob das Plugin die Aufnahme von gate_errors
gate_errors wird ein Wörterbuch in Form von {gate_name: {(qubit_1, qubit_2): error}} sein. Zum Beispiel:
{
'sx': {(0,): 0.0006149355812506126, (1,): 0.0006149355812506126},
'cx': {(0, 1): 0.012012477900732316, (1, 0): 5.191111111111111e-07}
}Beachten Sie, dass dieses Wörterbuch möglicherweise nicht vollständig oder leer ist, da es davon abhängt, dass das Ziel-Backend Gate-Fehler für jedes Gate und jedes Qubit meldet. Die in gate_errors gemeldeten Gate-Fehlerraten werden vom Zielgerät Backend object bereitgestellt und die genaue Bedeutung kann je nach Backend unterschiedlich sein.
supports_gate_errors_by_qubit
Gibt zurück, ob das Plugin die Aufnahme von gate_errors_by_qubit
Dies unterscheidet sich von supports_gate_errors/gate_errors durch die Verwendung einer anderen Sichtweise auf dieselben Daten. Anstelle des Gatternamens wird dieser durch ein Qubit verschlüsselt und verwendet Gate instanzen zur Darstellung von Gattern (anstelle von Gatternamen).
gate_errors_by_qubit wird ein Wörterbuch in Form von {(qubits,): [Gate, error]} sein. Zum Beispiel:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}Beachten Sie, dass dieses Wörterbuch möglicherweise nicht vollständig oder leer ist, da es davon abhängt, dass das Ziel-Backend Gate-Fehler für jedes Gate und jedes Qubit meldet. Die in gate_errors gemeldeten Gate-Fehlerraten werden vom Zielgerät Backend object bereitgestellt und die genaue Bedeutung kann je nach Backend unterschiedlich sein.
Standardmäßig ist dies False
supports_gate_lengths
Gibt zurück, ob das Plugin die Aufnahme von gate_lengths
gate_lengths wird ein Wörterbuch in Form von {gate_name: {(qubit_1, qubit_2): length}} sein. Zum Beispiel:
{
'sx': {(0,): 0.0006149355812506126, (1,): 0.0006149355812506126},
'cx': {(0, 1): 0.012012477900732316, (1, 0): 5.191111111111111e-07}
}wobei der Wert length in Sekundeneinheiten angegeben ist.
Beachten Sie, dass dieses Wörterbuch möglicherweise nicht vollständig ist oder leer sein könnte, da es davon abhängt, dass das Ziel-Backend die Gatelängen für jedes Gatter für jedes Qubit meldet.
supports_gate_lengths_by_qubit
Gibt zurück, ob das Plugin die Aufnahme von gate_lengths_by_qubit
Dies unterscheidet sich von supports_gate_lengths/gate_lengths durch die Verwendung einer anderen Sichtweise auf dieselben Daten. Anstatt nach Gatternamen wird hier nach Qubit verschlüsselt und es werden Gate instanzen zur Darstellung von Gattern (anstelle von Gatternamen)
gate_lengths_by_qubit wird ein Wörterbuch in Form von {(qubits,): [Gate, length]} sein. Zum Beispiel:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}wobei der Wert length in Sekundeneinheiten angegeben ist.
Beachten Sie, dass dieses Wörterbuch möglicherweise nicht vollständig ist oder leer sein könnte, da es davon abhängt, dass das Ziel-Backend die Gatelängen für jedes Gatter für jedes Qubit meldet.
Standardmäßig ist dies False
supports_natural_direction
Gibt zurück, ob das Plugin einen Toggle zur Berücksichtigung der Direktionalität von 2-Qubit-Gattern als natural_direction unterstützt.
Die möglichen Werte und die Bedeutung dieser Werte finden Sie in der Dokumentation zu UnitarySynthesis für die möglichen Werte und die Bedeutung dieser Werte.
supports_pulse_optimize
Gibt zurück, ob das Plugin eine Umschaltfunktion zur Optimierung von Impulsen während der Synthese unterstützt: pulse_optimize.
Die möglichen Werte und die Bedeutung dieser Werte finden Sie in der Dokumentation zu UnitarySynthesis für die möglichen Werte und die Bedeutung dieser Werte.
supports_target
Ob das Plugin die Aufnahme von target als Option unterstützt
target ist ein Target objekt, das das Zielgerät für die Ausgabe des Synthesedurchgangs darstellt.
Standardmäßig wird dies False sein, da die Plugin-Schnittstelle vor der Target klasse vorausgeht. Wenn ein Plugin True für dieses Attribut zurückgibt, wird erwartet, dass das Plugin die Target anstelle der übergebenen Werte verwendet, wenn einer der Parameter supports_gate_lengths, supports_gate_errors, supports_coupling_map und supports_basis_gates gesetzt ist (obwohl idealerweise alle diese Parameter doppelte Informationen enthalten sollten).
Methoden
run
abstractmethod run(unitary, **options)
Durchführung der Synthese für die angegebene unitäre Matrix
Parameter
- unitary (numpy.ndarray) – Die zu synthetisierende unitäre Matrix zu einem
DAGCircuitobjekt - options - Die optionalen kwargs, die basierend auf der Ausgabe der
support_*Methoden der Klasse übergeben werden. Schauen Sie in der Dokumentation zu diesen Methoden unterUnitarySynthesisPluginum zu sehen, was die Schlüssel und Werte sind.
Rückgabe
Die dag-Schaltkreis-Darstellung der Unitary. Alternativ können Sie ein Tupel der Form (dag, wires) zurückgeben, wobei dag die dag-Schaltkreisdarstellung der Schaltkreisdarstellung der Einheit ist und wires die Abbildungsdrähte, die für qiskit.dagcircuit.DAGCircuit.substitute_node_with_dag(). Wenn Sie ein Tupel zurückgeben und wires None ist, verhält sich dies genauso, als ob nur ein DAGCircuit zurückgegeben wurde. Außerdem wird keine Ersetzung vorgenommen, wenn die Antwort None lautet.
Rückgabetyp