Skip to main content
IBM Quantum Platform

UnitarySynthesisPlugin

class qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin

GitHub

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)

GitHub

Durchführung der Synthese für die angegebene unitäre Matrix

Parameter

  • unitary (numpy.ndarray) – Die zu synthetisierende unitäre Matrix zu einem DAGCircuit objekt
  • options - Die optionalen kwargs, die basierend auf der Ausgabe der support_* Methoden der Klasse übergeben werden. Schauen Sie in der Dokumentation zu diesen Methoden unter UnitarySynthesisPlugin um 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

DAGCircuit

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.