Voreingestellte Passmanager
qiskit.transpiler.preset_passmanagers
Dieses Modul enthält Funktionen zur Generierung der voreingestellten Pass-Manager für den Transpiler. Die vordefinierten Pass-Manager sind Instanzen von StagedPassManager , die dazu dienen, die Schaltungstransformationen als Teil des Qiskit-Compilers innerhalb der transpile() Funktion auf den verschiedenen Optimierungsstufen auszuführen, können aber auch eigenständig verwendet werden. Die Funktionalität ist hier in zwei Teile gegliedert. Die erste enthält die Funktionen zur Generierung des gesamten Pass-Managers, der von transpile() ( Generierung des Low-Level-Preset-Pass-Managers ) verwendet wird, und die zweite enthält Funktionen, die zum Aufbau (entweder vollständig oder teilweise) der Stufen dienen, aus denen sich die Preset-Pass-Manager zusammensetzen ( Funktionen zum Erstellen von Stufen ).
Generierung eines Low-Level-Preset-Pass-Managers
Kontinuierliche Basis-Sätze
level_0_pass_manager
qiskit.transpiler.preset_passmanagers.level_0_pass_manager(pass_manager_config)
Level 0 Pass Manager: keine explizite Optimierung außer dem Mapping auf das Backend.
Dieser Passmanager wendet das vom Benutzer vorgegebene Ausgangslayout an. Ist keine angegeben, wird ein triviales Layout verwendet, bei dem das i-te virtuelle Qubit auf das i-te physikalische Qubit abgebildet wird. Jedes ungenutzte physische Qubit wird als Ancilla-Platz zugewiesen.
Der Pass-Manager rollt dann die Schaltung auf die gewünschte Basis ab und transformiert die Schaltung so, dass sie mit der Kopplungskarte übereinstimmt.
Parameter
pass_manager_config (PassManagerConfig) – Konfiguration des Pass-Managers.
Rückgabe
einen Passmanager der Stufe 0.
Erhöht
TranspilerError - wenn die Passmanager-Konfiguration ungültig ist.
Rückgabetyp
level_1_pass_manager
qiskit.transpiler.preset_passmanagers.level_1_pass_manager(pass_manager_config)
Level 1 Pass Manager: leichte Optimierung durch einfaches Zusammenlegen benachbarter Tore.
Dieser Passmanager wendet das vom Benutzer vorgegebene Ausgangslayout an. Wenn keine gegeben ist und ein triviales Layout (i-te virtuelle -> i-te physische) die Schaltung in die Kopplungskarte einpasst, wird dieses verwendet. Andernfalls wird der Schaltkreis auf den am dichtesten verbundenen Kopplungs-Subgraphen abgebildet, und es werden Swaps zur Abbildung eingefügt. Jedes ungenutzte physische Qubit wird als Ancilla-Platz zugewiesen. Der Pass-Manager rollt dann die Schaltung auf die gewünschte Basis ab und transformiert die Schaltung so, dass sie mit der Kopplungskarte übereinstimmt. Abschließend werden Optimierungen in Form von benachbarten Gattern und der Beseitigung redundanter Rücksetzungen durchgeführt.
Parameter
pass_manager_config (PassManagerConfig) – Konfiguration des Pass-Managers.
Rückgabe
einen Level 1 Pass Manager.
Erhöht
TranspilerError - wenn die Passmanager-Konfiguration ungültig ist.
Rückgabetyp
level_2_pass_manager
qiskit.transpiler.preset_passmanagers.level_2_pass_manager(pass_manager_config)
Level 2 Pass Manager: Mittlere Optimierung durch anfängliche Layoutauswahl und Gatteraufhebung unter Verwendung von Kommutativitätsregeln.
Dieser Passmanager wendet das vom Benutzer vorgegebene Ausgangslayout an. Ist keine gegeben, wird nach einem perfekten Layout (d. h. einem, das alle 2-Qubit-Wechselwirkungen erfüllt) gesucht. Wird keine solche Anordnung gefunden, werden die Qubits auf der am dichtesten zusammenhängenden Teilmenge angeordnet, die auch die besten Gattertreuewerte aufweist.
Der Passmanager wandelt die Schaltung dann so um, dass sie den Kopplungsbedingungen entspricht. Sie wird dann zur Basis abgerollt, und alle gespiegelten cx-Richtungen werden fixiert. Schließlich werden Optimierungen in Form von kommutativen Gatteraufhebungen und der Beseitigung redundanter Rücksetzungen durchgeführt.
Parameter
pass_manager_config (PassManagerConfig) – Konfiguration des Pass-Managers.
Rückgabe
einen Level-2-Pass-Manager.
Erhöht
TranspilerError - wenn die Passmanager-Konfiguration ungültig ist.
Rückgabetyp
level_3_pass_manager
qiskit.transpiler.preset_passmanagers.level_3_pass_manager(pass_manager_config)
Level 3 Pass Manager: Starke Optimierung durch rauschadaptive Qubit-Zuordnung und Gatteraufhebung unter Verwendung von Kommutativitätsregeln und unitärer Synthese.
Dieser Passmanager wendet das vom Benutzer vorgegebene Ausgangslayout an. Ist keine gegeben, wird nach einem perfekten Layout (d. h. einem, das alle 2-Qubit-Wechselwirkungen erfüllt) gesucht. Wenn kein solches Layout gefunden wird und Informationen über die Kalibrierung des Geräts verfügbar sind, wird die Schaltung den Qubits mit den besten Auslesewerten und den CX-Gattern mit der höchsten Genauigkeit zugeordnet.
Der Passmanager wandelt die Schaltung dann so um, dass sie den Kopplungsbedingungen entspricht. Sie wird dann zur Basis abgerollt, und alle gespiegelten cx-Richtungen werden fixiert. Schließlich werden Optimierungen in Form von kommutativer Gatteraufhebung, Resynthese von Zwei-Qubit-Unitären Blöcken, Entfernung von redundantem Reset und abschließende Layout-Verbesserungen durchgeführt.
Parameter
pass_manager_config (PassManagerConfig) – Konfiguration des Pass-Managers.
Rückgabe
einen Level-3-Pass-Manager.
Erhöht
TranspilerError - wenn die Passmanager-Konfiguration ungültig ist.
Rückgabetyp
Clifford+T-Basissätze
clifford_t_pass_manager
qiskit.transpiler.preset_passmanagers.clifford_t_pass_manager(pass_manager_config, optimization_level)
Erstellen Sie einen gestuften Pass-Manager für die Transpilation in die Clifford+T-Basis.
Diese Funktion wird aufgerufen, generate_preset_pass_manager() wenn die Zielbasis aus Clifford+T-Gattern besteht. Es generiert eine spezielle Transpilations-Pipeline, die aus den folgenden Schritten besteht:
- Initialisierung: Zerlegung größerer Gatter in 1-Qubit- und 2-Qubit-Gatter und Durchführung logischer Optimierungen.
- Layout: Wende die Standard-Layoutstrategie an, die für kontinuierliche Basissätze verwendet wird.
- Routing: Die für kontinuierliche Basissätze verwendete Standard-Routing-Strategie anwenden.
- RZ-Transformation: Transformiere den Schaltkreis in die Clifford-+RZ-Basis.
- RZ-Optimierung: Optimieren Sie die Schaltung innerhalb der Clifford-+RZ-Basis.
- Übersetzung: Übersetze den Schaltkreis in die Clifford+T-Basis.
- T-Optimierung: Optimiert die Schaltung innerhalb der Clifford+T-Basis.
- Planung: Wenden Sie die für kontinuierliche Basissätze verwendete Standard-Planungsstrategie an.
Um optimale Ergebnisse zu erzielen, sollten Sie erwägen, sowohl „ “ als auch „ “ in die angegebene Clifford+T-Basis aufzunehmen und so viele Clifford-Gatter wie möglich einzubeziehen. Zum Beispiel:
basis_gates = get_clifford_gate_names() + ["t", "tdg"]Diese Phasen befinden sich noch im Versuchsstadium und können sich ändern. Insbesondere stehen sie noch nicht als Plugins für die Transpiler-Stufe zur Verfügung (im Gegensatz zu den Stufen für kontinuierliche Basissätze).
Parameter
- pass_manager_config (PassManagerCliffordTConfig) – Konfiguration des Pass-Managers.
- optimization_level (int) – Der Optimierungsgrad. Sofern nicht anders angegeben, wird standardmäßig die Optimierungsstufe 2 verwendet. Dies kann 0, 1, 2 oder 3 sein. Höhere Stufen führen zu potenziell optimierteren Schaltkreisen, allerdings auf Kosten einer längeren Transpilierungszeit.
Rückgabe
Manager für gestaffelte Pässe.
Erhöht
TranspilerError - wenn die Passmanager-Konfiguration ungültig ist.
Rückgabetyp
Funktionen des Stufengenerators
generate_control_flow_options_check
qiskit.transpiler.preset_passmanagers.generate_control_flow_options_check(layout_method=None, routing_method=None, translation_method=None, optimization_method=None, scheduling_method=None, basis_gates=(), target=None)
Erzeugen Sie einen Pass-Manager, der bei der Ausführung auf einer DAG, die Kontrollfluss enthält, mit einer Fehlermeldung fehlschlägt, in der die ungültigen Optionen erklärt werden und was stattdessen verwendet werden könnte.
Rückgabe
einen Pass-Manager, der die contains_x Eigenschaften für jede der Kontrollflussoperationen auffüllt und einen Fehler auslöst, wenn eine der angegebenen Optionen keinen Kontrollfluss unterstützt, aber ein Schaltkreis mit Kontrollfluss angegeben ist.
Rückgabetyp
generate_error_on_control_flow
qiskit.transpiler.preset_passmanagers.generate_error_on_control_flow(message)
Holen Sie sich einen Passmanager, der immer einen Fehler auslöst, wenn ein Kontrollfluss in einem bestimmten Schaltkreis vorhanden ist.
generate_unroll_3q
qiskit.transpiler.preset_passmanagers.generate_unroll_3q(target, basis_gates=None, approximation_degree=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True, optimization_metric=OptimizationMetric.COUNT_2Q)
Erstellen eines Unroll- >3q s PassManager
Parameter
- target (Target | None) – das
TargetObjekt, das das Backend repräsentiert - basis_gates (list[str] | None) – Eine Liste von STR-Gate-Namen, die die Basis-Gates auf dem Backend-Ziel darstellen.
- approximation_degree (float | None) – Heuristischer Regler zur Schaltungsnäherung, wobei
1.0keine Näherung (bis auf die numerische Toleranz) und0.0die maximale Näherung bedeutet. Soferntargetverfügbar ist, bedeutet der Wert,Nonedass für eine Operation im Ziel eine Annäherung bis zur angegebenen Fehlerrate zulässig ist. - unitary_synthesis_method (str) – Die anzuwendende Methode der einheitlichen Synthese. Mit
unitary_synthesis_plugin_names(). können Sie eine Liste der installierten Plugins anzeigen. - unitary_synthesis_plugin_config (dict | None) – Die Konfiguration des optionalen Wörterbuch-Plugins ist pluginspezifisch. Informationen zur Verwendung finden Sie in der Dokumentation des jeweiligen Plugins.
- hls_config (HLSConfig | None) – Eine optionale Konfigurationsklasse, die für
HighLevelSynthesis„pass“ verwendet werden kann. Legt fest, wie verschiedene Objekte auf hoher Ebene synthetisiert werden sollen. - qubits_initially_zero (bool) – Zeigt an, ob die Eingangsschaltung nullinitialisiert ist.
- optimization_metric (OptimizationMetric) – das
OptimizationMetricObjekt, das die Metrik definiert, die bei der Optimierung des Unrollings verwendet wird.
Rückgabe
Der Abwickler 3q oder der Passmanager
Rückgabetyp
generate_embed_passmanager
qiskit.transpiler.preset_passmanagers.generate_embed_passmanager(coupling_map)
Layout-Einbettung generieren PassManager
Dies dient dazu, ein PassManager Objekt zu erzeugen, mit dem ein Schaltkreis erweitert und ein Anfangslayout auf ihn angewendet werden kann
Parameter
coupling_map (Union[CouplingMap, Target]) – Die Kopplungskarte für das Backend, in das die Schaltung eingebettet werden soll.
Rückgabe
Der einbettende Passmanager, der die Layout-Eigenschaft annimmt
in früheren Phasen festgelegt wurde
Rückgabetyp
generate_routing_passmanager
qiskit.transpiler.preset_passmanagers.generate_routing_passmanager(routing_pass, target, coupling_map=None, vf2_call_limit=None, seed_transpiler=-1, check_trivial=False, use_barrier_before_measurement=True, vf2_max_trials=None)
Routing erstellen PassManager
Parameter
- routing_pass (TransformationPass) – Der Durchlauf, der das Routing durchführt
- target (Target) – das
TargetObjekt, das das Backend repräsentiert - coupling_map (CouplingMap) – Die Zuordnungstabelle des Backends zur Weiterleitung für
- vf2_call_limit (int) – Das interne Aufruflimit für den vf2 post layout pass. Wenn dies
Noneoder0ist, wird das vf2 Post-Layout nicht ausgeführt. - seed_transpiler (int) – Legt einen Zufallsstartwert für die stochastischen Teile des Transpilers fest. Dies wird derzeit nur für
VF2PostLayoutverwendet, und es wird dringend empfohlen, den Standardwert von-1zu verwenden (d. h. keine Randomisierung). Wird ein Wert vonNoneangegeben, erfolgt die Initialisierung anhand der Systementropie. - check_trivial (bool) – Wird dieser Wert auf „true“ gesetzt, hängt die Ausführung des
VF2PostLayoutDurchlaufs nach dem Routing davon ab, ob ein triviales Layout ausprobiert wurde und sich als nicht perfekt erwiesen hat. Dies ist nur erforderlich, wenn der erstellte Pass-Manager als erster Layout-Versuch ausgeführtTrivialLayoutwird und diesen verwendet, sofern es sich um ein perfektes Layout handelt (wie es beim voreingestellten Pass-Manager der Stufe 1 der Fall ist). - use_barrier_before_measurement (bool) – Wenn „true“ (Standardwert), wird der
BarrierBeforeFinalMeasurementsTranspiler-Durchlauf vor dem im Argumentrouting_passangegebenen Durchlauf ausgeführt. - vf2_max_trials (int) – Die maximale Anzahl von Versuchen, die VF2 bei der Auswertung des vf2 Post-Layout-Durchlaufs ausführen soll. Wenn dies
Noneoder0ist, wird das vf2 Post-Layout nicht ausgeführt.
Rückgabe
Der Routing Pass Manager
Rückgabetyp
generate_pre_op_passmanager
qiskit.transpiler.preset_passmanagers.generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_zero=False)
Eine Schleife zur Voroptimierung generieren PassManager
Dieser Passmanager prüft, ob die Richtungsabhängigkeit der Kopplungskarte beachtet wird.
Die Funktion qiskit.transpiler.preset_passmanagers.common.generate_pre_op_passmanager() ist ab Qiskit 2.0 veraltet. Sie wird in Qiskit 3.0 entfernt. Übersetzungs-Plugins müssen nun die ISA-Direktionalität beachten, so dass in der Regel keine Ersetzung erforderlich ist.
Parameter
- target (Target) – das
TargetObjekt, das das Backend repräsentiert - coupling_map (CouplingMap) – Die zu verwendende Kopplungskarte
- remove_reset_in_zero (bool) – Wenn
Truedas Zurücksetzen im Nulldurchgang in die generierte PassManager
Rückgabe
Der Passmanager
Rückgabetyp
generate_translation_passmanager
qiskit.transpiler.preset_passmanagers.generate_translation_passmanager(target, basis_gates=None, method='translator', approximation_degree=None, coupling_map=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True)
Eine Basisübersetzung erstellen PassManager
Parameter
- target (Target | None) – das
TargetObjekt, das das Backend repräsentiert - basis_gates (list[str] | None) – Eine Liste von STR-Gate-Namen, die die Basis-Gates auf dem Backend-Ziel darstellen
- method (str) – Die zu verwendende Basisumrechnungsmethode
- approximation_degree (float | None) – Heuristischer Regler zur Schaltungsnäherung, wobei
1.0keine Näherung (bis auf die numerische Toleranz) und0.0die maximale Näherung bedeutet. Soferntargetverfügbar ist, bedeutet der Wert,Nonedass für eine Operation im Ziel eine Annäherung bis zur angegebenen Fehlerrate zulässig ist. - coupling_map (CouplingMap | None) – die Kopplungskarte des Backends für den Fall, dass die Synthese auf einer physikalischen Schaltung erfolgt. Die Richtung der Kopplungsabbildung wird berücksichtigt, wenn „pulse_optimize“ auf „True“ oder „None“ gesetzt ist und „natural_direction“ auf „True“ oder „None“ gesetzt ist.
- unitary_synthesis_method (str) – Die anzuwendende Methode der einheitlichen Synthese. Mit
unitary_synthesis_plugin_names(). können Sie eine Liste der installierten Plugins anzeigen. - unitary_synthesis_plugin_config (dict | None) – Die Konfiguration des optionalen Wörterbuch-Plugins ist pluginspezifisch. Informationen zur Verwendung finden Sie in der Dokumentation des jeweiligen Plugins.
- hls_config (HLSConfig | None) – Eine optionale Konfigurationsklasse, die für
HighLevelSynthesis„pass“ verwendet werden kann. Legt fest, wie verschiedene Objekte auf hoher Ebene synthetisiert werden sollen. - qubits_initially_zero (bool) – Zeigt an, ob die Eingangsschaltung nullinitialisiert ist.
Rückgabe
Der Basis-Übersetzungspass-Manager
Rückgabetyp
Erhöht
TranspilerError - Wenn der method kwarg kein gültiger Wert ist
generate_scheduling
qiskit.transpiler.preset_passmanagers.generate_scheduling(instruction_durations, scheduling_method, timing_constraints, target=None)
Zeitplan für die Nachoptimierung erstellen PassManager
Parameter
- instruction_durations (dict) – Das Wörterbuch der Unterrichtsdauer
- scheduling_method (str) – Die zu verwendende Terminierungsmethode kann entweder
'asap'/'as_soon_as_possible'oder'alap'sein'as_late_as_possible' - timing_constraints (TimingConstraints) – Einschränkungen bei der Hardware-Zeitausrichtung.
- target (Target) – Das
TargetObjekt, das das Backend repräsentiert
Rückgabe
Der Zeitplanpass-Manager
Rückgabetyp
Erhöht
TranspilerError - Wenn der scheduling_method kwarg kein gültiger Wert ist