Skip to main content
IBM Quantum Platform

SabrePreLayout

class qiskit.transpiler.passes.SabrePreLayout(*args, **kwargs)

GitHub

Basen: AnalysisPass

Wählen Sie ein Startlayout, das Sie für weitere Sabre-Layoutversuche verwenden möchten.

Der Durchlauf funktioniert so, dass die Kopplungskarte um immer mehr „zusätzliche“ Kanten erweitert wird, bis es „ VF2 “ gelingt, einen perfekten Graphenisomorphismus zu finden. Genauer gesagt enthält die erweiterte Kopplungskarte Kanten zwischen Knoten, die in der ursprünglichen Kopplungskarte d innerhalb einer bestimmten Entfernung liegen. Die ursprünglichen Kanten sind rauschfrei, während die zusätzlichen Kanten ein Rauschen aufweisen, das exponentiell mit der Entfernung zunimmt. Der Wert von d wird erhöht, bis ein Isomorphismus gefunden wird.

Intuitiv lässt sich sagen, dass ein besseres Layout für „ VF2 “ weniger zusätzliche Kanten und kürzere Abstände zwischen diesen aufweist.


Geschriebene Eigenschaftswerte

sabre_starting_layouts (list[Layout])

Eine optionale Liste von Layout objekten, die für zusätzliche Sabre-Layoutversuche verwendet werden sollen.

Quellenangaben:

[1] Henry Zou und Matthew Treinish und Kevin Hartman und Alexander Ivrii und Jake Lishman. “LightSABRE: Ein leichtgewichtiger und verbesserter SABRE-Algorithmus" arXiv:2409.08368

param coupling_map

Ein gerichteter Graph, der die ursprüngliche Kopplungskarte oder ein Modell des Backends (einschließlich dessen Konnektivität) darstellt.

param max_distance

Die maximale Distanz für die Ausführung von „ VF2 “ mit der erweiterten Kopplungskarte. Insbesondere wird hiermit auch der maximale Abstand zwischen den ursprünglichen Knoten festgelegt, die in der erweiterten Kopplungskarte miteinander verbunden werden.

param Fehler_rate

Die Fehlerquote, die den „zusätzlichen“ Kanten zugewiesen werden soll. Eine Fehlerquote ungleich Null bewirkt, dass „ VF2 “ den ursprünglichen Kanten den Vorzug vor zusätzlichen Kanten gibt.

param max_trials_vf2

Legt die maximale Anzahl von Versuchen für „ VF2 “ fest. Diese Option wird seit der Einführung der On-the-Fly-Auswertung in „ VF2 “, die in Qiskit 2.3 eingeführt wurde, hauptsächlich aus Kompatibilitätsgründen beibehalten. Um die Dauer des Durchlaufs zu begrenzen, legen Sie stattdessen die call_limit_vf2 Parameter max_distance und fest.

param call_limit_vf2

Die maximale Anzahl der Versuche, bei denen die Suche nach einem Isomorphismus für den inneren VF2 versucht, die Abbildung zu erweitern. Wenn None, dann gibt es keine Grenze. Handelt es sich um ein 2-Tupel, beginnt der Durchlauf mit dem ersten Element und wechselt zum zweiten, sobald die erste Übereinstimmung gefunden wurde, ohne dass die Anzahl der durchgeführten Schritte zurückgesetzt wird. Auf diese Weise kann eine umfassende Suche nach beliebigen Zuordnungen durchgeführt werden, die jedoch bei Auffinden einer Übereinstimmung dank eines geringen Erweiterungsbudgets schnell beendet wird.

param improve_layout

Nicht mehr verwendet (die Option ist seit der Einführung der On-the-Fly-Auswertung in „ VF2 “ überflüssig geworden).

Parameter min_distance

Die Distanz für den ersten Durchlauf von „ VF2 “ mit der erweiterten Kopplungskarte. Bei dieser Einstellung min_distance > 1 werden alle Prüfungen auf kleinere Entfernungen übersprungen, insbesondere die Prüfung „ distance-1 “, die der Ausführung des VF2Layout „pass“ entspricht.

hebt TranspilerError

Wenn das Argument zur Laufzeit nicht coupling_map angegeben wird.


Attribute

is_analysis_pass

Prüfen Sie, ob der Pass ein Analysepass ist.

Wenn der Pass ein AnalysisPass, ist, bedeutet dies, dass der Pass die DAG analysieren und die Ergebnisse dieser Analyse in den Eigenschaftssatz schreiben kann. Änderungen an der DAG sind bei dieser Art von Pass nicht zulässig.

is_transformation_pass

Prüfen Sie, ob der Pass ein Transformationspass ist.

Wenn es sich bei dem Pass um TransformationPass, handelt, bedeutet dies, dass der Pass die DAG manipulieren kann, aber den Eigenschaftssatz nicht ändern kann (aber er kann gelesen werden).


Methoden

execute

execute(passmanager_ir, state, callback=None)

GitHub

Ausführen der Optimierungsaufgabe für die Eingabe Qiskit IR.

Parameter

  • passmanager_ir (IR) – Qiskit IR zur Optimierung.
  • state (PassManagerState) – Status, der mit der Ausführung des Workflows durch den Passmanager selbst verbunden ist.
  • callback (Callable[[Task, IR_OUT, PropertySet, float, int], None] | None) – Eine Callback-Funktion, die bei jeder Ausführung einer Optimierungsaufgabe aufgerufen wird.

Rückgabe

Optimierte Qiskit IR und Stand des Workflows.

Rückgabetyp

Tupel [ IR_OUT, PassManagerState ]

name

name()

GitHub

Name des Passes.

Rückgabetyp

str

run

run(dag)

GitHub

Führen Sie den SabrePreLayout Pass auf dag.

Das ermittelte Startlayout wird in den Property-Set-Wert sabre_starting_layouts geschrieben.

Parameter

dag (DAGCircuit) – DAG, für die das Startlayout erstellt werden soll.

update_status

update_status(state, run_state)

GitHub

Aktualisieren Sie den Workflow-Status.

Parameter

  • state (PassManagerState) – Übergeben Sie den Status des Managers zur Aktualisierung.
  • run_state (RunState) – Erledigungsstatus der aktuellen Aufgabe.

Rückgabe

Aktualisierter Status des Passmanagers.

Rückgabetyp

PassManagerState

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