Skip to main content
IBM Quantum Platform

UnitarySynthesis

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

GitHub

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 il target , verrà utilizzato il valore di target e 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/None e natural_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 a True genererà 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 è True o None. 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']. Se None e pulse_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 Target per il dispositivo di destinazione per cui il passaggio viene compilato. Se specificato, sostituisce i valori impostati per basis_gates e coupling_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 method non 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)

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 UnitarySynthesis su dag.

Parametri

dag (DAGCircuit) – ingresso dag.

Risultati

Output dag con UnitaryGates sintetizzato su base target.

Tipo di restituzione

DAGCircuito

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.