UnitarySynthesis
class qiskit.transpiler.passes.UnitarySynthesis(*args, **kwargs)
Basi: TransformationPass
Sintetizzare le porte in base alle loro porte di base.
Sintetizzare gli unitari su alcune porte di base.
Questo passaggio può approssimare le operazioni unitarie date alcune fedeltà dei gate (tramite target). È possibile forzare una maggiore approssimazione impostando un selettore euristico approximation_degree.
Questo passaggio è multithread quando si utilizza il plugin di sintesi predefinito e, per impostazione predefinita, potrebbe avviare un pool di thread con un numero di thread pari a quello delle CPU. È possibile regolare il numero di thread tramite la RAYON_NUM_THREADS variabile d'ambiente. Ad esempio, impostando RAYON_NUM_THREADS=4 si limiterebbe il pool di thread a 4 thread.
Parametri
- basis_gates – Elenco dei nomi dei gate da selezionare. Se non viene specificato, è necessario utilizzare l'argomento
target. Se vengono specificati sia questo che iltarget, verrà utilizzato il valore ditargete questo verrà ignorato. - approximation_degree – Manopola euristica utilizzata per l'approssimazione dei circuiti (approssimazione 1.0=no, approssimazione 0.0=maximal ). L'approssimazione può rendere il circuito sintetizzato più economico, a costo di allontanarsi dall'operatore unitario originale.
NoneIn tal caso, l'approssimazione viene effettuata sulla base delle fedeltà dei gate. - coupling_map – La mappa di accoppiamento del bersaglio nel caso in cui la sintesi venga effettuata su un circuito fisico. La direzionalità della mappa di accoppiamento verrà presa in considerazione se
pulse_optimizeèTrue/Noneenatural_directionèTrue/None. - pulse_optimize – Indica se ottimizzare gli impulsi durante la sintesi. Se il valore è
None, il sistema tenterà l'operazione, ma ricorrerà a un'alternativa in caso di insuccesso. Un valore pari aTruegenererà un errore se la sintesi ottimizzata per gli impulsi non va a buon fine. - natural_direction – Indica se applicare la sintesi tenendo conto della direzionalità delle porte a 2 qubit. Si applica solo quando
pulse_optimizeèTrueoNone. La direzione naturale viene determinata verificando innanzitutto se la mappa di accoppiamento è unidirezionale. Se non è presente una mappa di accoppiamento o se questa è bidirezionale, verrà utilizzata la direzione del gate con la durata più breve tra quelle indicate nelle proprietà di destinazione.TranspilerErrorSe impostato su True e non è possibile determinare una direzione naturale, genera un'eccezione. Se impostato su None, non verrà generata alcuna eccezione qualora non fosse possibile determinare una direzione naturale. - synth_gates – Elenco dei gate da sintetizzare. Se None e
pulse_optimizeè False o None, il valore predefinito è['unitary']. SeNoneepulse_optimize == True, il valore predefinito è['unitary', 'swap'] - metodo – Il plugin del metodo di sintesi unitaria da utilizzare.
- min_qubits - Il numero minimo di qubit nell'unitario da sintetizzare. Se questo valore è impostato e l'unitario è inferiore al numero di qubit specificato, non verrà sintetizzato.
- plugin_config - Argomenti di configurazione aggiuntivi opzionali (come
dict) che vengono passati direttamente al plugin di sintesi unitaria specificato. Per impostazione predefinita, questo non avrà alcun effetto, poiché il plugin predefinito non ha argomenti aggiuntivi. Per sapere come utilizzarlo, consultare la documentazione del plugin di sintesi unitaria. - target - L'opzione
Targetper il dispositivo di destinazione per cui il passaggio viene compilato. Se specificato, sostituisce i valori impostati perbasis_gatesecoupling_map. - fallback_on_default – Specifica se si debba ricorrere al metodo di sintesi predefinito nel caso in cui sia stato specificato un metodo di sintesi
methodnon predefinito, ma questo non sia in grado di sintetizzare l'operazione oppure il circuito sintetizzato non sia conforme al target.
Aumenti
TranspilerError – se method è stato specificato ma non è presente nell'elenco dei plugin installati. È possibile visualizzare l'elenco dei plugin installati tramite unitary_synthesis_plugin_names()
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 dell'attività di ottimizzazione.
Risultati
Qiskit IR ottimizzato e stato del flusso di lavoro.
Tipo di restituzione
name
run
run(dag)
Eseguire il passaggio UnitarySynthesis su dag.
Parametri
dag (DAGCircuit) – ingresso dag.
Risultati
Output dag con UnitaryGates sintetizzato su base target.
Tipo di restituzione
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