Skip to main content
IBM Quantum Platform

qiskit.transpiler.generate_preset_pass_manager

qiskit.transpiler.generate_preset_pass_manager(optimization_level=2, backend=None, target=None, basis_gates=None, coupling_map=None, initial_layout=None, layout_method=None, routing_method=None, translation_method=None, scheduling_method=None, approximation_degree=1.0, seed_transpiler=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, init_method=None, optimization_method=None, dt=None, qubits_initially_zero=True, *, _skip_target=False)

GitHub

Erzeugen einer Voreinstellung PassManager

Diese Funktion dient dazu, schnell einen voreingestellten Pass-Manager zu erstellen. Voreingestellte Pass-Manager sind die Standard-Pass-Manager, die von der transpile() Funktion verwendet werden. Diese Funktion bietet eine bequeme und einfache Möglichkeit, ein eigenständiges PassManager Objekt zu erstellen, das genau dem entspricht, was die transpile() Funktion intern aufbaut und verwendet.

Die Zielvorgaben für die Konstruktion des Passmanagers können durch eine Target instanz, eine BackendV2 instanz oder über lose Bedingungen (basis_gates, coupling_map, oder dt) angegeben werden. Die Reihenfolge der Prioritäten für die Zielbeschränkungen funktioniert wie folgt: Wenn eine target Eingabe vorliegt, hat sie Vorrang vor allen backend Eingaben oder losen Beschränkungen. Wenn eine backend zusammen mit einer losen Bedingung aus der obigen Liste angegeben wird, hat die lose Bedingung Vorrang vor der entsprechenden Backend-Bedingung. Dieses Verhalten ist in der nachstehenden Tabelle zusammengefasst. Die erste Spalte der Tabelle fasst die potenziellen vom Benutzer bereitgestellten Beschränkungen zusammen, und jede Zelle zeigt, ob die Priorität dieser spezifischen Beschränkungseingabe oder einer anderen Eingabe (Ziel/Backend( V1 )/Backend( V2 )) zugewiesen ist.

Vom Benutzer bereitgestellt
Ziel
backend( V2 )
basis_toreZielbasis_tore
koppeln_karteZielkoppeln_karte
dtZieldt
Anmerkung

Wenn die Zielbasis aus Clifford+T-Gattern besteht, erstellt diese Funktion eine spezielle Clifford+T-Transpiler-Pipeline; eine ausführlichere Dokumentation finden generate_preset_clifford_t_pass_manager() Sie unter. Argumente, die ausschließlich für die Transpilation in kontinuierliche Basissätze gelten, werden in diesem Ablauf ignoriert. Beispielsweise wird das "unitary_synthesis_method" bei der Synthese von Einzel-Qubit-Unitarien zu einer Clifford+T-Sequenz nicht berücksichtigt.

Parameter

  • optimization_level (int) –

    Die Optimierungsebene, die eine StagedPassManager für. Wenn dies nicht angegeben wird, wird standardmäßig die Optimierungsstufe 2 verwendet. Dies kann 0, 1, 2 oder 3 sein. Höhere Stufen erzeugen potenziell optimiertere Schaltkreise, was jedoch mit einer längeren Umsetzungszeit einhergeht:

    • 0: keine Optimierung
    • 1: Optimierung der Beleuchtung
    • 2: Starke Optimierung
    • 3: noch stärkere Optimierung
  • targetbackend (Backend | None) – Ein optionales Backend-Objekt, das als Quelle für die Standardwerte von, coupling_map``basis_gates, und verwendet werden kann. Wenn zusätzlich zu backend diesen Argumenten noch eines der anderen Argumente angegeben wird, hat dieses Vorrang vor dem im Backend enthaltenen Wert.

  • target (Target | None) – Das Target steht für ein Backend-Kompilierungsziel. Die folgenden Attribute werden aus diesem Argument abgeleitet, sofern sie nicht festgelegt sind: coupling_map und basis_gates.

  • basis_gates (list[str] | None) – Liste der Namen der Basisgatter, in die entrollt werden soll (z. B.: ['u1', 'u2', 'u3', 'cx']).

  • coupling_map (CouplingMap |list | None) –

    Ein gerichteter Graph stellt eine Kopplungskarte dar. Es werden mehrere Formate unterstützt:

    1. CouplingMap Instanz
    2. Liste, muss als Adjazenzmatrix angegeben werden, wobei jeder Eintrag alle gerichteten Zwei-Qubit-Interaktionen angibt, die vom Backend unterstützt werden, z. B: [[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
  • initial_layout (Layout |list[int]) – Ausgangsposition der virtuellen Qubits auf den physikalischen Qubits.

  • layout_method (str | None) – Die Pass zur Auswahl der anfänglichen Anordnung der Qubits. Gültige Auswahlmöglichkeiten sind 'trivial', 'dense', und 'sabre', die jeweils für TrivialLayout, DenseLayout und SabreLayout stehen. StagedPassManagerDies kann auch der Name des externen Plugins sein, das für die layout Ausgabestufe verwendet werden soll. Sie können eine Liste der installierten Plugins anzeigen, indem Sie list_stage_plugins() mit "layout" als Argument stage_name verwenden.

  • routing_method (str | None) – Der Pass, der für die Weiterleitung von Qubits auf der Architektur verwendet wird. Gültige Auswahlmöglichkeiten sind 'basic', 'lookahead', 'sabre', und 'none' , die jeweils für BasicSwap, LookaheadSwap, SabreSwap, stehen und eine Fehlermeldung ausgeben, wenn eine Weiterleitung erforderlich ist. StagedPassManagerDies kann auch der Name des externen Plugins sein, das für die routing Ausgabestufe verwendet werden soll. Sie können eine Liste der installierten Plugins anzeigen, indem Sie list_stage_plugins() mit "routing" als Argument stage_name verwenden.

  • translation_method (str | None) – Die Methode zur Umwandlung von Toren in Basistore. BasisTranslator'translator'Gültige Auswahlmöglichkeiten, 'synthesis' die jeweils und UnitarySynthesis darstellen. StagedPassManagerDies kann auch der Name des externen Plugins sein, das für die translation Ausgabestufe verwendet werden soll. Sie können eine Liste der installierten Plugins anzeigen, indem Sie list_stage_plugins() mit "translation" als Argument stage_name verwenden.

  • scheduling_method (str | None) – Der Pass, der für die Planung von Anweisungen verwendet werden soll. Mögliche Antworten sind 'alap' und 'asap'. StagedPassManagerDies kann auch der Name des externen Plugins sein, das für die scheduling Ausgabestufe verwendet werden soll. Sie können eine Liste der installierten Plugins anzeigen, indem Sie list_stage_plugins() mit "scheduling" als Argument stage_name verwenden.

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

  • seed_transpiler (int | None) – Legt einen Zufallsstartwert für die stochastischen Teile des Transpilers fest. Wenn dies hier nicht angegeben ist, QISKIT_TRANSPILER_SEED kann es auch über eine Umgebungsvariable oder in einer Benutzerkonfigurationsdatei festgelegt werden. Die Prioritätsreihenfolge lautet: dieses Argument, dann die Umgebungsvariable und schließlich die Benutzerkonfigurationsoption. Wenn dieses Argument also festgelegt wird, hat es Vorrang vor den anderen Methoden zur Festlegung eines Startwerts.

  • unitary_synthesis_method (str) – Der Name der zu verwendenden unitären Synthesemethode. Standardmäßig wird 'default' verwendet. Sie können eine Liste der installierten Plugins mit unitary_synthesis_plugin_names().

  • unitary_synthesis_plugin_config (dict | None) – Ein optionales Konfigurationswörterbuch, das direkt an das Plugin für die unitäre Synthese übergeben wird. Standardmäßig hat diese Einstellung keine Auswirkung, da die standardmäßige unitäre Synthesemethode keine benutzerdefinierte Konfiguration zulässt. Dies sollte nur dann erforderlich sein, wenn ein Plugin für die einheitliche Synthese mit dem unitary_synthesis_method Argument angegeben wird. Da dies für jedes Plugin zur unitären Synthese unterschiedlich ist, lesen Sie bitte in der Dokumentation des jeweiligen Plugins nach, wie diese Option verwendet wird.

  • hls_config (HLSConfig | None) – Eine optionale Konfigurationsklasse HLSConfig , die direkt an HighLevelSynthesis den Transformationsdurchlauf übergeben wird. Diese Konfigurationsklasse ermöglicht es, für verschiedene Objekte auf hoher Ebene die Listen der Synthesealgorithmen und deren Parameter festzulegen.

  • StagedPassManagerinit_method (str | None) – Der Name des Plugins, der für die init Ausgabestufe verwendet werden soll. Standardmäßig wird kein externes Plugin verwendet. Sie können eine Liste der installierten Plugins anzeigen, indem Sie list_stage_plugins() mit "init" als Argument für den Stufennamen verwenden.

  • StagedPassManageroptimization_method (str | None) – Der Name des Plugins, der für die optimization Ausgabestufe verwendet werden soll. Standardmäßig wird kein externes Plugin verwendet. Sie können eine Liste der installierten Plugins anzeigen, indem Sie list_stage_plugins() mit "optimization" als Argument stage_name verwenden.

  • dt (float | None) – Backend-Abtastzeit (Auflösung) in Sekunden. Wenn None (Standard) und ein Backend angegeben ist, backend.dt wird verwendet.

  • qubits_initially_zero (bool) – Zeigt an, ob die Eingangsschaltung nullinitialisiert ist.

Rückgabe

Der voreingestellte Passmanager für die angegebenen Optionen

Rückgabetyp

StagedPassManager

Erhöht

ValueError - wenn ein ungültiger Wert für optimization_level übergeben wird.

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