Skip to main content
IBM Quantum Platform

AQCSynthesisPlugin

class qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugin

GitHub

Basen: UnitarySynthesisPlugin

Ein AQC-basiertes Qiskit-Einheitssynthese-Plugin.

"aqc"Dieses Plugin wird aufgerufen, transpile() wenn der unitary_synthesis_method Parameter auf gesetzt ist.

Dieses Plugin unterstützt Anpassungen, und zusätzliche Parameter können an das Plugin übergeben werden, indem ein Wörterbuch als Parameter der transpile()unitary_synthesis_plugin_config Funktion übergeben wird.

Unterstützte Parameter im Wörterbuch:

network_layout (str)

Typ der Netzgeometrie, einer von {"sequ", "spin", "cart", "cyclic_spin", "cyclic_line"}. Standardwert ist "spin".

connectivity_type (str)

art der Inter-Qubit-Konnektivität, {"full", "line", "star"}. Der Standardwert ist "full".

tiefe (int)

tiefe des CNOT-Netzes, d. h. die Anzahl der Schichten, wobei jede Schicht aus einem einzelnen CNOT-Block besteht.

optimierer (Minimizer)

Eine Implementierung des Minimizer Protokolls, das im Optimierungsprozess verwendet werden soll.

seed (int)

Ein zufälliges Saatgut.

initial_point (ndarray)

Anfangswerte der Winkel/Parameter, mit denen der Optimierungsprozess beginnen soll.


Attribute

max_qubits

Die maximale Anzahl der unterstützten Qubits ist 14.

min_qubits

Die Mindestanzahl der unterstützten Qubits ist 3.

supported_bases

Das Plugin unterstützt keine Basen für die Synthese.

supports_basis_gates

Das Plugin unterstützt keine Basisgatter und synthetisiert standardmäßig eine Schaltung mit ["rx", "ry", "rz", "cx"] gate basis.

supports_coupling_map

Das Plugin unterstützt keine Kopplungskarten.

supports_gate_errors

Das Plugin unterstützt keine Gate-Fehler.

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

Das Plugin unterstützt keine Gate-Längen.

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

Das Plugin unterstützt keine natürliche Richtung, sondern geht von bidirektionalen Zwei-Qubit-Gattern aus.

supports_pulse_optimize

Das Plugin unterstützt keine Optimierung von Impulsen.

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

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 des 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.