ConstrainedReschedule
class qiskit.transpiler.passes.ConstrainedReschedule(*args, **kwargs)
Basen: AnalysisPass
Rescheduler-Durchgang, der die Startzeiten der Knoten aktualisiert, damit sie mit den Hardwareausrichtungen übereinstimmen.
Dieser Durchlauf verschiebt die Startzeiten der DAG-Knoten, die zuvor mit einem der Planungsdurchläufe geplant wurden, z. B. ASAPScheduleAnalysis oder ALAPScheduleAnalysis, so dass jeder Befehlsbeginn die Ausrichtungsbedingungen erfüllt.
Beispiele
Wir gehen davon aus, dass die folgende Schaltung auf einem Backend mit 16 dt Acquisition Alignment ausgeführt wird.
┌───┐┌────────────────┐┌─┐
q_0: ┤ X ├┤ Delay(100[dt]) ├┤M├
└───┘└────────────────┘└╥┘
c: 1/════════════════════════╩═
0Beachten Sie, dass eine Verzögerung von 100 dt bei der Messung einen Versatz von 4 dt zur Folge hat. Dieser Durchgang fügt der Eingangsschaltung eine zusätzliche Zeitverschiebung von 12 dt hinzu.
┌───┐┌────────────────┐┌─┐
q_0: ┤ X ├┤ Delay(112[dt]) ├┤M├
└───┘└────────────────┘└╥┘
c: 1/════════════════════════╩═
0Hinweise
Ihr Backend kann Schaltungen ausführen, die diese Ausrichtungsbeschränkungen verletzen. Es kann jedoch sein, dass Sie aufgrund der nicht nachgeführten Phase, die durch die falsche Ausrichtung der Anweisung entsteht, ein fehlerhaftes Messergebnis erhalten.
Neuen Rescheduler-Durchgang erstellen.
Die Ausrichtungswerte hängen von der Steuerelektronik Ihres Quantenprozessors ab.
Parameter
- acquire_alignment - Ganzzahlige Zahl, die die Mindestzeitauflösung für die Auslösung des Erfassungsbefehls in Einheiten von
dtangibt. - pulse_alignment - Ganzzahlige Zahl, die die minimale zeitliche Auflösung für die Auslösung des Gate-Befehls in Einheiten von
dtangibt. - target - Das
Targetsteht für das Ziel-Backend. Wenntargetangegeben ist, hat dieses Argument Vorrang undacquire_alignmentundpulse_alignmentwerden ignoriert.
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)
Rescheduler ausführen.
Dieser Durchlauf sollte eine Neuplanung durchführen, um die Anforderungen zu erfüllen:
- Alle DAGOpNode Knoten (mit Ausnahme von Compiler-Direktiven) werden zum Startzeitpunkt unter Einhaltung der Hardware-Ausrichtungsbeschränkungen platziert.
- Die Endzeit eines Knotens überschneidet sich nicht mit der Startzeit von Nachfolgeknoten.
Annahmen:
- Die topologische Ordnung und die absolute zeitliche Ordnung von DAGOpNode sind konsistent.
- Alle Bits in entweder qargs oder cargs, die mit dem Knoten verbunden sind, starten synchron.
- Die Startzeit von qargs und cargs kann aufgrund von E/A-Latenzzeiten unterschiedlich sein.
Auf der Grundlage der obigen Konfigurationen wird der Umplanungsvorgang nach folgender Strategie durchgeführt:
-
Die Knoten werden in der topologischen Reihenfolge abgearbeitet, vom Anfang der
der Schaltung (d. h. von links nach rechts). Für jeden Knoten (einschließlich Compiler-Direktiven) führt die Funktion
_push_node_backdie Schritte 2 und 3 aus. -
Wenn die Startzeit des Knotens gegen die Ausrichtungsbeschränkung verstößt,
wird die Startzeit erhöht, um die Bedingung zu erfüllen.
-
Jeder unmittelbare Nachfolger, dessen Startzeit sich mit der Endzeit des Knotens überschneidet, ist
nach hinten (zum Ende des Drahtes hin) geschoben. Beachten Sie, dass der verschobene Nachfolger zu diesem Zeitpunkt die Bedingungen nicht erfüllen muss, aber dies wird bei der Verarbeitung des Nachfolgeknotens selbst erledigt.
-
Nachdem jeder Knoten bearbeitet wurde, werden alle Ausrichtungsbeschränkungen aufgelöst,
und es wird keine Überschneidung zwischen den Knoten geben.
Parameter
dag (DAGCircuit) – DAG-Schaltung, die mit Beschränkungen neu geplant werden soll.
Erhöht
TranspilerError – Falls keine Fahrt geplant ist.
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