OptimizeAnnotated
class qiskit.transpiler.passes.OptimizeAnnotated(*args, **kwargs)
Basi: TransformationPass
Passaggio di ottimizzazione su circuiti con operazioni annotate.
Ottimizzazioni implementate:
- Per ogni operazione annotata, convertire l'elenco dei suoi modificatori in una forma canonica. Ad esempio, applicare consecutivamente
inverse(),control(2)einverse()equivale ad applicarecontrol(2). - Rimuovere le annotazioni quando possibile. Ad esempio,
AnnotatedOperation(SwapGate(), [InverseModifier(), InverseModifier()])è equivalente aSwapGate(). - Combinare ricorsivamente le annotazioni. Ad esempio, se
g1 = AnnotatedOperation(SwapGate(), InverseModifier())eg2 = AnnotatedOperation(g1, ControlModifier(2)), allorag2può essere sostituito conAnnotatedOperation(SwapGate(), [InverseModifier(), ControlModifier(2)]). - Applica la riduzione coniugata alle operazioni annotate. Ad esempio,
control - [P -- Q -- P^{-1}]può essere riscritto comeP -- control - [Q] -- P^{-1}, cioè è necessario controllare solo la parte centrale. Questo funziona anche per i modificatori inversi e di potenza.
OptimizeAnnotated inizializzatore.
Parametri
- destinazione – la destinazione del backend da utilizzare per questo passaggio.
- equivalence_library - La libreria di equivalenza utilizzata (le istruzioni in questa libreria non saranno ottimizzate da questo passaggio).
- basis_gates – nomi delle basi di destinazione in cui eseguire l'unrolling, ad esempio [‘u3’, ‘cx’] (le istruzioni presenti in questo elenco non saranno ottimizzate da questo passaggio). Viene ignorato se
targetè specificato anche. - recurse - Per impostazione predefinita, quando viene specificato
targetobasis_gates, il passaggio scende ricorsivamente nelle definizioni dei gate (e la ricorsione non viene applicata quando nessuno dei due è specificato, poiché tali oggetti non devono essere sintetizzati). Impostando questo valore aFalsesi preclude la ricorsione in ogni caso. - do_conjugate_reduction - controlla se deve essere eseguita la riduzione del coniugato.
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 (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 di un'attività di ottimizzazione.
Risultati
Qiskit IR ottimizzato e stato del flusso di lavoro.
Tipo di restituzione
name
run
run(dag)
Eseguire il passaggio OptimizeAnnotated su dag.
Parametri
dag (DAGCircuit) – ingresso dag.
Risultati
Output dag con operazioni di livello superiore ottimizzate.
Aumenti
TranspilerError – quando qualcosa va storto.
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