ConsolidateBlocks
class qiskit.transpiler.passes.ConsolidateBlocks(*args, **kwargs)
Basen: TransformationPass
Ersetzen Sie jeden Block von aufeinanderfolgenden Gattern durch einen einzigen Unitary-Knoten.
Schritt zur Zusammenfassung von Folgen ununterbrochener Gatter, die auf dieselben Qubits wirken, zu einem UnitaryGate Knoten, der später zu einer möglicherweise optimaleren Teilschaltung neu synthetisiert wird. Bei diesem Durchlauf wird in der Regel zunächst die Eingabe DAGCircuit analysiert, um alle Zwei-Qubit-Blöcke im Schaltkreis zu ermitteln, und anschließend anhand einer internen Heuristik entschieden, ob dieser Block zu einem UnitaryGate zusammengefasst werden soll oder nicht. Wenn jedoch entweder block_list oder run_list im Eigenschaftssatz festgelegt sind, führt dieser Durchlauf keine eigene Analyse des DAG durch.
Für diesen Durchlauf gibt es zwei Altmodi, je nachdem, ob bei der Ausführung dieses Durchlaufs in den Eigenschaften entweder block_list oder run_list gesetzt ist. UnitaryGateblock_list sollte eine Liste von Listen mit Knotenindizes enthalten, wobei jede innere Liste eine Sammlung von Blöcken darstellt, die möglicherweise zu einem zusammengefasst werden sollen. Diese Blöcke können eine beliebige Anzahl von Qubits umfassen, doch in den voreingestellten Pass-Managern früherer Qiskit-Versionen waren es in der Regel zwei, die durch den Collect2qBlocks Pass festgelegt wurden. Außerdem gibt es den CollectMultiQBlocks Transpiler-Durchlauf, der die gefundenen Blöcke für eine beliebige Anzahl von Qubits festlegt blocks_list . Der andere Eigenschaftssatzschlüssel run_list ist eine Liste von Listen mit „Läufen“, bei denen es sich um einzelne Qubit-Blöcke handelt, die zusammengefasst werden sollen. Dies wurde möglicherweise durch den Collect1qRuns Transpiler-Durchlauf festgelegt. Diese Funktion für „Läufe“ wurde größtenteils durch den Optimize1qGatesDecomposition Transpiler-Durchlauf abgelöst, der in der Regel stattdessen verwendet werden sollte, da er eine gründlichere und leistungsfähigere Methode zur Vereinfachung von Einzelqubit-Läufen darstellt.
Dieser Durchlauf liest den PropertySet schlüssel ConsolidateBlocks_qubit_map , der zur Kommunikation mit rekursiven Arbeitsinstanzen von sich selbst für Kontrollflussoperationen verwendet wird. Der Schlüssel sollte in einer benutzerseitigen Pipeline nie beobachtbar sein PassManager pipeline zu sehen sein (er wird nur in internen PassManager instanzen), aber der Durchlauf kann falsche Ergebnisse oder Fehler zurückgeben, wenn ein anderer Durchlauf diesen Schlüssel festlegt.
ConsolidateBlocks initialisierung.
Wenn kak_basis_gate nicht None ist, wird es als Basisgatter für die KAK-Zerlegung verwendet. Andernfalls, wenn basis_gates nicht None ist, wird ein Basistor aus dieser Liste ausgewählt. Andernfalls wird das Basisgatter CXGate.
Parameter
- kak_basis_gate – Basisgatter für die KAK-Zerlegung.
- force_consolidate – Blockkonsolidierung erzwingen.
- basis_gates – Basisgatter, aus denen ein KAK-Gatter ausgewählt werden kann.
- approximation_degree – ein Float-Wert zwischen . Je niedriger der Wert, desto genauer die Annäherung.
- target – Das Zielobjekt für das Kompilierungs-Backend.
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 (DAGCircuit) – Qiskit IR zur Optimierung.
- state (DAGCircuit) – Zustand, der mit der Ausführung des Workflows durch den Pass-Manager selbst verbunden ist.
- callback (Callable[[Task, DAGCircuit, 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
name
run
run(dag)
Führen Sie den ConsolidateBlocks Pass auf dag.
Iterieren Sie über jeden Block und ersetzen Sie ihn durch einen gleichwertigen Unitary auf denselben Drähten.
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