StagedPassManager
class qiskit.transpiler.StagedPassManager(stages=None, **kwargs)
Basen: PassManager
Eine aus einzelnen Stufen aufgebaute Passmanager-Pipeline.
Diese Klasse ermöglicht den Aufbau einer Kompilierungspipeline aus festen Stufen. Jede StagedPassManager definiert eine Liste von Abschnitten, die in einer festen Reihenfolge ausgeführt werden, und jeder Abschnitt ist als eigenständige PassManager instanz definiert. Außerdem gibt es für jede definierte Stufe die Seiten pre_ und post_ . Dies ermöglicht das einfache Zusammenstellen und Ersetzen verschiedener Phasen sowie das Hinzufügen von Hook-Points, um programmatische Änderungen an einer Pipeline zu ermöglichen. Wenn Sie einen Stufenpassmanager verwenden, können Sie die einzelnen Pässe nicht ändern, sondern nur die Stufen.
Standardmäßig definieren Instanzen von StagedPassManager eine typische vollständige Kompilierungspipeline von einer abstrakten virtuellen Schaltung zu einer optimierten Schaltung, die auf dem angegebenen Backend ausgeführt werden kann. Die standardmäßig vordefinierten Stufen sind:
init- Erste Durchläufe vor der Einbettung der Schaltung in das Backend.layout- Ordnet die virtuellen Qubits in der Schaltung den physischen Qubits im Backend zu.routing- Fügt nach Bedarf Gatter ein, um die Qubitzustände zu verschieben, bis die Schaltung mit dem gewählten Layout auf der Kopplungskarte des Backends ausgeführt werden kann.translation- Übersetzt die Gatter in der Schaltung in den Basis-Gattersatz des Ziel-Backends.optimization- Optimiert die Schaltung, um die Kosten für ihre Ausführung zu reduzieren. Diese Durchläufe laufen in der Regel in einer Schleife, bis ein Konvergenzkriterium erfüllt ist. Das Konvergenzkriterium könnte zum Beispiel sein, dass die Tiefe des Schaltkreises in aufeinanderfolgenden Iterationen nicht abnimmt.scheduling- Hardwarespezifische Pässe, die die Operationen in der Schaltung planen.
Aus Gründen der Abwärtskompatibilität wird die relative Positionierung dieser Standardstufen auch in Zukunft stabil bleiben. Es ist jedoch möglich, neue Abschnitte in die Liste der Standardabschnitte zwischen den aktuellen Abschnitten aufzunehmen. In einer künftigen Version könnte beispielsweise eine neue Phase, etwa logical_optimization, unmittelbar nach der bestehenden Phase init in die Standard-Stufenliste aufgenommen werden. Dies würde die Kompatibilität für die bisherigen Benutzer von StagedPassManager wahren, da die relativen Positionen der Bühne beibehalten werden, so dass sich das Verhalten zwischen den Versionen nicht ändert.
Diese Schritte werden der Reihe nach ausgeführt, und alle Schritte, die auf None gesetzt sind, werden übersprungen. Wenn eine Phase mehrfach vorgesehen ist (d. h. an verschiedenen relativen Positionen), werden die zugehörigen Durchläufe, einschließlich der Vor- und Nachdurchläufe, einmal pro Deklaration ausgeführt. Wenn ein PassManager Input hier für mehr als eine Phase verwendet wird (beispielsweise bei einem Pass , der sowohl das Layout als auch das Routing abdeckt), sollten Sie ihn auf die früheste Phase in der Reihenfolge setzen, die er abdeckt.
Initialisieren Sie ein neues StagedPassManager Objekt
Parameter
- stages (Iterable[str]) – Eine optionale Liste von Stufen, die für diese Instanz verwendet werden sollen. Wenn dies nicht angegeben wird, wird die
['init', 'layout', 'routing', 'translation', 'optimization', 'scheduling']Standardliste der Phasen verwendet. Nach der Instanziierung ist die endgültige Liste unveränderlich und wird als Tupel gespeichert. Wenn eine Phase mehrfach vorgesehen ist (d. h. an verschiedenen relativen Positionen), werden die zugehörigen Durchläufe, einschließlich der Vor- und Nachdurchläufe, einmal pro Deklaration ausgeführt. - kwargs - Die Anfangswerte
PassManagerwerte für alle instagesdefinierten Stufen. Wenn ein Argument nicht definiert ist, werden die Stufen standardmäßig aufNonegesetzt, was eine leere/undefinierte Stufe anzeigt.
Erhöht
- AttributeError - Wenn eine Stufe in den Eingabeschlüsselwortargumenten nicht definiert ist.
- ValueError - Wenn ein ungültiger Stufenname angegeben wird.
Attribute
expanded_stages
Erweiterte Passmanager-Phasen mit pre_ und post_ .
invalid_stage_regex
Standardwert: re.compile('\s|\+|\-|\*|\/|\\|\%|\{->0<-}|\@|\!|\~|\^|\&|\:|\[|\]|\\{|\\}|\(|\)')
stages
Pass Manager Stufen
Methoden
append
append(passes)
Anhängen eines Pass-Sets an die Liste der Pässe.
Parameter
passes (Task |list[Task]) – Eine Reihe von Transpiler-Durchläufen, die dem Zeitplan hinzugefügt werden sollen.
Erhöht
TranspilerError – wenn ein Pass unter den Pässen kein ordnungsgemäßer Pass ist.
Rückgabetyp
Keine
draw
draw(filename=None, style=None, raw=False)
Zeichnen Sie den gestaffelten Passmanager.
Diese Funktion ruft das systemeigene Graphviz-Tool für eine Datei auf, die vom Benutzer steuerbare Zeichenfolgen (wie beispielsweise Passnamen) enthält. Es wird empfohlen, diese Funktion nur bei vertrauenswürdigen Eingaben aufzurufen.
Parameter
- filename (str) – Dateipfad, unter dem das Bild gespeichert werden soll.
- style (dict) – Die Schlüssel sind die Pass-Klassen und die Werte sind die Farben, in denen sie erstellt werden sollen. Ein Beispiel findet sich in der Datei DEFAULT_STYLE. Ein sortiertes Wörterbuch kann verwendet werden, um eine prioritätsbasierte Farbgebung sicherzustellen, wenn ein Pass in mehrere Kategorien fällt. Alle Werte, die nicht im angegebenen Wörterbuch enthalten sind, werden aus dem Standardwörterbuch übernommen.
- raw (bool) – Falls
Trueja, speichern Sie die Dot-Rohdaten anstelle des Bildes.
remove
remove(index)
Entfernt einen bestimmten Durchlauf im Scheduler.
Parameter
index (int) – Geben Sie den Index des zu entfernenden Elements an, basierend auf der Position in passes().
Erhöht
PassManagerError – Falls der Index nicht gefunden wird.
Rückgabetyp
Keine
replace
replace(index, passes)
Ersetzen eines bestimmten Durchlaufs im Planer.
Parameter
- index (int) – Übergeben Sie den zu ersetzenden Index, basierend auf der Position in passes().
- passes (BasePass | list[BasePass]) – Ein Pass, der in den Zeitplan des Pass-Managers aufgenommen werden soll.
Rückgabetyp
Keine
run
run(circuits, output_name=None, callback=None, num_processes=None, *, property_set=None)
Führen Sie alle Durchläufe auf der angegebenen circuits durch.
Parameter
-
circuits (_CircuitsT) – Stromkreis(e) zur Umwandlung über alle registrierten Durchgänge.
-
output_name (str | None) – Der Name des Ausgangskreises. Bei
Nonewird er auf denselben Namen wie der Eingangskreis gesetzt. -
callback (Callable | None) –
Eine Callback-Funktion, die nach jeder Ausführung eines Durchgangs aufgerufen wird. Die Funktion wird mit 5 Schlüsselwortargumenten aufgerufen:
pass_ (Pass): the pass being run dag (DAGCircuit): the dag output of the pass time (float): the time to execute the pass property_set (PropertySet): the property set count (int): the index for the pass executionAnmerkungBeachten Sie, dass sich die Schlüsselwortargumente hier von denen unterscheiden, die von der generischen
BasePassManager. Dieser Passmanager übersetzt diese Argumente in die oben beschriebene Form.Die genauen Argumente, die übergeben werden, legen die Interna des Pass-Managers offen und können sich ändern, wenn sich die Interna des Pass-Managers ändern. Wenn Sie beabsichtigen, eine Callback-Funktion über mehrere Versionen hinweg wiederzuverwenden, stellen Sie sicher, dass die übergebenen Argumente dieselben sind.
Um die Callback-Funktion zu nutzen, definieren Sie eine Funktion, die kwargs dict aufnimmt und auf die Variablen zugreift. Zum Beispiel:
def callback_func(**kwargs): pass_ = kwargs['pass_'] dag = kwargs['dag'] time = kwargs['time'] property_set = kwargs['property_set'] count = kwargs['count'] ...AnmerkungBei der Transpilierung mit Multiprocessing wird die Callback-Funktion im Kontext eines jeden Unterprozesses aufgerufen, unabhängig vom übergeordneten Prozess.
-
num_processes (int | None) – Die maximale Anzahl paralleler Prozesse, die gestartet werden können, wenn die parallele Ausführung aktiviert ist. Dieses Argument überschreibt
num_processesin der Benutzerkonfigurationsdatei und dieQISKIT_NUM_PROCSUmgebungsvariable. Wenn diese Option aktiviert istNone, wird die Systemstandardkonfiguration oder die lokale Benutzerkonfiguration verwendet. -
property_set (dict[str, object] | None) – Falls angegeben, der Anfangswert, der als
PropertySetfür die Pass-Manager-Pipeline verwendet wird. Dies kann verwendet werden, um die Analyse von einem Lauf zum nächsten weiterzuführen, wenn Sie wissen, dass die Analyse sicher weitergegeben werden kann. Beachten Sie, dass einige Analysen spezifisch für den Eingangsschaltkreis und den jeweiligenTargetdaher sollten Sie bei der Verwendung dieses Arguments sehr vorsichtig sein.
Rückgabe
Die transformierte(n) Schaltung(en).
Rückgabetyp
_CircuitsT
to_flow_controller
to_flow_controller()
Linearisieren Sie diesen Manager in einen einzigen FlowControllerLinearso dass er in einem anderen Durchlaufmanager verschachtelt werden kann.
Rückgabe
Ein linearisierter Passmanager.
Rückgabetyp