Skip to main content
IBM Quantum Platform

ConsolidateBlocks

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

GitHub

Basi: TransformationPass

Sostituire ogni blocco di porte consecutive con un singolo nodo unitario.

Passaggio volto a raggruppare sequenze di porte attive ininterrottamente sugli stessi qubit in un UnitaryGate nodo, da risintetizzare in seguito in un sottocircuito potenzialmente più ottimale. Il funzionamento tipico di questo passaggio consiste nell'eseguire l'analisi dell'input DAGCircuit per individuare tutti i blocchi di due qubit presenti nel circuito e quindi stabilire, sulla base di un algoritmo euristico interno, se quel blocco debba essere consolidato in un unico qubit UnitaryGate o meno. Tuttavia, se nel set di proprietà è impostato o run_list``block_list , questo passaggio non eseguirà una propria analisi del DAG.

Esistono due modalità di funzionamento legacy per questo passaggio, a seconda che nel set di proprietà sia impostato o run_list``block_list al momento dell'esecuzione del passaggio. block_list dovrebbe contenere un elenco di elenchi di indici di nodi, in cui ogni elenco interno rappresenta una raccolta di blocchi potenzialmente da consolidare in un UnitaryGate. Questi blocchi possono contenere un numero qualsiasi di qubit, ma nei gestori di passaggi predefiniti delle versioni precedenti di Qiskit erano solitamente due e venivano impostati dal Collect2qBlocks passaggio. C'è anche il passaggio del CollectMultiQBlocks transpiler che imposta blocks_list i blocchi individuati per un numero arbitrario di qubit. L'altra chiave run_list di impostazione della proprietà è un elenco di elenchi di "sequenze", ovvero blocchi di singoli qubit da consolidare. Questo potrebbe essere stato impostato dal passaggio del Collect1qRuns transpiler. Questa funzionalità per le "esecuzioni" è stata in gran parte sostituita dal passaggio Optimize1qGatesDecomposition del transpiler, che in genere dovrebbe essere utilizzato al suo posto per ottenere un metodo più accurato ed efficiente di semplificazione delle esecuzioni su un singolo qubit.

Questo passaggio legge la PropertySetConsolidateBlocks_qubit_map che utilizza per comunicare con le istanze ricorsive del lavoratore per le operazioni di controllo del flusso. La chiave non dovrebbe mai essere osservabile in una pipeline PassManager (è impostata solo nelle istanze interne) PassManager ma il passaggio può restituire risultati errati o errori se un altro passaggio imposta questa chiave.

ConsolidateBlocks inizializzatore.

Se kak_basis_gate non è None verrà utilizzato come porta base per la decomposizione KAK. Altrimenti, se basis_gates non è None , verrà scelto un gate di base da questo elenco. Altrimenti, la porta di base sarà CXGate.

Parametri

  • kak_basis_gate – Porta di base per la decomposizione KAK.
  • force_consolidate – Forza il consolidamento dei blocchi.
  • basis_gates – Porte di base tra cui scegliere una porta KAK.
  • approximation_degree – un valore float compreso tra [0.0,1.0][0.0, 1.0]. Un valore più basso indica un’approssimazione maggiore.
  • target – L'oggetto target per il backend di compilazione.

Attributi

is_analysis_pass

Controlla se il passaggio è un passaggio di analisi.

Se il passo è un AnalysisPass,, significa che il passo può analizzare il DAG e scrivere i risultati di tale analisi nel set di proprietà. Questo tipo di passaggio non consente di modificare il DAG.

is_transformation_pass

Controlla se il passaggio è un passaggio di trasformazione.

Se il passaggio è un TransformationPass,, significa che il passaggio può manipolare il DAG, ma non può modificare il set di proprietà (ma può essere letto).


Metodi

execute

execute(passmanager_ir, state, callback=None)

GitHub

Eseguire l'attività di ottimizzazione per l'IR Qiskit in ingresso.

Parametri

  • passmanager_ir (DAGCircuit) – Qiskit IR da ottimizzare.
  • state (DAGCircuit) – Stato associato all'esecuzione del flusso di lavoro da parte dello stesso gestore dei passaggi.
  • callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – Una funzione di callback che viene chiamata ad ogni esecuzione dell'attività di ottimizzazione.

Risultati

Qiskit IR ottimizzato e stato del flusso di lavoro.

Tipo di restituzione

tuple [ DAGCircuit, PassManagerState ]

name

name()

GitHub

Nome del passo.

Tipo di restituzione

STR

run

run(dag)

GitHub

Eseguire il passaggio ConsolidateBlocks su dag.

Iterare ogni blocco e sostituirlo con un Unitario equivalente sugli stessi fili.

update_status

update_status(state, run_state)

GitHub

Aggiornare lo stato del flusso di lavoro.

Parametri

  • state (PassManagerState) – Passare lo stato del gestore da aggiornare.
  • run_state (RunState) – Stato di completamento dell'attività corrente.

Risultati

Stato aggiornato del gestore dei passaggi.

Tipo di restituzione

PassManagerState

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.