MergeOrbitalRotations
class MergeOrbitalRotations
Basi: GenericPass[DAGCircuit, DAGCircuit]
Un passaggio di transpilazione che unisce sequenze di rotazioni orbitali consecutive in un’unica rotazione.
Due porte OrbitalRotation applicate in sequenza sulla stessa modalità si combinano in un’unica rotazione orbitale, che rotation_unitary è il prodotto matriciale delle due. Questo passaggio individua le sequenze massime di tali rotazioni consecutive in a e FermionicDAGCircuit le riscrive ciascuna in un unico OrbitalRotation, in modo che la fase di sintesi produca un'unica decomposizione (ancora quadrata) anziché una per ogni gate nella sequenza.
Una “corsa” è una catena massima di OrbitalRotation nodi che agiscono sullo stesso insieme di modalità, senza che nulla intervenga su quei collegamenti. Seguendo la convenzione OrbitalRotation , l'applicazione di una rotazione e poi di una rotazione produce ; pertanto, le rotazioni della sequenza vengono moltiplicate nell'ordine del circuito (la rotazione successiva a sinistra) per formare il risultato finale rotation_unitary. Poiché il gate combinato implementa esattamente quel cambiamento di base composto, la riscrittura lascia invariato il vettore di stato simulato.
Vengono unite solo le rotazioni appartenenti allo stesso insieme di modalità: due rotazioni appartenenti a insiemi di modalità diversi (anche se sovrapposti) o rotazioni separate da qualsiasi altra operazione su un cavo condiviso interrompono la sequenza e vengono lasciate invariate. Questa è la forma che si ottiene, ad esempio, con due rotazioni per-spin adiacenti sullo stesso semispin, oppure con strati UCJ consecutivi le cui rotazioni orbitali di coda e di testa si incontrano sugli stessi modi.
Si tratta di un prototipo in fase iniziale di sviluppo. Si prega di prestare attenzione alle modifiche all'interfaccia che potrebbero essere apportate senza preavviso durante la fase di sviluppo pre-rilascio di questo pacchetto.
Metodi
run
run(dag)
Esegue questa fase di transpilazione.
Raccoglie ogni sequenza massima di porte OrbitalRotation consecutive nelle stesse modalità e sostituisce ogni sequenza di lunghezza pari o superiore a due con una singola porta il OrbitalRotation cui valore è rotation_unitary dato dal prodotto delle rotazioni della sequenza nell'ordine del circuito. Le esecuzioni di una singola rotazione (e di tutti gli altri nodi) rimangono invariate. Il DAG di input viene modificato in loco.
Parametri
dag (DAGCircuit) – il circuito di ingresso con istruzioni basate sui fermioni. Sono op supportate solo le istanze FermionicGate come quelle indicate DAGOpNode .
Risultati
Il circuito di uscita, che continua ad agire su un registro fermionico.
Tipo di restituzione
Metodi ereditati
execute
execute(passmanager_ir, state, callback=None)
Esegui l'operazione di ottimizzazione per l'IR di Qiskit in ingresso.
Parametri
- passmanager_ir (IR) – Qiskit IR da ottimizzare.
- state (PassManagerState) – Stato associato all'esecuzione del flusso di lavoro da parte dello stesso gestore dei passaggi.
- 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
IR ottimizzato di Qiskit e stato del flusso di lavoro.
Tipo di restituzione
tupla [ IR_OUT, PassManagerState ]
name
update_status
update_status(state, run_state)
Aggiornare lo stato del flusso di lavoro.
Parametri
- state (PassManagerState) – Passare lo stato del gestore per l'aggiornamento.
- run_state (RunState) – Stato di completamento dell'attività corrente.
Risultati
Stato del gestore dei pass aggiornato.
Tipo di restituzione