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)
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_tore | Ziel | basis_tore |
| koppeln_karte | Ziel | koppeln_karte |
| dt | Ziel | dt |
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
StagedPassManagerfü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 zubackenddiesen Argumenten noch eines der anderen Argumente angegeben wird, hat dieses Vorrang vor dem im Backend enthaltenen Wert. -
target (Target | None) – Das
Targetsteht für ein Backend-Kompilierungsziel. Die folgenden Attribute werden aus diesem Argument abgeleitet, sofern sie nicht festgelegt sind:coupling_mapundbasis_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:
CouplingMapInstanz- 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
Passzur Auswahl der anfänglichen Anordnung der Qubits. Gültige Auswahlmöglichkeiten sind'trivial','dense', und'sabre', die jeweils fürTrivialLayout,DenseLayoutundSabreLayoutstehen.StagedPassManagerDies kann auch der Name des externen Plugins sein, das für dielayoutAusgabestufe verwendet werden soll. Sie können eine Liste der installierten Plugins anzeigen, indem Sielist_stage_plugins()mit"layout"als Argumentstage_nameverwenden. -
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ürBasicSwap,LookaheadSwap,SabreSwap, stehen und eine Fehlermeldung ausgeben, wenn eine Weiterleitung erforderlich ist.StagedPassManagerDies kann auch der Name des externen Plugins sein, das für dieroutingAusgabestufe verwendet werden soll. Sie können eine Liste der installierten Plugins anzeigen, indem Sielist_stage_plugins()mit"routing"als Argumentstage_nameverwenden. -
translation_method (str | None) – Die Methode zur Umwandlung von Toren in Basistore.
BasisTranslator'translator'Gültige Auswahlmöglichkeiten,'synthesis'die jeweils undUnitarySynthesisdarstellen.StagedPassManagerDies kann auch der Name des externen Plugins sein, das für dietranslationAusgabestufe verwendet werden soll. Sie können eine Liste der installierten Plugins anzeigen, indem Sielist_stage_plugins()mit"translation"als Argumentstage_nameverwenden. -
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 dieschedulingAusgabestufe verwendet werden soll. Sie können eine Liste der installierten Plugins anzeigen, indem Sielist_stage_plugins()mit"scheduling"als Argumentstage_nameverwenden. -
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. -
seed_transpiler (int | None) – Legt einen Zufallsstartwert für die stochastischen Teile des Transpilers fest. Wenn dies hier nicht angegeben ist,
QISKIT_TRANSPILER_SEEDkann 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 mitunitary_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_methodArgument 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 anHighLevelSynthesisden 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 dieinitAusgabestufe verwendet werden soll. Standardmäßig wird kein externes Plugin verwendet. Sie können eine Liste der installierten Plugins anzeigen, indem Sielist_stage_plugins()mit"init"als Argument für den Stufennamen verwenden. -
StagedPassManageroptimization_method (str | None) – Der Name des Plugins, der für dieoptimizationAusgabestufe verwendet werden soll. Standardmäßig wird kein externes Plugin verwendet. Sie können eine Liste der installierten Plugins anzeigen, indem Sielist_stage_plugins()mit"optimization"als Argumentstage_nameverwenden. -
dt (float | None) – Backend-Abtastzeit (Auflösung) in Sekunden. Wenn
None(Standard) und ein Backend angegeben ist,backend.dtwird verwendet. -
qubits_initially_zero (bool) – Zeigt an, ob die Eingangsschaltung nullinitialisiert ist.
Rückgabe
Der voreingestellte Passmanager für die angegebenen Optionen
Rückgabetyp
Erhöht
ValueError - wenn ein ungültiger Wert für optimization_level übergeben wird.