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)
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
level_1_pass_manager
qiskit.transpiler.preset_passmanagers.level_1_pass_manager(pass_manager_config)
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
level_2_pass_manager
qiskit.transpiler.preset_passmanagers.level_2_pass_manager(pass_manager_config)
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
level_3_pass_manager
qiskit.transpiler.preset_passmanagers.level_3_pass_manager(pass_manager_config)
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
Insiemi di base Clifford+T
clifford_t_pass_manager
qiskit.transpiler.preset_passmanagers.clifford_t_pass_manager(pass_manager_config, optimization_level)
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 che l'operatore 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"]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
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)
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
generate_error_on_control_flow
qiskit.transpiler.preset_passmanagers.generate_error_on_control_flow(message)
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)
Genera un "unroll" >3q PassManager
Parametri
- target (Target | None) –
Targetl'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.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. - 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
HighLevelSynthesispass. Specifica come sintetizzare vari oggetti di alto livello. - qubits_initially_zero (bool) – Indica se il circuito di ingresso è inizializzato a zero.
- optimization_metric (OptimizationMetric) –
OptimizationMetricl'oggetto che definisce la metrica utilizzata per ottimizzare lo srotolamento.
Risultati
Il gestore di srotolamento 3q o più passaggi
Tipo di restituzione
generate_embed_passmanager
qiskit.transpiler.preset_passmanagers.generate_embed_passmanager(coupling_map)
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
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)
Genera un percorso PassManager
Parametri
- routing_pass (TransformationPass) – Il passaggio che effettuerà l'instradamento
- target (Target) –
Targetl'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 è
Noneo0, 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
VF2PostLayoute si raccomanda vivamente di utilizzare il valore predefinito di-1(ovvero nessuna randomizzazione). Se viene specificato un valore diNone, questo verrà utilizzato come seme derivato dall'entropia del sistema. - check_trivial (bool) – Se impostato su "true", l'esecuzione del
VF2PostLayoutpassaggio 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 eseguitoTrivialLayoutcome 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
BarrierBeforeFinalMeasurementspassaggio del transpiler verrà eseguito prima del passaggio specificato nell'argomentorouting_pass. - vf2_max_trials (int) – Il numero massimo di prove da eseguire VF2 quando si valuta il passaggio di post layout vf2. Se questo è
Noneo0, il layout del post vf2 non verrà eseguito.
Risultati
Il gestore del passaggio di routing
Tipo di restituzione
generate_pre_op_passmanager
qiskit.transpiler.preset_passmanagers.generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_zero=False)
Generare un ciclo di pre-ottimizzazione PassManager
Questo gestore di passaggi controlla che la direzionalità della mappa di accoppiamento sia rispettata.
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) –
Targetl'oggetto che rappresenta il backend - coupling_map (CouplingMap) – La mappa di accoppiamento da utilizzare
- remove_reset_in_zero (bool) – Se
Trueinclude la rimozione dell'azzeramento nel passaggio zero nel file generato PassManager
Risultati
Il gestore del pass
Tipo di restituzione
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)
Genera una traslazione di base PassManager
Parametri
- target (Target | None) –
Targetl'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.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. - 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
HighLevelSynthesispass. 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
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)
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) –
TargetL'oggetto che rappresenta il backend
Risultati
Il gestore del pass di programmazione
Tipo di restituzione
Aumenti
TranspilerError - Se il kwarg di scheduling_method non è un valore valido