Skip to main content
IBM Quantum Platform

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)

GitHub

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 StagedPassManager for. 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 Target che rappresenta una destinazione di compilazione. 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 delle porte di base su cui eseguire l'unrolling (ad es.: ['cx', 's', 'sx', 't', 'tdg']). Se sia target che basis_gates sono None, basis_gates verrà 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:

    1. CouplingMap istanza
    2. 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.dt viene 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.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 unitario da utilizzare. Per impostazione predefinita 'default' viene utilizzato. È possibile visualizzare 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 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 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.

  • 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 SynthesizeRZRotations pass. Specifica come sintetizzare le rotazioni RZ nel circuito.

Risultati

Il gestore dei passaggi predefinito per le opzioni specificate.

Tipo di restituzione

StagedPassManager

Aumenti

  • TranspilerError – se viene specificata una base diversa da Clifford+T.
  • 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.