Inițializarea Qubit-ului
Versiuni de pachete
Codul de pe această pagină a fost dezvoltat folosind următoarele cerințe. Recomandăm utilizarea acestor versiuni sau a unora mai noi.
qiskit-ibm-runtime~=0.46.1
Când un circuit este executat pe o unitate de procesare cuantică (QPU) IBM®, la începutul circuitului este inserat de obicei un reset implicit pentru a asigura că qubit-urile sunt inițializate la zero. Aceasta este controlată de indicatorul init_qubits, setat ca opțiune de execuție a primitivelor.
Cu toate acestea, imperfecțiunile procesului de reset pot introduce erori de pregătire a stării. Pentru a reduce eroarea, QPU inserează, de asemenea, un timp de întârziere de repetiție (sau rep_delay) între circuite. Fiecare Backend are un rep_delay implicit diferit, dar de obicei este setat pentru a echilibra fidelitatea resetului față de timpul total de execuție. Rulează backend.default_rep_delay pentru a afla rep_delay-ul implicit al unui QPU specific.
Deoarece toate QPU-urile IBM folosesc execuția cu rată de repetiție dinamică, poți modifica rep_delay pentru fiecare job. Circuitele pe care le trimiți într-un job primitiv sunt grupate împreună pentru execuție pe QPU. Aceste circuite sunt executate prin iterarea peste circuite pentru fiecare shot solicitat; execuția este pe coloane într-o matrice de circuite și shots, după cum este ilustrat în figura următoare.

Deoarece rep_delay este inserat între circuite, fiecare shot al execuției întâlnește această întârziere. Prin urmare, pe măsură ce scazi rep_delay-ul, timpul total de execuție pe QPU scade, cu prețul creșterii ratei de eroare de pregătire a stării, după cum ilustrează imaginea următoare:

Dacă setezi atât rep_delay=0, cât și init_qubits=False, circuitele „se îmbină", deoarece qubit-urile vor începe în starea finală din shot-ul anterior.
Reține că, deși circuitele dintr-un job primitiv sunt grupate împreună pentru execuție pe QPU, nu există nicio garanție privind ordinea în care sunt executate circuitele din PUB-uri. De exemplu, dacă trimiți pubs=[pub1, pub2], este posibil ca circuitele din pub1 să nu ruleze înaintea celor din pub2. De asemenea, nu există nicio garanție că circuitele din același job vor rula ca un singur lot pe QPU.
Specificarea rep_delay pentru un job primitiv
Verifică întotdeauna intervalul rep_delay acceptat pentru QPU-ul specific pe care îl folosești. Aceste valori nu sunt aceleași pentru fiecare QPU și se pot modifica în timp.
Reține că o creștere a rep_delay-ului va avea un impact direct asupra timpului de execuție și a consumului de capacitate.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
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
Pași următori
- Încearcă un exemplu în tutorialul Algoritmul cuantic de optimizare aproximativă (QAOA).
- Analizează cum să începi cu Estimator.
- Analizează cum să începi cu Sampler.