Skip to main content
IBM Quantum Platform

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)

GitHub

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

StagedPassManager

level_1_pass_manager

qiskit.transpiler.preset_passmanagers.level_1_pass_manager(pass_manager_config)

GitHub

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

StagedPassManager

level_2_pass_manager

qiskit.transpiler.preset_passmanagers.level_2_pass_manager(pass_manager_config)

GitHub

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

StagedPassManager

level_3_pass_manager

qiskit.transpiler.preset_passmanagers.level_3_pass_manager(pass_manager_config)

GitHub

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

StagedPassManager

Clifford+T-Basissätze

clifford_t_pass_manager

qiskit.transpiler.preset_passmanagers.clifford_t_pass_manager(pass_manager_config, optimization_level)

GitHub

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 „ TT “ als auch „ T†T^\dagger “ 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"]
Anmerkung

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

StagedPassManager


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)

GitHub

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

PassManager

generate_error_on_control_flow

qiskit.transpiler.preset_passmanagers.generate_error_on_control_flow(message)

GitHub

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)

GitHub

Erstellen eines Unroll- >3q s PassManager

Parameter

  • target (Target | None) – das Target Objekt, 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.0 keine Näherung (bis auf die numerische Toleranz) und 0.0 die maximale Näherung bedeutet. Sofern target verfügbar ist, bedeutet der Wert, None dass 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 OptimizationMetric Objekt, das die Metrik definiert, die bei der Optimierung des Unrollings verwendet wird.

Rückgabe

Der Abwickler 3q oder der Passmanager

Rückgabetyp

PassManager

generate_embed_passmanager

qiskit.transpiler.preset_passmanagers.generate_embed_passmanager(coupling_map)

GitHub

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

PassManager

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)

GitHub

Routing erstellen PassManager

Parameter

  • routing_pass (TransformationPass) – Der Durchlauf, der das Routing durchführt
  • target (Target) – das Target Objekt, 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 None oder 0 ist, 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 VF2PostLayout verwendet, und es wird dringend empfohlen, den Standardwert von -1 zu verwenden (d. h. keine Randomisierung). Wird ein Wert von None angegeben, erfolgt die Initialisierung anhand der Systementropie.
  • check_trivial (bool) – Wird dieser Wert auf „true“ gesetzt, hängt die Ausführung des VF2PostLayout Durchlaufs 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ührt TrivialLayout wird 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 BarrierBeforeFinalMeasurements Transpiler-Durchlauf vor dem im Argument routing_pass angegebenen 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 None oder 0 ist, wird das vf2 Post-Layout nicht ausgeführt.

Rückgabe

Der Routing Pass Manager

Rückgabetyp

PassManager

generate_pre_op_passmanager

qiskit.transpiler.preset_passmanagers.generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_zero=False)

GitHub

Eine Schleife zur Voroptimierung generieren PassManager

Dieser Passmanager prüft, ob die Richtungsabhängigkeit der Kopplungskarte beachtet wird.

Veraltet seit Version 2.0

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 Target Objekt, das das Backend repräsentiert
  • coupling_map (CouplingMap) – Die zu verwendende Kopplungskarte
  • remove_reset_in_zero (bool) – Wenn True das Zurücksetzen im Nulldurchgang in die generierte PassManager

Rückgabe

Der Passmanager

Rückgabetyp

PassManager

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)

GitHub

Eine Basisübersetzung erstellen PassManager

Parameter

  • target (Target | None) – das Target Objekt, 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.0 keine Näherung (bis auf die numerische Toleranz) und 0.0 die maximale Näherung bedeutet. Sofern target verfügbar ist, bedeutet der Wert, None dass 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

PassManager

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)

GitHub

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 Target Objekt, das das Backend repräsentiert

Rückgabe

Der Zeitplanpass-Manager

Rückgabetyp

PassManager

Erhöht

TranspilerError - Wenn der scheduling_method kwarg kein gültiger Wert ist

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