RemoveIdentityEquivalent
class qiskit.transpiler.passes.RemoveIdentityEquivalent(*args, **kwargs)
Basi: TransformationPass
Rimuovere i cancelli con effetti trascurabili.
Rimuove le porte il cui effetto è vicino a un'operazione di identità fino a una fase globale e fino alla tolleranza specificata. Le porte parametrizzate non sono considerate da questo passaggio.
Per una fedeltà di cutoff , questo passaggio rimuove i gate la cui fedeltà media rispetto all'identità è inferiore a . Concretamente, un gate viene rimosso se dove
dove è la dimensione del gate per qubit.
Questa funzione è multithread e, per impostazione predefinita, avvia un pool di thread con un numero di thread pari a quello delle CPU. È possibile regolare il numero di thread tramite la variabile RAYON_NUM_THREADS d'ambiente. Ad esempio, impostando RAYON_NUM_THREADS=4 si limiterebbe il pool di thread a 4 thread.
Inizializza il passaggio del transpiler.
Parametri
- grado_di_approssimazione - Il grado da approssimare per la verifica dell'equivalenza. Può essere un valore in virgola mobile compreso tra 0 e 1, oppure
None. Se il valore è 1, l'approssimazione non è superiore alla precisione in virgola mobile. Per un valore < 1 questo viene utilizzato come fattore di scala per la fedeltà di taglio. Se il valore èNonesi approssima alla fedeltà del gate specificata intarget. Nel caso in cui non sia impostatotarget, approssimiamo fino a16 * machine_epscome valore predefinito per tenere conto degli accumuli su sistemi a pochi qubit. - target - Se
approximation_degreeè impostato suNonee viene fornito un valore di tolleranza per questo campoTargetè fornito per questo campo, la tolleranza per determinare se un'operazione è equivalente all'identità sarà impostata sul tasso di errore riportato nel target. Seapproximation_degree(il valore predefinito) non ha alcun effetto, seapproximation_degree=Noneutilizza il tasso di errore specificato inTargetper il gate da valutare e un valore numerico diverso da 1 contargetimpostato viene utilizzato come fattore di scala del tasso di errore del target.
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 un passaggio sul circuito DAG. Questo viene implementato dallo sviluppatore del passaggio.
Parametri
dag (DAGCircuit) – il dag su cui viene eseguito il passaggio.
Aumenti
NotImplementedError - quando questo viene lasciato non implementato per un passaggio.
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