SabrePreLayout
class qiskit.transpiler.passes.SabrePreLayout(*args, **kwargs)
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)
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
run
run(dag)
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)
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