Skip to main content
IBM Quantum Platform

Gestori di password preimpostati

qiskit.transpiler.preset_passmanagers

Questo modulo contiene funzioni per la generazione dei gestori di passaggi predefiniti per il transpiler. I gestori di passaggi predefiniti sono istanze di StagedPassManager utilizzate per eseguire le trasformazioni dei circuiti nell’ambito del compilatore di Qiskit all’interno della transpile() funzione ai diversi livelli di ottimizzazione, ma possono anche essere utilizzati in modo autonomo. La funzionalità qui è suddivisa in due parti. Il primo comprende le funzioni utilizzate per generare l'intero gestore di passaggi, che viene utilizzato da transpile() ( Generazione di gestori di passaggi predefiniti a basso livello ), mentre il secondo comprende le funzioni utilizzate per costruire (in tutto o in parte) le fasi che compongono i gestori di passaggi predefiniti ( Funzioni di generazione delle fasi ).


Generazione di gestori di passaggi preimpostati di basso livello

Insiemi di base continui

level_0_pass_manager

qiskit.transpiler.preset_passmanagers.level_0_pass_manager(pass_manager_config)

GitHub

Gestore dei passaggi di livello 0: nessuna ottimizzazione esplicita oltre alla mappatura sul backend.

Questo gestore di passaggi applica il layout iniziale dato dall'utente. Se non viene fornita alcuna indicazione, viene utilizzato un layout banale che consiste nel mappare l'i-esimo qubit virtuale sull'i-esimo qubit fisico. Ogni qubit fisico inutilizzato viene allocato come spazio ancilla.

Il gestore del passaggio srotola quindi il circuito nella base desiderata e lo trasforma per adattarlo alla mappa di accoppiamento.

Parametri

pass_manager_config (PassManagerConfig) – configurazione del gestore dei pass.

Risultati

un gestore di passaggi di livello 0.

Aumenti

TranspilerError - se la configurazione del passmanager non è valida.

Tipo di restituzione

StagedPassManager

level_1_pass_manager

qiskit.transpiler.preset_passmanagers.level_1_pass_manager(pass_manager_config)

GitHub

Gestore dei passaggi di livello 1: ottimizzazione della luce mediante il semplice collasso dei gate adiacenti.

Questo gestore di passaggi applica il layout iniziale dato dall'utente. Se non viene fornita alcuna indicazione e un layout banale (i-esimo virtuale -> i-esimo fisico) rende il circuito adatto alla mappa di accoppiamento, viene utilizzato. Altrimenti, il circuito viene mappato sul sottografo di accoppiamento più densamente connesso e vengono inseriti degli swap per la mappatura. Ogni qubit fisico inutilizzato viene allocato come spazio ancilla. Il gestore del passaggio srotola quindi il circuito nella base desiderata e lo trasforma per adattarlo alla mappa di accoppiamento. Infine, vengono eseguite ottimizzazioni sotto forma di collasso dei gate adiacenti e rimozione dei reset ridondanti.

Parametri

pass_manager_config (PassManagerConfig) – configurazione del gestore dei pass.

Risultati

un pass manager di livello 1.

Aumenti

TranspilerError - se la configurazione del passmanager non è valida.

Tipo di restituzione

StagedPassManager

level_2_pass_manager

qiskit.transpiler.preset_passmanagers.level_2_pass_manager(pass_manager_config)

GitHub

Gestore del passaggio di livello 2: ottimizzazione media mediante la selezione del layout iniziale e la cancellazione dei gate utilizzando le regole di commutatività.

Questo gestore di passaggi applica il layout iniziale dato dall'utente. Se non viene fornito alcun dato, si cerca un layout perfetto (cioè che soddisfi tutte le interazioni a 2 qubit). Se non si trova una disposizione simile, i qubit vengono disposti sul sottoinsieme più densamente connesso che presenta anche le migliori fedeltà di gate.

Il gestore del passaggio trasforma quindi il circuito per adattarlo ai vincoli di accoppiamento. Viene quindi srotolato alla base e le direzioni cx capovolte vengono fissate. Infine, vengono eseguite ottimizzazioni sotto forma di cancellazione di cancelli commutativi e rimozione di reset ridondanti.

Parametri

pass_manager_config (PassManagerConfig) – configurazione del gestore dei pass.

Risultati

un manager di livello 2.

Aumenti

TranspilerError - se la configurazione del passmanager non è valida.

Tipo di restituzione

StagedPassManager

level_3_pass_manager

qiskit.transpiler.preset_passmanagers.level_3_pass_manager(pass_manager_config)

GitHub

Gestore del passaggio di livello 3: ottimizzazione pesante mediante mappatura dei qubit adattata al rumore e cancellazione dei gate utilizzando regole di commutatività e sintesi unitaria.

Questo gestore di passaggi applica il layout iniziale dato dall'utente. Se non viene fornito alcun dato, si cerca un layout perfetto (cioè che soddisfi tutte le interazioni a 2 qubit). Se non si trova un layout simile e sono disponibili informazioni sulla calibrazione del dispositivo, il circuito viene mappato sui qubit con le migliori letture e sulle porte CX con la massima fedeltà.

Il gestore del passaggio trasforma quindi il circuito per adattarlo ai vincoli di accoppiamento. Viene quindi srotolato alla base e le direzioni cx capovolte vengono fissate. Infine, vengono eseguite ottimizzazioni sotto forma di cancellazione di porte commutative, risintesi di blocchi unitari a due qubit, rimozione di reset ridondanti e miglioramenti finali del layout.

Parametri

pass_manager_config (PassManagerConfig) – configurazione del gestore dei pass.

Risultati

un manager di livello 3.

Aumenti

TranspilerError - se la configurazione del passmanager non è valida.

Tipo di restituzione

StagedPassManager

Insiemi di base Clifford+T

clifford_t_pass_manager

qiskit.transpiler.preset_passmanagers.clifford_t_pass_manager(pass_manager_config, optimization_level)

GitHub

Genera un gestore di passaggi per la trasposizione nella base Clifford+T.

Questa funzione viene richiamata da generate_preset_pass_manager() quando la base di riferimento è costituita da porte Clifford+T. Genera una pipeline di transpilazione specializzata composta dalle seguenti fasi:

  • Inizializzazione: scomporre i gate più grandi in gate a 1 e 2 qubit ed eseguire ottimizzazioni logiche.
  • Layout: applicare la strategia di layout predefinita utilizzata per gli insiemi di basi continui.
  • Instradamento: applicare la strategia di instradamento predefinita utilizzata per gli insiemi di base continui.
  • Traduzione RZ: Tradurre il circuito nella base Clifford+RZ.
  • Ottimizzazione RZ: ottimizzare il circuito nella base Clifford+RZ.
  • Traduzione T: Tradurre il circuito nella base Clifford+T.
  • Ottimizzazione T: ottimizza il circuito nella base Clifford+T.
  • Pianificazione: applicare la strategia di pianificazione predefinita utilizzata per gli insiemi di base continui.

Per ottenere risultati ottimali, si consiglia di includere sia l'operatore TT che l'operatore TT^\dagger nella base di Clifford+T specificata, nonché il maggior numero possibile di porte di Clifford. Ad esempio:

basis_gates = get_clifford_gate_names() + ["t", "tdg"]
Nota

Queste fasi sono ancora in fase sperimentale e soggette a modifiche. In particolare, non sono ancora disponibili come plugin per la fase di transpiler (a differenza delle fasi relative agli insiemi di basi continui).

Parametri

  • pass_manager_config (PassManagerCliffordTConfig) – Configurazione del gestore dei pass.
  • optimization_level (int) – Il livello di ottimizzazione. Se non viene specificato, viene utilizzato per impostazione predefinita il livello di ottimizzazione 2. Può essere 0, 1, 2 o 3. Livelli più elevati generano circuiti potenzialmente più ottimizzati, a scapito di tempi di transpilazione più lunghi.

Risultati

Gestione dei passaggi a tappe.

Aumenti

TranspilerError - se la configurazione del passmanager non è valida.

Tipo di restituzione

StagedPassManager


Funzioni del generatore di fase

generate_control_flow_options_check

qiskit.transpiler.preset_passmanagers.generate_control_flow_options_check(layout_method=None, routing_method=None, translation_method=None, optimization_method=None, scheduling_method=None, basis_gates=(), target=None)

GitHub

Generare un gestore di passaggi che, quando viene eseguito su un DAG che contiene un flusso di controllo, fallisce con un messaggio di errore che spiega le opzioni non valide e cosa si potrebbe usare al loro posto.

Risultati

un gestore di passaggi che popola le proprietà di contains_x per ciascuna delle operazioni di flusso di controllo e solleva un errore se una delle opzioni date non supporta il flusso di controllo, ma viene fornito un circuito con flusso di controllo.

Tipo di restituzione

PassManager

generate_error_on_control_flow

qiskit.transpiler.preset_passmanagers.generate_error_on_control_flow(message)

GitHub

Ottiene un gestore di passaggi che solleva sempre un errore se il flusso di controllo è presente in un determinato circuito.

generate_unroll_3q

qiskit.transpiler.preset_passmanagers.generate_unroll_3q(target, basis_gates=None, approximation_degree=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True, optimization_metric=OptimizationMetric.COUNT_2Q)

GitHub

Genera un "unroll" >3q PassManager

Parametri

  • target (Target | None) – Target l'oggetto che rappresenta il backend
  • basis_gates (list[str] | None) – Un elenco dei nomi delle porte "str" che rappresentano le porte di base sul target di backend.
  • 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.
  • unitary_synthesis_method (str) – Il metodo di sintesi unitario da utilizzare. È possibile visualizzare l'elenco dei plugin installati con unitary_synthesis_plugin_names().
  • unitary_synthesis_plugin_config (dict | None) – Per quanto riguarda la configurazione opzionale del plugin "dizionario", si tratta di una configurazione specifica del plugin; per informazioni sul suo utilizzo, consultare la documentazione del plugin in questione.
  • hls_config (HLSConfig | None) – Una classe di configurazione opzionale da utilizzare per HighLevelSynthesis pass. Specifica come sintetizzare vari oggetti di alto livello.
  • qubits_initially_zero (bool) – Indica se il circuito di ingresso è inizializzato a zero.
  • optimization_metric (OptimizationMetric) – OptimizationMetric l'oggetto che definisce la metrica utilizzata per ottimizzare lo srotolamento.

Risultati

Il gestore di srotolamento 3q o più passaggi

Tipo di restituzione

PassManager

generate_embed_passmanager

qiskit.transpiler.preset_passmanagers.generate_embed_passmanager(coupling_map)

GitHub

Genera un layout incorporato PassManager

Questo serve a generare un PassManager oggetto che può essere utilizzato per espandere e applicare un layout iniziale a un circuito

Parametri

coupling_map (Union[CouplingMap, Target]) – La mappa di accoppiamento del backend in cui incorporare il circuito.

Risultati

Il passmanager di incorporamento che assume la proprietà layout

è stato impostato nelle fasi precedenti

Tipo di restituzione

PassManager

generate_routing_passmanager

qiskit.transpiler.preset_passmanagers.generate_routing_passmanager(routing_pass, target, coupling_map=None, vf2_call_limit=None, seed_transpiler=-1, check_trivial=False, use_barrier_before_measurement=True, vf2_max_trials=None)

GitHub

Genera un percorso PassManager

Parametri

  • routing_pass (TransformationPass) – Il passaggio che effettuerà l'instradamento
  • target (Target) – Target l'oggetto che rappresenta il backend
  • coupling_map (CouplingMap) – La mappa di accoppiamento del backend per l'instradamento verso
  • vf2_call_limit (int) – Il limite di chiamata interno per il passaggio di layout post vf2. Se questo è None o 0 , il layout del post vf2 non verrà eseguito.
  • seed_transpiler (int) – Imposta il seme casuale per le parti stocastiche del transpiler. Attualmente questa opzione viene utilizzata solo per VF2PostLayout e si raccomanda vivamente di utilizzare il valore predefinito di -1 (ovvero nessuna randomizzazione). Se viene specificato un valore di None , questo verrà utilizzato come seme derivato dall'entropia del sistema.
  • check_trivial (bool) – Se impostato su "true", l'esecuzione del VF2PostLayout passaggio dopo il routing dipenderà dal fatto che sia stato provato un layout banale e che questo sia risultato non perfetto. Ciò è necessario solo se il gestore di passaggi creato viene eseguito TrivialLayout come primo tentativo di disposizione e lo utilizza se la disposizione è perfetta (come nel caso del gestore di passaggi preimpostato di livello 1).
  • use_barrier_before_measurement (bool) – Se il valore è true (impostazione predefinita), il BarrierBeforeFinalMeasurements passaggio del transpiler verrà eseguito prima del passaggio specificato nell'argomento routing_pass .
  • vf2_max_trials (int) – Il numero massimo di prove da eseguire VF2 quando si valuta il passaggio di post layout vf2. Se questo è None o 0 , il layout del post vf2 non verrà eseguito.

Risultati

Il gestore del passaggio di routing

Tipo di restituzione

PassManager

generate_pre_op_passmanager

qiskit.transpiler.preset_passmanagers.generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_zero=False)

GitHub

Generare un ciclo di pre-ottimizzazione PassManager

Questo gestore di passaggi controlla che la direzionalità della mappa di accoppiamento sia rispettata.

Deprecato dalla versione 2.0

La funzione qiskit.transpiler.preset_passmanagers.common.generate_pre_op_passmanager() è deprecata a partire da Qiskit 2.0. Verrà rimosso in Qiskit 3.0. I plugin di traduzione sono ora tenuti a rispettare la direzionalità di ISA, quindi in genere non è necessaria alcuna sostituzione.

Parametri

  • target (Target) – Target l'oggetto che rappresenta il backend
  • coupling_map (CouplingMap) – La mappa di accoppiamento da utilizzare
  • remove_reset_in_zero (bool) – Se True include la rimozione dell'azzeramento nel passaggio zero nel file generato PassManager

Risultati

Il gestore del pass

Tipo di restituzione

PassManager

generate_translation_passmanager

qiskit.transpiler.preset_passmanagers.generate_translation_passmanager(target, basis_gates=None, method='translator', approximation_degree=None, coupling_map=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True)

GitHub

Genera una traslazione di base PassManager

Parametri

  • target (Target | None) – Target l'oggetto che rappresenta il backend
  • basis_gates (list[str] | None) – Un elenco dei nomi delle porte "str" che rappresentano le porte di base sul target di backend
  • method (str) – Il metodo di traduzione di base da utilizzare
  • 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.
  • coupling_map (CouplingMap | None) – la mappa di accoppiamento del backend 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.
  • unitary_synthesis_method (str) – Il metodo di sintesi unitario da utilizzare. È possibile visualizzare l'elenco dei plugin installati con unitary_synthesis_plugin_names().
  • unitary_synthesis_plugin_config (dict | None) – Per quanto riguarda la configurazione opzionale del plugin "dizionario", si tratta di una configurazione specifica del plugin; per informazioni sul suo utilizzo, consultare la documentazione del plugin in questione.
  • hls_config (HLSConfig | None) – Una classe di configurazione opzionale da utilizzare per HighLevelSynthesis pass. Specifica come sintetizzare vari oggetti di alto livello.
  • qubits_initially_zero (bool) – Indica se il circuito di ingresso è inizializzato a zero.

Risultati

Il gestore dei passaggi di traduzione di base

Tipo di restituzione

PassManager

Aumenti

TranspilerError - Se il kwarg di method non è un valore valido

generate_scheduling

qiskit.transpiler.preset_passmanagers.generate_scheduling(instruction_durations, scheduling_method, timing_constraints, target=None)

GitHub

Generare una pianificazione post-ottimizzazione PassManager

Parametri

  • instruction_durations (dict) – Il dizionario delle durate delle istruzioni
  • scheduling_method (str) – Il metodo di programmazione da utilizzare può essere 'asap'/'as_soon_as_possible' oppure 'alap'/'as_late_as_possible'
  • timing_constraints (TimingConstraints) – Limitazioni di allineamento temporale dell'hardware.
  • target (Target) – Target L'oggetto che rappresenta il backend

Risultati

Il gestore del pass di programmazione

Tipo di restituzione

PassManager

Aumenti

TranspilerError - Se il kwarg di scheduling_method non è un valore valido

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