qiskit.transpiler.generate_preset_pass_manager
qiskit.transpiler.generate_preset_pass_manager(optimization_level=2, backend=None, target=None, basis_gates=None, coupling_map=None, initial_layout=None, layout_method=None, routing_method=None, translation_method=None, scheduling_method=None, approximation_degree=1.0, seed_transpiler=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, init_method=None, optimization_method=None, dt=None, qubits_initially_zero=True, *, _skip_target=False)
Generare una preimpostazione PassManager
Questa funzione serve a generare rapidamente un gestore di passaggi predefinito. I gestori di pass predefiniti sono quelli utilizzati di default dalla transpile() funzione. Questa funzione offre un metodo pratico e semplice per creare un oggetto autonomo PassManager che rispecchia ciò che la transpile() funzione costruisce e utilizza internamente.
I vincoli di destinazione per la costruzione del gestore dei passaggi possono essere specificati attraverso un'istanza di Target istanza, un'istanza BackendV2 o tramite vincoli liberi (basis_gates, coupling_map, o dt). L'ordine di priorità per i vincoli di destinazione funziona come segue: se viene fornito un input target , esso avrà la priorità su qualsiasi input backend o sui vincoli non vincolanti. Se un backend è fornito insieme a un qualsiasi vincolo non vincolante dell'elenco precedente, il vincolo non vincolante avrà la priorità sul vincolo corrispondente del backend. Questo comportamento è riassunto nella tabella seguente. La prima colonna della tabella riassume i potenziali vincoli forniti dall'utente e ogni cella indica se la priorità è assegnata a quello specifico input di vincolo o a un altro input (target/backend( V1 )/backend( V2 )).
Fornito dall'utente | Destinazione | backend( V2 ) |
|---|---|---|
| cancelli base | Destinazione | cancelli base |
| accoppiamento_mappa | Destinazione | accoppiamento_mappa |
| DT | Destinazione | DT |
Quando la base di riferimento è costituita da porte Clifford+T, questa funzione costruisce una pipeline specializzata di transpiler Clifford+T; per una documentazione più dettagliata, si veda generate_preset_clifford_t_pass_manager() [...]. In questo flusso vengono ignorati gli argomenti che si applicano esclusivamente alla transpilazione in insiemi di base continui. Ad esempio, il "unitary_synthesis_method" non viene preso in considerazione quando si sintetizzano operatori unitari a singolo qubit in una sequenza Clifford+T.
Parametri
-
optimization_level (int) –
Il livello di ottimizzazione per cui generare un
StagedPassManagerper. Per impostazione predefinita, il livello di ottimizzazione 2 viene utilizzato se non viene specificato. Può essere 0, 1, 2 o 3. Livelli più alti generano circuiti potenzialmente più ottimizzati, a scapito di tempi di trasposizione più lunghi:- 0: nessuna ottimizzazione
- 1: ottimizzazione della luce
- 2: ottimizzazione pesante
- 3: ottimizzazione ancora più pesante
-
backend (Backend | None) – Un oggetto backend opzionale che può essere utilizzato come fonte dei valori predefiniti per,
basis_gatescoupling_map, etarget. Se, oltre abackendquello, vengono specificati altri argomenti, questi avranno la precedenza sul valore contenuto nel backend. -
target (Target | None) – Il
Targetche rappresenta una destinazione di compilazione del backend. Se non vengono specificati, da questo argomento verranno dedotti i seguenti attributi:coupling_mapebasis_gates. -
basis_gates (list[str] | None) – Elenco dei nomi dei gate di base su cui eseguire l'unrolling (ad es.:
['u1', 'u2', 'u3', 'cx']). -
coupling_map (CouplingMap |list | None) –
Il grafo diretto rappresenta una mappa di accoppiamento. Sono supportati diversi formati:
CouplingMapistanza- Elenco, deve essere dato come matrice di adiacenza, dove ogni voce specifica tutte le interazioni dirette a due qubit supportate dal backend, ad es:
[[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
-
initial_layout (Layout |list[int]) – Posizione iniziale dei qubit virtuali sui qubit fisici.
-
layout_method (str | None) – Il metodo
Passda utilizzare per scegliere la disposizione iniziale dei qubit.TrivialLayoutLe scelte valide sono'trivial','dense', e'sabre', che rappresentano rispettivamente,DenseLayouteSabreLayout.StagedPassManagerQuesto può anche essere il nome del plugin esterno da utilizzare per lalayoutfase di output. È possibile visualizzare l'elenco dei plugin installati utilizzandolist_stage_plugins()con"layout"come argomentostage_name. -
routing_method (str | None) – Il pass da utilizzare per l'instradamento dei qubit sull'architettura.
BasicSwapLe opzioni valide sono'basic','lookahead','sabre', e'none', che rappresentano rispettivamente,LookaheadSwap,SabreSwap, e generano un errore se è richiesto il routing.StagedPassManagerQuesto può anche essere il nome del plugin esterno da utilizzare per laroutingfase di output. È possibile visualizzare l'elenco dei plugin installati utilizzandolist_stage_plugins()con"routing"come argomentostage_name. -
translation_method (str | None) – Il metodo da utilizzare per convertire i gate in gate di base.
BasisTranslator'translator'Scelte valide,'synthesis'che rappresentano, rispettivamente, eUnitarySynthesis.StagedPassManagerQuesto può anche essere il nome del plugin esterno da utilizzare per latranslationfase di output. È possibile visualizzare l'elenco dei plugin installati utilizzandolist_stage_plugins()con"translation"come argomentostage_name. -
scheduling_method (str | None) – Il pass da utilizzare per programmare le istruzioni. Le opzioni valide sono
'alap'e'asap'.StagedPassManagerQuesto può anche essere il nome del plugin esterno da utilizzare per laschedulingfase di output. È possibile visualizzare l'elenco dei plugin installati utilizzandolist_stage_plugins()con"scheduling"come argomentostage_name. -
approximation_degree (float | None) – Manopola euristica utilizzata per l'approssimazione del circuito, dove
1.0indica l'assenza di approssimazione (entro i limiti della tolleranza numerica) e0.0indica l'approssimazione massima. Setargetè disponibile, un valore pari aNoneindica che è consentita un'approssimazione fino al tasso di errore riportato per un'operazione nell'obiettivo. -
seed_transpiler (int | None) – Imposta il seme casuale per le parti stocastiche del transpiler. Se non è specificato qui, può essere specificato anche tramite una variabile d'ambiente:
QISKIT_TRANSPILER_SEEDoppure in un file di configurazione utente. L'ordine di priorità è il seguente: prima questo argomento, poi la variabile d'ambiente e infine l'opzione di configurazione dell'utente. Pertanto, l'impostazione di questo parametro avrà la precedenza sugli altri metodi di impostazione del seme. -
unitary_synthesis_method (str) – Il nome del metodo di sintesi unitaria da utilizzare. Per impostazione predefinita viene utilizzato
'default'. Si può vedere l'elenco dei plugin installati conunitary_synthesis_plugin_names(). -
unitary_synthesis_plugin_config (dict | None) – Un dizionario di configurazione opzionale che verrà passato direttamente al plugin di sintesi unitaria. Per impostazione predefinita, questa impostazione non avrà alcun effetto, poiché il metodo di sintesi unitario predefinito non ammette configurazioni personalizzate. Ciò dovrebbe essere necessario solo quando viene specificato un plugin di sintesi unitaria con l'argomento
unitary_synthesis_method. Poiché questa impostazione varia a seconda del plugin di sintesi unitario, consultare la documentazione del plugin per sapere come utilizzare questa opzione. -
hls_config (HLSConfig | None) – Una classe
HLSConfigdi configurazione opzionale che verrà passata direttamente allaHighLevelSynthesisfase di trasformazione. Questa classe di configurazione consente di specificare, per vari oggetti di alto livello, gli elenchi degli algoritmi di sintesi e dei relativi parametri. -
StagedPassManagerinit_method (str | None) – Il nome del plugin da utilizzare per lainitfase di output. Per impostazione predefinita, non viene utilizzato alcun plugin esterno. È possibile visualizzare l'elenco dei plugin installati utilizzandolist_stage_plugins()con"init"come argomento del nome dello stage. -
StagedPassManageroptimization_method (str | None) – Il nome del plugin da utilizzare per laoptimizationfase di output. Per impostazione predefinita, non viene utilizzato alcun plugin esterno. È possibile visualizzare l'elenco dei plugin installati utilizzandolist_stage_plugins()con"optimization"come argomentostage_name. -
dt (float | None) – Tempo di campionamento (risoluzione) del backend in secondi. Se
None(impostazione predefinita) e viene specificato un backend,backend.dtviene utilizzato. -
qubits_initially_zero (bool) – Indica se il circuito di ingresso è inizializzato a zero.
Risultati
Il gestore dei passaggi preimpostati per le opzioni date
Tipo di restituzione
Aumenti
ValueError - se viene passato un valore non valido per optimization_level .