Přeskočit na hlavní obsah

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.

První sloupec představuje shot 0. Circuits jsou spouštěny v pořadí od 0 do 3. Druhý sloupec představuje shot 1. Circuits jsou spouštěny v pořadí od 0 do 3. Zbývající sloupce se řídí stejným vzorem.

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:

Tento obrázek ukazuje, že jak se hodnota rep_delay snižuje, míra chyb při přípravě stavu roste.

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

Doporučení