CollectMultiQBlocks
class qiskit.transpiler.passes.CollectMultiQBlocks(*args, **kwargs)
Basi: AnalysisPass
Raccogliere sequenze di porte ininterrotte che agiscono su gruppi di qubit. max_block_size specifica il numero massimo di qubit su cui può agire un singolo gruppo di gate
Percorrere il DAG e trovare blocchi di porte che agiscono consecutivamente su gruppi di qubit. Scrivere i blocchi in property_set come elenco di blocchi del modulo:
[[g0, g1, g2], [g4, g5]]I blocchi sono riportati in un ordine topologico valido. Inoltre, le porte all'interno di ciascun blocco sono riportate anche in ordine topologico Alcune porte possono non essere presenti in nessun blocco (ad esempio, se il numero di operandi è maggiore di max_block_size)
Per impostazione predefinita, i blocchi vengono raccolti nella direzione dagli ingressi verso le uscite del DAG. L'opzione collect_from_back consente di cambiare questa direzione, cioè di raccogliere i blocchi dalle uscite verso gli ingressi. Si noti che i blocchi sono ancora riportati in un ordine topologico valido.
Una struttura dati Disjoint Set Union (DSU) viene utilizzata per mantenere i blocchi durante l'elaborazione dei gate. Questa struttura di dati punta ogni qubit a un insieme in ogni momento e gli insiemi corrispondono ai blocchi correnti. Questi cambiano nel tempo e la struttura dei dati consente di effettuare queste modifiche in modo rapido.
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)
Eseguire l'attività di ottimizzazione per l'IR Qiskit in ingresso.
Parametri
- passmanager_ir (IR) – Qiskit IR da ottimizzare.
- state (PassManagerState) – Stato associato all'esecuzione del flusso di lavoro da parte del gestore del passaggio stesso.
- callback (Callable[[Task, IR_OUT, PropertySet, float, int], None] | None) – Una funzione di callback che viene chiamata ad ogni esecuzione di un'attività di ottimizzazione.
Risultati
Qiskit IR ottimizzato e stato del flusso di lavoro.
Tipo di restituzione
tupla [ IR_OUT, PassManagerState ]
find_set
find_set(index)
Funzione DSU per trovare la radice di un insieme di elementi Se il mio genitore è me stesso, io sono la radice. Altrimenti troviamo ricorsivamente la radice del mio genitore. Dopodiché, assegniamo al mio genitore il ruolo di radice, per evitare ricorsioni in futuro.
name
run
run(dag)
Eseguire il passaggio CollectMultiQBlocks su dag.
I blocchi contengono nodi "op" in ordine topologico, in modo che tutte le porte di un blocco agiscano sullo stesso insieme di qubit e siano adiacenti nel circuito.
I blocchi vengono costruiti esaminando i predecessori e i successori delle porte "cx" nel circuito. u1, u2, u3, cx, id gates saranno inclusi.
Dopo l'esecuzione, property_set['block_list'] viene impostato come un elenco di tuple di oggetti DAGNode
union_set
union_set(set1, set2)
Funzione DSU per unire due insiemi. Trova le radici di ciascun insieme. Quindi imposta uno dei due come figlio dell'altro, collegando così i due insiemi. Unisce l'insieme più piccolo a quello più grande per ottenere prestazioni migliori
update_status
update_status(state, run_state)
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