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.

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:

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 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.0005Passi successivi
- Provate un esempio nel tutorial sull' algoritmo di ottimizzazione approssimativa quantistica (QAOA).
- Scopri come iniziare a usare Estimator.
- Scopri come iniziare a usare Sampler.