VF2Layout
class qiskit.transpiler.passes.VF2Layout(*args, **kwargs)
Basen: AnalysisPass
Ein Durchgang für die Auswahl eines Layouts eines Schaltkreises auf einem Kopplungsgraphen, als ein Untergraphen-Isomorphismus-Problem, gelöst von VF2++.
Wenn eine Lösung gefunden wird, bedeutet dies, dass es ein "perfektes Layout" gibt und dass keine weitere Auslagerung oder Verlegung erforderlich ist. Wenn eine Lösung gefunden wird, wird das Layout im Property Set als property_set['layout'] eingestellt. Wenn jedoch keine Lösung gefunden wird, wird keine property_set['layout'] eingestellt. Der Grund für das Anhalten wird in allen Fällen in property_set['VF2Layout_stop_reason'] festgelegt und ist einer der Werte, die in VF2LayoutStopReason aufgezählt werden und die folgenden Werte haben:
"solution found": Wenn ein perfektes Layout gefunden wurde."nonexistent solution": Wenn kein perfektes Layout gefunden wurde.">2q gates in basis": Wenn VF2Layout nicht mit der Basis arbeiten kann
Standardmäßig wird in diesem Durchgang eine heuristische Bewertungsübersicht auf der Grundlage der Fehlerquoten in der angegebenen target (oder properties , wenn target nicht angegeben ist) erstellt. Es können jedoch vor diesem Durchgang Analysedurchläufe durchgeführt und vf2_avg_error_map im Eigenschaftssatz mit einer ErrorMap -Instanz eingestellt werden. Wenn ein Wert NaN ist, der als ideale Kante behandelt wird, wird zum Beispiel eine Fehlerkarte wie folgt erstellt:
from qiskit.transpiler.passes.layout.vf2_utils import ErrorMap
error_map = ErrorMap(3)
error_map.add_error((0, 0), 0.0024)
error_map.add_error((0, 1), 0.01)
error_map.add_error((1, 1), 0.0032)die die Fehlerkarte für ein 2-Qubit-Ziel darstellt, bei dem die durchschnittliche 1q Fehlerrate 0.0024 auf Qubit 0 und 0.0032 auf Qubit 1 beträgt. Dann ist die durchschnittliche 2q Fehlerquote für Gatter, die auf (0, 1) arbeiten, 0.01 und (1, 0) wird vom Ziel nicht unterstützt. Dieser wird für die Punktevergabe verwendet, wenn er als Schlüssel vf2_avg_error_map in den Eigenschaften festgelegt ist, wenn VF2Layout ausgeführt wird.
Initialisieren einer VF2Layout Pass-Instanz
Parameter
- coupling_map (CouplingMap) – Gerichtetes Diagramm, das eine Kopplungskarte darstellt.
- strict_direction (bool) – Wenn True, wird die Richtung der Kopplungskarte berücksichtigt. Der Standardwert ist False.
- seed (int | None) – Mischen Sie die Beschriftung der physikalischen Qubits zu Knotenindizes im Kopplungsgraphen unter Verwendung eines vorgegebenen Startwerts ( pRNG ).
NoneSeeds unter Verwendung von OS-Entropie (und ist somit nicht deterministisch). Mit-1wird das Mischen deaktiviert. - call_limit (None | int |tuple[int | None,int | None]) – Die maximale Anzahl von Versuchen, die die innere Isomorphismus-Suche VF2 unternimmt, um die Abbildung zu erweitern. Wenn
None, dann keine Begrenzung. Bei einem 2-Tupel beginnt die Begrenzung mit dem ersten Element und wechselt nach dem ersten Treffer zum zweiten Element, ohne die Anzahl der durchgeführten Schritte zurückzusetzen. Dies kann verwendet werden, um eine lange Suche nach einer beliebigen Zuordnung zu ermöglichen, aber dennoch schnell mit einem geringen Erweiterungsbudget zu beenden, wenn eine gefunden wird. - time_limit (float) – Die Gesamtzeit in Sekunden, die für die Ausführung zur
VF2LayoutVerfügung steht. Dies ist nicht ganz streng; die Ausführung wird beim ersten gefundenen Isomorphismus (falls vorhanden) beendet, nachdem die Zeitbegrenzung überschritten wurde. Durch Aktivieren dieser Option wird die Determiniertheit des Passes aufgehoben. - max_trials (int) – Wenn gesetzt, wird der Algorithmus beendet, nachdem diese Anzahl von _vollständigen_ Layouts gefunden wurde. Da die Bewertung in Echtzeit erfolgt, wird die überwiegende Mehrheit der möglichen Layouts aus der Suche herausgefiltert, bevor sie überhaupt vollständig sind, sodass diese Option kaum Bedeutung hat. Um eine niedrige Grenze für die Zeit festzulegen, die für die Verbesserung einer anfänglichen Grenze aufgewendet wird, legen Sie einen niedrigen Wert für das zweite Element in der
call_limit2-Tupel-Form fest. - target (Target) – Ein Ziel, das das Backend-Gerät darstellt, auf dem
VF2Layoutausgeführt werden soll. Falls angegeben, wird ein gesetzter Wert fürcoupling_mapersetzt, wenn dieTargetkonnektivitätsbeschränkungen enthält. Wenn der Wert vontargetein ideales Backend ohne jegliche Einschränkungen darstellt, wird der Wert voncoupling_mapverwendet.
Erhöht
TypeError - Zur Laufzeit, wenn weder coupling_map noch target angegeben sind.
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 Workflow-Ausführung 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
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