qiskit.transpiler.generate_preset_clifford_t_pass_manager
qiskit.transpiler.generate_preset_clifford_t_pass_manager(optimization_level=2, target=None, basis_gates=None, coupling_map=None, initial_layout=None, approximation_degree=1.0, seed_transpiler=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, dt=None, qubits_initially_zero=True, rz_synthesis_config=None)
StagedPassManagerGenera un preset Clifford+T.
Questa funzione offre un modo pratico per creare un gestore di passaggi predefinito per la compilazione Clifford+T. Si consiglia di utilizzare questa funzione al posto di transpile() o generate_preset_pass_manager() con una base Clifford+T, poiché mette a disposizione argomenti specificamente pensati per le compilazioni Clifford+T.
I vincoli di destinazione per la costruzione del gestore di passaggi possono essere specificati tramite un’istanza Target oppure tramite vincoli generici (basis_gates, coupling_map, o dt).
Se i gate di base non vengono specificati (né tramite target né tramite basis_gates), i gate di base assumono per impostazione predefinita tutti i gate Clifford+T presenti in Qiskit. Si noti, tuttavia, che se vengono specificati i gate di base ma questi non rappresentano una base Clifford+T, verrà generato un errore.
Esempi
Generare e utilizzare un semplice gestore di passaggi Clifford+T:
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler import generate_preset_clifford_t_pass_manager
qc = QuantumCircuit(1)
qc.rz(2.3579, 0)
pm = generate_preset_clifford_t_pass_manager()
qct = pm.run(qc)È possibile configurare diverse opzioni; per ulteriori dettagli, consultare la documentazione relativa agli argomenti:
rz_synthesis_config = {
"rz_synthesis_error": 1e-4,
"rz_cache_error": 1e-5,
}
basis_gates = ["cx", "s", "sdg", "h", "t", "tdg"]
pm = generate_preset_clifford_t_pass_manager(
rz_synthesis_config=rz_synthesis_config,
basis_gates=basis_gates,
optimization_level=3,
)Parametri
-
optimization_level (int) – Il livello di ottimizzazione per generare un
StagedPassManagerfor. 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 potenzialmente più lunghi. -
target (Target | None) – Il
Targetche rappresenta una destinazione di compilazione. Se non vengono specificati, da questo argomento verranno dedotti i seguenti attributi:coupling_mapebasis_gates. -
basis_gates (list[str] | None) – Elenco dei nomi delle porte di base su cui eseguire l'unrolling (ad es.:
['cx', 's', 'sx', 't', 'tdg']). Se siatargetchebasis_gatessonoNone,basis_gatesverrà impostato su tutte le porte di Clifford standard insieme a't'e'tdg'. -
coupling_map (CouplingMap |list | None) –
Il grafo orientato rappresentava una mappa di accoppiamento. Sono supportati diversi formati:
CouplingMapistanza- L'elenco deve essere fornito sotto forma di matrice di adiacenza, in cui ogni voce specifica tutte le interazioni dirette tra due qubit supportate dal backend, ad esempio:
[[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
-
dt (float | None) – Tempo di campionamento desiderato (risoluzione) in secondi. Se
None(impostazione predefinita) e viene specificato un obiettivo,target.dtviene utilizzato. -
initial_layout (Layout |list[int]) – Posizione iniziale dei qubit virtuali sui qubit fisici.
-
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 unitario da utilizzare. Per impostazione predefinita
'default'viene utilizzato. È possibile visualizzare 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 unitario 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. -
qubits_initially_zero (bool) – Indica se il circuito di ingresso è inizializzato a zero.
-
rz_synthesis_config (dict | None) – Una classe di configurazione opzionale da utilizzare per
SynthesizeRZRotationspass. Specifica come sintetizzare le rotazioni RZ nel circuito.
Risultati
Il gestore dei passaggi predefinito per le opzioni specificate.
Tipo di restituzione
Aumenti
- TranspilerError – se viene specificata una base diversa da Clifford+T.
- ValueError – se viene passato un valore non valido per
optimization_level.