Inicializace Qubitů
Verze balíčků
Kód na této stránce byl vyvinut pomocí následujících požadavků. Doporučujeme používat tyto nebo novější verze.
qiskit-ibm-runtime~=0.43.1
Když je Circuit spuštěn na kvantové procesorové jednotce (QPU) od IBM®, je na začátek Circuit obvykle vložen implicitní reset, aby bylo zajištěno, že Qubity jsou inicializovány na nulu. To je řízeno příznakem init_qubits, nastaveným jako možnost spuštění primitivy.
Proces resetu však není dokonalý, což vede k chybám při přípravě stavu. Aby se tato chyba zmírnila, systém také vkládá dobu prodlevy opakování (neboli rep_delay) mezi Circuits. Každý Backend má jiný výchozí rep_delay, ale obvykle je delší než T1, aby prostředí mohlo Qubity resetovat. Výchozí rep_delay lze zjistit spuštěním backend.default_rep_delay.
Všechny IBM QPU používají dynamické spouštění s opakovací frekvencí, které ti umožňuje změnit rep_delay pro každý job. Circuits, které odesíláš v rámci primitivního jobu, jsou pro spuštění na QPU sdruženy dohromady. Tyto Circuits jsou spouštěny iterací přes Circuits pro každý požadovaný shot; spouštění probíhá sloupcově přes matici Circuits a shotů, jak je znázorněno na následujícím obrázku.

Protože rep_delay je vkládán mezi Circuits, každý shot spouštění narazí na tuto prodlevu. Snížení rep_delay tedy zkracuje celkovou dobu spouštění na QPU, ale za cenu zvýšené míry chyb při přípravě stavu, jak je vidět na následujícím obrázku:

Nastavení rep_delay=0 i init_qubits=False v podstatě Circuits „sloučí" dohromady, protože Qubity začnou v konečném stavu z předchozího shotu.
Všimni si, že ačkoli jsou Circuits v rámci primitivního jobu sdruženy pro spouštění na QPU, pořadí, ve kterém jsou Circuits z PUBů spouštěny, není zaručeno. Tedy i když odešleš pubs=[pub1, pub2], není zaručeno, že Circuits z pub1 poběží před těmi z pub2. Rovněž není zaručeno, že Circuits ze stejného jobu poběží jako jediná dávka na QPU.
Zadání rep_delay pro primitivní job
# 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
Další kroky
- Vyzkoušej příklad v tutoriálu Kvantový algoritmus přibližné optimalizace (QAOA).
- Přečti si, jak začít s primitivami.