Skip to main content
IBM Quantum Platform

BasisTranslator

class qiskit.transpiler.passes.BasisTranslator(*args, **kwargs)

GitHub

Basen: TransformationPass

Übersetzt Gates auf eine Zielbasis, indem es nach einer Reihe von Übersetzungen aus einer gegebenen EquivalenceLibrary sucht.

Dieser Durchgang erfolgt in mehreren Schritten:

  • Bestimmen Sie die Quellenbasis aus der Eingangsschaltung.
  • Führt eine Dijkstra-Suche über Basismengen durch, wobei ausgehend von der Zielbasis des Geräts neue Gatter unter Verwendung der Regeln aus der bereitgestellten EquivalenceLibrary erzeugt werden und die Suche endet, wenn alle Gatter in der Quellbasis erzeugt wurden.
  • Der gefundene Pfad wird als Satz von Regeln aus der EquivalenceLibrary, zu einem Satz von Gatterersatzregeln zusammengesetzt.
  • Die zusammengesetzten Ersetzungsregeln werden an Ort und Stelle auf jeden Op-Knoten angewandt, der sich nicht bereits in der Ziel-Basis befindet.

Wenn das Ziel-Keyword-Argument angegeben ist und dieses Target Objekt Operationen enthält, die nicht global sind (d. h. nur für eine Teilmenge von Qubits definiert sind), wie durch berechnet get_non_global_operation_names(), versucht dieser Durchlauf, die Ausgabetranslation an diese Einschränkungen anzupassen. Bei Operationen mit einem Qubit ist dies unkompliziert: Der Durchlauf führt eine Suche durch, wobei die Vereinigung der Menge der globalen Operationen mit der Menge der Operationen, die ausschließlich auf diesem Qubit definiert sind, herangezogen wird. Bei Multi-Qubit-Gattern ist dies etwas komplexer: Zwar ähnelt das Verhalten zunächst dem Fall eines einzelnen Qubits, doch reicht es nicht aus, einfach alle Qubits zu verwenden, auf denen die Operation ausgeführt wird (wobei die Reihenfolge keine Rolle spielt). Wir müssen auch alle potenziellen lokalen Qubits berücksichtigen, die auf Teilmengen der Quantenargumente für die Multi-Qubit-Operation definiert sind. Das bedeutet, dass das Ziel, das für die Suche nach einem nicht-globalen Multi-Qubit-Gatter verwendet wird, die Vereinigung aus globalen Operationen, nicht-globalen Multi-Qubit-Gattern, die dieselben Qubits nutzen, und allen nicht-globalen Gattern ist, die auf einer beliebigen Teilmenge der verwendeten Qubits definiert sind.

Anmerkung

Bei nicht-globalen Operationen ist es möglich, dass eine einzige Ausführung dieses Durchlaufs eine unvollständige Übersetzung ergibt, wenn nicht-globale Gatter auf Qubits definiert sind, die eine Teilmenge eines größeren Multi-Qubit-Gatters sind. Wenn Sie zum Beispiel ein u Gatter nur auf Qubit 0 und ein x Gatter nur auf Qubit 1 definiert haben, ist es möglich, dass bei der Übersetzung einer 2-Qubit-Operation auf Qubit 0 und 1 der Ausgang u auf Qubit 1 und x auf Qubit 0 hat. In der Regel lassen sich diese Probleme durch einen zweiten Durchlauf beheben.


Übersetzungsfehler

Dieser Durchlauf führt zu einem Fehler, wenn kein Pfad vorhanden ist, um ein Eingangsgate in die angegebene Basis zu transformieren. Bei einem typischen/standardmäßigen Passmanager-Durchlauf wird dieser Pass jedoch mehrmals in verschiedenen Phasen der Kompilierungspipeline ausgeführt. Das bedeutet, dass die Eingangsgatter, die übersetzt werden, möglicherweise gar nicht Teil der Eingangsschaltung waren, transpile() da sie durch eine Zwischenumwandlung in der Schaltung erzeugt wurden.

Wenn dieser Fehler auftritt, bedeutet dies in der Regel, dass entweder die Zielbasis nicht universell ist oder dass in der EquivalenceLibrary vom BasisTranslator Pass verwendeten Instanz zusätzliche Äquivalenzregeln erforderlich sind. Weitere Informationen zum Hinzufügen benutzerdefinierter Äquivalenzregeln finden Sie unter „Benutzerdefinierte Basisgates “.

Initialisieren Sie eine Instanz von BasisTranslator.

param Äquivalenz_Bibliothek

Die Äquivalenzbibliothek, die für den Durchgang BasisTranslator verwendet wird. (Anweisungen in dieser Bibliothek werden bei diesem Durchgang nicht abgerollt)

typ Äquivalenz_Bibliothek

EquivalenceLibrary

param ziel_basis

Namen der Zielbasis, auf die abgerollt werden soll, z. B. ['u3', 'cx'].

typ target_basis

[liststr]

param Ziel

Das Ziel der Backend-Kompilierung

zieltyp

Ziel

param min_qubits

Die Mindestanzahl von Qubits für die zu übersetzenden Operationen im Eingabedag.

typ min_qubits

int


Attribute

is_analysis_pass

Prüfen Sie, ob der Pass ein Analysepass ist.

Wenn der Pass ein AnalysisPass, ist, bedeutet dies, dass der Pass die DAG analysieren und die Ergebnisse dieser Analyse in den Eigenschaftssatz schreiben kann. Änderungen an der DAG sind bei dieser Art von Pass nicht zulässig.

is_transformation_pass

Prüfen Sie, ob der Pass ein Transformationspass ist.

Wenn es sich bei dem Pass um TransformationPass, handelt, bedeutet dies, dass der Pass die DAG manipulieren kann, aber den Eigenschaftssatz nicht ändern kann (aber er kann gelesen werden).


Methoden

execute

execute(passmanager_ir, state, callback=None)

GitHub

Ausführen der Optimierungsaufgabe für die Eingabe Qiskit IR.

Parameter

  • passmanager_ir (DAGCircuit) – Qiskit IR zur Optimierung.
  • state (DAGCircuit) – Zustand, der mit der Ausführung des Workflows durch den Pass-Manager selbst verbunden ist.
  • callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – Eine Callback-Funktion, die bei jeder Ausführung einer Optimierungsaufgabe aufgerufen wird.

Rückgabe

Optimierte Qiskit IR und Stand des Workflows.

Rückgabetyp

Tupel [ DAGCircuit, PassManagerState ]

name

name()

GitHub

Name des Passes.

Rückgabetyp

str

run

run(dag)

GitHub

Übersetzen einer DAGCircuit-Eingabe in die Zielbasis.

Parameter

dag (DAGCircuit) – eingabetag

Erhöht

TranspilerError – falls die Zielbasis nicht erreicht werden kann

Rückgabe

schaltkreis übersetzt.

Rückgabetyp

DAGCircuit

update_status

update_status(state, run_state)

GitHub

Aktualisieren Sie den Workflow-Status.

Parameter

  • state (PassManagerState) – Übergeben Sie den Status des Managers zur Aktualisierung.
  • run_state (RunState) – Erledigungsstatus der aktuellen Aufgabe.

Rückgabe

Aktualisierter Status des Passmanagers.

Rückgabetyp

PassManagerState

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