Skip to main content
IBM Quantum Platform

StagedPassManager

class qiskit.transpiler.StagedPassManager(stages=None, **kwargs)

GitHub

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:

  1. init - Erste Durchläufe vor der Einbettung der Schaltung in das Backend.
  2. layout - Ordnet die virtuellen Qubits in der Schaltung den physischen Qubits im Backend zu.
  3. 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.
  4. translation - Übersetzt die Gatter in der Schaltung in den Basis-Gattersatz des Ziel-Backends.
  5. 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.
  6. scheduling - Hardwarespezifische Pässe, die die Operationen in der Schaltung planen.
Anmerkung

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 PassManager werte für alle in stages definierten Stufen. Wenn ein Argument nicht definiert ist, werden die Stufen standardmäßig auf None gesetzt, 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)

GitHub

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)

GitHub

Zeichnen Sie den gestaffelten Passmanager.

Warnung

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)

GitHub

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)

GitHub

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)

GitHub

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 None wird 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 execution
    Anmerkung

    Beachten 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']
        ...
    Anmerkung

    Bei 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_processes in der Benutzerkonfigurationsdatei und die QISKIT_NUM_PROCS Umgebungsvariable. Wenn diese Option aktiviert ist None , wird die Systemstandardkonfiguration oder die lokale Benutzerkonfiguration verwendet.

  • property_set (dict[str, object] | None) – Falls angegeben, der Anfangswert, der als PropertySet fü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 jeweiligen Targetdaher 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()

GitHub

Linearisieren Sie diesen Manager in einen einzigen FlowControllerLinearso dass er in einem anderen Durchlaufmanager verschachtelt werden kann.

Rückgabe

Ein linearisierter Passmanager.

Rückgabetyp

FlowControllerLinear

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