VF2Layout
class qiskit.transpiler.passes.VF2Layout(*args, **kwargs)
Basi: AnalysisPass
Un passaggio per la scelta di un Layout di un circuito su un grafo di accoppiamento, come problema di isomorfismo del sottografo, risolto da VF2++.
Se si trova una soluzione, significa che esiste un "layout perfetto" e che non sono necessari ulteriori mappature o instradamenti. Se viene trovata una soluzione, il layout verrà impostato nel set di proprietà come property_set['layout']. Tuttavia, se non viene trovata alcuna soluzione, non viene impostato property_set['layout'] . Il motivo dell'arresto è impostato in property_set['VF2Layout_stop_reason'] in tutti i casi e sarà uno dei valori enumerati in VF2LayoutStopReason che ha i seguenti valori:
"solution found": Se è stato trovato un layout perfetto."nonexistent solution": Se non è stato trovato un layout perfetto.">2q gates in basis": Se VF2Layout non può lavorare con le basi
Per impostazione predefinita, questo passaggio costruisce una mappa di punteggio euristica basata sui tassi di errore nel sito target fornito (o properties se target non è fornito). Tuttavia, i passaggi di analisi possono essere eseguiti prima di questo passaggio e impostare vf2_avg_error_map nell'insieme di proprietà con un'istanza ErrorMap . Se un valore è NaN viene trattato come un bordo ideale Ad esempio, se una mappa degli errori viene creata come:
from qiskit.transpiler.passes.layout.vf2_utils import ErrorMap
error_map = ErrorMap(3)
error_map.add_error((0, 0), 0.0024)
error_map.add_error((0, 1), 0.01)
error_map.add_error((1, 1), 0.0032)che rappresenta la mappa degli errori per un obiettivo a 2 qubit, dove il tasso di errore avg 1q è 0.0024 sul qubit 0 e 0.0032 sul qubit 1. Quindi il tasso di errore avg 2q per i gate che operano su (0, 1) è 0.01 e (1, 0) non è supportato dall'obiettivo. Verrà utilizzato per l'attribuzione del punteggio se è impostato come chiave vf2_avg_error_map nell'insieme di proprietà al momento dell'esecuzione di VF2Layout viene eseguito.
Inizializzare un'istanza di VF2Layout pass
Parametri
- coupling_map (CouplingMap) – Grafo diretto che rappresenta una mappa di accoppiamento.
- strict_direction (bool) – Se Vero, considera la direzione della mappa di accoppiamento. Il valore predefinito è False.
- seed (int | None) – mescolare l'etichettatura dei qubit fisici agli indici dei nodi nel grafico di accoppiamento, utilizzando un dato seme dell' pRNG.
Nonesemi utilizzando l'entropia del sistema operativo (e quindi non deterministico). L'utilizzo di-1disabilita la mescolatura. - call_limit (None | int |tuple[int | None,int | None]) – Il numero massimo di volte in cui la ricerca dell'isomorfismo interno VF2 tenterà di estendere la mappatura. Se
None, allora nessun limite. Se si tratta di una coppia di 2 elementi, il limite inizia dal primo elemento e passa al secondo dopo che è stata trovata la prima corrispondenza, senza azzerare il numero di passaggi effettuati. Questo può essere utilizzato per consentire una ricerca prolungata di qualsiasi mappatura, ma comunque terminare rapidamente con un budget di estensione ridotto se ne viene trovata una. - time_limit (float) – Il tempo massimo totale in secondi per l'esecuzione
VF2Layout. Questo non è del tutto rigido; l'esecuzione terminerà al primo isomorfismo trovato (se presente) _dopo_ che il limite di tempo è stato superato. L'impostazione di questa opzione interrompe il determinismo del passaggio. - max_trials (int) – Se impostato, l'algoritmo termina dopo che sono stati visualizzati questo numero di layout _completi_. Poiché il punteggio viene assegnato in tempo reale, la stragrande maggioranza dei layout candidati viene eliminata dalla ricerca prima ancora di essere completata, quindi questa opzione ha poco significato. Per impostare un limite basso sul tempo impiegato per migliorare un limite iniziale, impostare un valore basso per il secondo elemento nella forma
call_limita 2 tuple. - target (Target) – Una destinazione che rappresenta il dispositivo di backend su cui eseguire
VF2Layout. Se specificato, sostituisce un valore impostato percoupling_mapse il fileTargetcontiene vincoli di connettività. Se il valore ditargetmodella un backend ideale senza vincoli, verrà utilizzato il valore dicoupling_map.
Aumenti
TypeError - In fase di esecuzione, se non vengono forniti coupling_map o 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 (IR) – Qiskit IR da ottimizzare.
- state (PassManagerState) – Stato associato all'esecuzione del flusso di lavoro da parte del gestore del passaggio stesso.
- 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
Qiskit IR ottimizzato e stato del flusso di lavoro.
Tipo di restituzione
tupla [ IR_OUT, PassManagerState ]
name
run
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