Skip to main content
IBM Quantum Platform

Inizializzazione dei qubit

  • Il codice di questa pagina è stato sviluppato in base ai seguenti requisiti. Si consiglia di utilizzare queste versioni o versioni più recenti.

    qiskit-ibm-runtime~=0.47.0
    

Quando un circuito viene eseguito su un'unità di elaborazione quantistica (QPU) IBM®, all'inizio del circuito viene tipicamente inserito un reset implicito per garantire che i qubit siano inizializzati a zero. Questo è controllato dal flag init_qubits , impostato come opzione di esecuzione primitiva.

Tuttavia, eventuali imperfezioni nel processo di ripristino possono causare errori nella preparazione dello stato. Per mitigare l'errore, la QPU inserisce anche un ritardo di ripetizione (o rep_delay) tra i circuiti. Ogni backend ha un valore predefinito diverso rep_delay, ma solitamente è impostato per bilanciare la fedeltà del ripristino con il tempo totale di esecuzione. Esegui backend.default_rep_delay per trovare l'impostazione predefinita rep_delay per una QPU specifica.

Poiché tutte le QPU IBM utilizzano l'esecuzione con frequenza di ripetizione dinamica, è possibile modificare il rep_delay per ogni lavoro. I circuiti inviati in un lavoro primitivo vengono raggruppati in batch per l'esecuzione sulla QPU. Questi circuiti vengono eseguiti iterando sui circuiti per ogni colpo richiesto; l'esecuzione avviene per colonne su una matrice di circuiti e colpi, come illustrato nella figura seguente.

La prima colonna rappresenta il colpo 0.  I circuiti vengono eseguiti in ordine da 0 a 3.  La seconda colonna rappresenta lo scatto 1.  I circuiti vengono eseguiti in ordine da 0 a 3.  Le altre colonne seguono lo stesso schema.
Matrice di esecuzione per colonne

Poiché rep_delay è inserito tra i circuiti, ogni colpo dell'esecuzione incontra questo ritardo. Pertanto, man mano che si abbassa il rep_delay, il tempo totale di esecuzione della QPU diminuisce, a scapito di un aumento del tasso di errore nella preparazione dello stato, come illustra l'immagine seguente:

Questa immagine mostra che, al diminuire del valore di ritardo di ripetizione, aumenta il tasso di errore di preparazione dello stato.
Ritardo di ripetizione rispetto al tasso di errore

Se si impostano sia rep_delay=0 che init_qubits=False, i circuiti si "uniscono", poiché i qubit inizieranno nello stato finale del tiro precedente.

Si noti che, mentre i circuiti in un lavoro primitivo vengono raggruppati in batch per l'esecuzione QPU, non vi è alcuna garanzia sull'ordine di esecuzione dei circuiti provenienti dai PUB. Ad esempio, se invii pubs=[pub1, pub2], i circuiti da pub1 potrebbero non essere eseguiti prima di quelli da pub2. Non vi è inoltre alcuna garanzia che i circuiti dello stesso lavoro vengano eseguiti come un unico batch sulla QPU.


Specificare rep_delay per un lavoro primitivo

Verificare il valore rep_delay per una QPU

Verificare sempre l'intervallo rep_delay supportato per la QPU specifica in uso. Questi valori non sono gli stessi per ogni QPU e possono anche cambiare nel tempo.

Si prega di notare che un aumento di rep_delay avrà un impatto diretto sui tempi di esecuzione e sul consumo di capacità.

from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler

service = QiskitRuntimeService()

# Make sure your backend supports it
backend = service.least_busy(
    operational=True, min_num_qubits=100, dynamic_reprate_enabled=True
)

# Determine the allowable range
backend.rep_delay_range
sampler = Sampler(mode=backend)

# Specify a value in the supported range
sampler.options.execution.rep_delay = 0.0005

Passi successivi

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