Przejdź do głównej treści
Ten projekt jest w wersji beta. Znalazłeś błąd? Otwórz zgłoszenie na GitHub. Masz pytanie lub pomysł? Zapytaj w Discussions — chętnie poznamy Twoją opinię!
Jak oceniasz jakość tłumaczenia tej strony?

Inicjalizacja Qubitów

Package versions

Kod na tej stronie powstał przy użyciu poniższych wymagań. Zalecamy korzystanie z tych wersji lub nowszych.

qiskit-ibm-runtime~=0.50.0

Gdy Circuit jest wykonywany na jednostce przetwarzania kwantowego (QPU) IBM®, na początku Circuit zazwyczaj wstawiany jest niejawny reset, który zapewnia inicjalizację Qubitów do zera. Jest to kontrolowane przez flagę init_qubits, ustawianą jako opcja wykonania prymitywu.

Jednak niedoskonałości w procesie resetu mogą powodować błędy przygotowania stanu. Aby złagodzić ten błąd, QPU wstawia też czas opóźnienia powtórzeń (ang. rep_delay) pomiędzy Circuit. Każdy Backend ma inną domyślną wartość rep_delay, ale zwykle jest ona ustawiana tak, aby równoważyć wierność resetu i całkowity czas wykonania. Uruchom backend.default_rep_delay, aby sprawdzić domyślną wartość rep_delay dla konkretnego QPU.

Ponieważ wszystkie QPU IBM korzystają z wykonywania z dynamiczną częstotliwością powtórzeń, możesz zmieniać rep_delay dla każdego zadania. Circuit przesłane w ramach zadania prymitywu są grupowane w paczki do wykonania na QPU. Te obwody są wykonywane przez iterację po obwodach dla każdego żądanego strzału (ang. shot); wykonanie przebiega kolumnowo po macierzy Circuit i strzałów, jak pokazano na poniższym rysunku.

Pierwsza kolumna reprezentuje strzał 0. Circuit są uruchamiane kolejno od 0 do 3. Druga kolumna reprezentuje strzał 1. Circuit są uruchamiane kolejno od 0 do 3. Pozostałe kolumny podążają za tym samym schematem.

Ponieważ rep_delay jest wstawiany pomiędzy Circuit, każdy strzał podczas wykonania napotyka to opóźnienie. Dlatego wraz z obniżaniem wartości rep_delay całkowity czas wykonania na QPU maleje, kosztem wzrostu wskaźnika błędów przygotowania stanu, co ilustruje poniższy obraz:

Ten obraz pokazuje, że wraz ze zmniejszaniem wartości rep_delay wskaźnik błędów przygotowania stanu rośnie.

Jeśli ustawisz zarówno rep_delay=0, jak i init_qubits=False, Circuit „scalają się" ze sobą, ponieważ Qubity będą zaczynać w stanie końcowym z poprzedniego strzału.

Pamiętaj, że choć Circuit w ramach zadania prymitywu są grupowane do wykonania na QPU, kolejność wykonywania Circuit z poszczególnych PUBów nie jest gwarantowana. Na przykład jeśli przesyłasz pubs=[pub1, pub2], Circuit z pub1 mogą nie zostać uruchomione przed Circuit z pub2. Nie ma też gwarancji, że Circuit z tego samego zadania zostaną uruchomione jako jedna paczka na QPU.

Określanie rep_delay dla zadania prymitywu​

Zweryfikuj wartość rep_delay dla QPU

Zawsze sprawdzaj obsługiwany zakres rep_delay dla konkretnego QPU, z którego korzystasz. Wartości te nie są takie same dla każdego QPU i mogą się również zmieniać w czasie.

Pamiętaj, że zwiększenie rep_delay będzie miało bezpośredni wpływ na czas wykonania i zużycie przydzielonego limitu.

# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService

# Legacy server-side primitive before qiskit-ibm-runtime v0.50.0
# from qiskit_ibm_runtime import QiskitRuntimeService, Sampler

# Client-side primitive introduced in qiskit-ibm-runtime v0.50.0
from qiskit_ibm_runtime.executor_sampler import 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

Następne kroki​

Zalecenia