Skip to main content
IBM Quantum Platform

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)

GitHub

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 baseDestinazionecancelli base
accoppiamento_mappaDestinazioneaccoppiamento_mappa
DTDestinazioneDT
Nota

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 StagedPassManager per. 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_gates coupling_map, e target. Se, oltre a backend quello, vengono specificati altri argomenti, questi avranno la precedenza sul valore contenuto nel backend.

  • target (Target | None) – Il Target che rappresenta una destinazione di compilazione del backend. Se non vengono specificati, da questo argomento verranno dedotti i seguenti attributi: coupling_map e basis_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:

    1. CouplingMap istanza
    2. 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 Pass da utilizzare per scegliere la disposizione iniziale dei qubit. TrivialLayoutLe scelte valide sono 'trivial', 'dense', e 'sabre', che rappresentano rispettivamente, DenseLayout e SabreLayout . StagedPassManagerQuesto può anche essere il nome del plugin esterno da utilizzare per la layout fase di output. È possibile visualizzare l'elenco dei plugin installati utilizzando list_stage_plugins() con "layout" come argomento stage_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 la routing fase di output. È possibile visualizzare l'elenco dei plugin installati utilizzando list_stage_plugins() con "routing" come argomento stage_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, e UnitarySynthesis . StagedPassManagerQuesto può anche essere il nome del plugin esterno da utilizzare per la translation fase di output. È possibile visualizzare l'elenco dei plugin installati utilizzando list_stage_plugins() con "translation" come argomento stage_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 la scheduling fase di output. È possibile visualizzare l'elenco dei plugin installati utilizzando list_stage_plugins() con "scheduling" come argomento stage_name .

  • approximation_degree (float | None) – Manopola euristica utilizzata per l'approssimazione del circuito, dove 1.0 indica l'assenza di approssimazione (entro i limiti della tolleranza numerica) e 0.0 indica l'approssimazione massima. Se target è disponibile, un valore pari a None indica 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_SEED oppure 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 con unitary_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 HLSConfig di configurazione opzionale che verrà passata direttamente alla HighLevelSynthesis fase 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 la init fase di output. Per impostazione predefinita, non viene utilizzato alcun plugin esterno. È possibile visualizzare l'elenco dei plugin installati utilizzando list_stage_plugins() con "init" come argomento del nome dello stage.

  • StagedPassManageroptimization_method (str | None) – Il nome del plugin da utilizzare per la optimization fase di output. Per impostazione predefinita, non viene utilizzato alcun plugin esterno. È possibile visualizzare l'elenco dei plugin installati utilizzando list_stage_plugins() con "optimization" come argomento stage_name .

  • dt (float | None) – Tempo di campionamento (risoluzione) del backend in secondi. Se None (impostazione predefinita) e viene specificato un backend, backend.dt viene 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

StagedPassManager

Aumenti

ValueError - se viene passato un valore non valido per optimization_level .

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.