Skip to main content
IBM Quantum Platform

Transpiler


Übersicht

Unter Transpilation versteht man den Vorgang, bei dem eine gegebene Eingangsschaltung so umgeschrieben wird, dass sie den gewünschten Kriterien entspricht, wie beispielsweise den topologischen und funktionalen Einschränkungen der Hardware, die zur Ausführung der endgültigen Schaltung verwendet wird. Wir werden dies hier nicht näher erläutern, sondern verweisen stattdessen auf die Dokumentation von Qiskit zu diesem Modul qiskit.transpiler .

Im Mittelpunkt steht hier die Erläuterung, wie wir die Transpilierung von a FermionicCircuit nach b bewerkstelligen QuantumCircuit.


Phasen

Konzeptionell unterteilen wir den Transpilationsprozess in mehrere Phasen:

Phase
Beschreibung
Eingabein die DAG-Datenstruktur konvertieren
OptimierungOptimierung auf Fermionenebene
OrientierungAnordnung von Fermionen zu Qubits
ZusammenfassungSynthese von Fermionen zu Qubits
Qubitfortgesetzte Transpilierung auf Qubit-Ebene
Ausgabeaus der DAG-Datenstruktur konvertieren

Eingabe

Die verschiedenen Transpiler-Durchläufe sind so implementiert, dass sie mit FermionicDAGCircuit als zugrunde liegender Datenstruktur zur Speicherung der Schaltungsoperationen arbeiten. Solche gerichtete azyklische Graphen (DAGs) bieten ein effizientes Datenmodell für die Durchquerung und Bearbeitung von Schaltkreisen.

Ein Endbenutzer wird jedoch eher mit einem arbeiten, da FermionicCircuit dieses eine intuitivere Benutzeroberfläche und ein intuitiveres Datenmodell bietet. Daher führt diese Eingabestufe lediglich den FermionicCircuitToDAG Transpiler-Durchlauf durch.

Optimierung

In dieser Phase der Transpilations-Pipeline können Schaltungsoptimierungen durchgeführt werden, wobei der Typ der Schaltung als Instanz von beibehalten wird FermionicDAGCircuit. Daher werden zu diesem Zeitpunkt in der Transpilationspipeline keine Qubit-Informationen benötigt (oder sind zwangsläufig verfügbar).

Orientierung

Eine globale Konfigurationseinstellung für den Transpilationsprozess ist das „Layout“ für die Umwandlung von Fermionen in Qubits. Dies muss vom Benutzer bereitgestellt werden und muss mit der vorgegebenen Fermion-zu-Qubit-Zuordnung übereinstimmen (in dem Sinne, dass, wenn eine gewählte Zuordnung eine feste Anzahl von Fermionen mit einer unterschiedlichen Anzahl von Qubits codiert, das konfigurierte Layout dies berücksichtigen muss).

Im allgemeinen Fall werden fermionische Moden nicht immer mit einer Besetzungsbasis in das Qubit-Register kodiert. Folglich können wir keinen einzelnen fermionischen Modus mit einem einzelnen Qubit in Verbindung bringen. Daher ordnet das vom Benutzer bereitgestellte Layout für die Umwandlung von Fermionen in Qubits (F2QLayout) FermionicRegister Instanzen QuantumRegister den zu.

Kolumne „ 1 “
Kolumne „ 2 “
F2QLayoutEine Zuordnung von Fermionen-Modus-Registern zu Quantenregistern.

Um diese globale Einstellung zu konfigurieren, fügen Sie eine Instanz F2QLayout in das f2q_layout Feld der ein property_set. Weitere Informationen finden Sie unter „Layout-Durchgänge “.

Zusammenfassung

Im Kern wird die Transpilierung vom F2QSynthesis Transpiler-Durchlauf übernommen. Es ähnelt konzeptionell dem HighLevelSynthesis „pass“ von Qiskit, der verschiedene Plugins zum Transpilieren von Schaltkreisbefehlen auf hoher Ebene nutzt. Weitere Informationen finden Sie direkt F2QSynthesis in der Dokumentation.

Wie ein bestimmter Zustand mithilfe von Qubit-basierten Operationen synthetisiert werden kann FermionicGate , hängt sowohl vom jeweiligen Gattetyp als auch von der vom Benutzer gewählten Abbildung von Fermionen auf Qubits ab. Weitere Informationen finden Sie unter „Transpiler-Pass-Plugins “.

Qubit

An dieser Stelle des Transpilierungsprozesses sind wir bei einer DAGCircuit Instanz angelangt und können die Transpilierungspipeline von Qiskit wie gewohnt weiterverwenden.

Tipp

Zukünftig FermionicCircuit könnten weitere Transpiler-Durchläufe für Optimierungen auf Quantenbit-Ebene hinzugefügt werden, die das Wissen über einen Schaltkreis berücksichtigen, das aus einem stammt!

Ausgabe

Diese Stufe setzt im Wesentlichen das Gegenteil von „Input“ um, indem sie den QuantumDAGToCircuit Transpiler-Durchlauf aufruft.


Pass-Manager

Alle oben genannten Phasen sind die Standardphasen, nach denen die verschiedenen Prozesse koordiniert presets werden MultiStagePassManager.

Die einzelnen Stufen können entweder aus einem einzigen Durchlauf bestehen (wenn sie von einer internen Darstellung (IR) zu einer anderen wechseln, wie beispielsweise die oben genannten Stufen „Eingabe“, „Synthese“ und „Ausgabe“ ) oder eine Stufe kann eine sein, deren BasePassManager interne Durchläufe geändert werden können.

Für die Phasen, die auf fermionischen Schaltkreisen ablaufen ( Optimierung und Layout ), ist als Passmanager-Typ zu verwenden FermionicPassManager.

Kolumne „ 1 “
Kolumne „ 2 “
FermionicPassManager( [Aufgaben, max_iteration] )Ein Transpiler-Pass-Manager, der das eine FermionicCircuit in das andere umwandelt.

Umtauschgutscheine

Einige ganz einfache Konvertierungsschritte werden direkt von diesem Modul bereitgestellt:

Kolumne „ 1 “
Kolumne „ 2 “
FermionicCircuitToDAG()Wandelt ein in FermionicCircuit ein um FermionicDAGCircuit.
FermionicDAGToCircuit()Wandelt ein in FermionicDAGCircuit ein um FermionicCircuit.
QuantumDAGToCircuit()Wandelt ein in DAGCircuit ein um QuantumCircuit.

Voreinstellungen

Um den Benutzern die Arbeit zu erleichtern, bietet das qiskit_fermions.transpiler.presets Modul eine Reihe von Funktionen zum schnellen Erstellen vordefinierter Transpilations-Pipelines.

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