Limity zadań
Gdy wysyłasz zadanie do QPU IBM®, jest ono najpierw przekazywane do usługi walidacji zadań. Usługa ta stara się zapewnić, że zadanie będzie mogło zostać uruchomione na QPU, abyś nie musiał czekać, aż przejdzie przez kolejkę, a następnie zakończyło się niepowodzeniem. Sprawdzenia te obejmują egzekwowanie opisanych poniżej limitów. Jeśli limity te zostaną przekroczone, dane obciążenie nie może być obsłużone przez stos oprogramowania kwantowego i zazwyczaj zakończy się niepowodzeniem.
- Niektóre opcje primitywów zwiększają rozmiar Circuit. Opisane limity są sprawdzane po oczekiwanym wzroście rozmiaru Circuit. W szczególności następujące opcje zwiększają rozmiar Circuit:
- Dynamical decoupling i gate-folding ZNE wprowadzają dodatkowe Gate, które są uwzględniane w instrukcjach dla limitu Maksymalna liczba niskopoziomowych instrukcji na Qubit.
- Gate-folding ZNE wprowadza dodatkowe dwu-qubitowe Gate istotne dla limitu Maksymalna liczba dwu-qubitowych Gate na zadanie. Liczba dwu-qubitowych Gate jest mnożona przez sumę współczynników szumu żądanych w gate-folding ZNE.
- Limity raportowane przez pola
max_shotsimax_experimentsmetodybackend.configuration()nie są już istotne ani egzekwowane. Pola te zostaną usunięte w najbliższej przyszłości. - Limity te dotyczą poszczególnych zadań, a nie poszczególnych PUB (Primitive Unified Bloc).
Maksymalna liczba wykonań
Dla zadań Sampler dozwolonych jest co najwyżej 10 milionów wykonań (zadania Estimator można podzielić na mniejsze podzadania, więc ten limit nie ma do nich zastosowania). Liczba wykonań to liczba Circuit pomnożona przez liczbę strzałów (shots), gdzie Circuit to te wygenerowane po rozgłoszeniu elementów PUB.
Na przykład, jeśli masz PUB z jednym Circuit i parametrami o kształcie (4, 1), wyrenderuje to 4 Circuit. Jeśli zażądano 2 000 strzałów, całkowita liczba wykonań wynosi .
Pamiętaj, że jeśli włączysz Pauli-twirling w swoim zadaniu Sampler, całkowita liczba strzałów jest oparta na wartościach num_randomizations i shots_per_randomization. Więcej szczegółów znajdziesz w TwirlingOptions.
Maksymalna liczba niskopoziomowych instrukcji na Qubit
Usługa zezwala na maksymalnie 26,8 miliona instrukcji systemu sterowania na Qubit. Zapewnia to, że Circuit użytkownika mieszczą się w pamięci instrukcji systemu sterowania. Poniższy przykład pokazuje, jak dokonać transpilacji Circuit i policzyć, ile jest każdego rodzaju instrukcji.
Poniższa tabela opisuje, w jaki sposób system tłumaczy instrukcje Circuit architektury zestawu instrukcji (ISA) na instrukcje systemu sterowania podczas obliczania tego limitu.
| Instrukcja | Liczba |
|---|---|
rz | 1 |
delay | 1 |
sx | 2 |
x | 2 |
cx | 5 |
cz | 5 |
ecr | 5 |
measure | 10 |
reset | 17 |
init | 50 |
Ta tabela przedstawia heurystykę stosowaną w walidacji i nie odzwierciedla dokładnej liczby instrukcji używanych do implementacji operacji.
Przykład
Zdefiniuj Circuit, dokonaj ich transpilacji i uzyskaj liczbę Gate, które zostaną uruchomione.
from qiskit import QuantumCircuit
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService
num_qubits = 50
ghz = QuantumCircuit(num_qubits)
ghz.h(range(num_qubits))
ghz.cx(0, range(1, num_qubits))
op_counts = ghz.count_ops()
# Choose the least busy backend
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
pm = generate_preset_pass_manager(optimization_level=3, backend=backend)
transpiled_ghz = pm.run(ghz)
op_counts = transpiled_ghz.count_ops()
print(f"Post-Transpilation gates: {op_counts}")
Pełne szczegóły znajdziesz w Transpilacja dla niestandardowych Backend.
Maksymalna liczba jedno- i dwu-qubitowych Gate na Circuit
Maksymalna liczba jedno-qubitowych Gate jest następująca:
- 30 milionów Gate RZ
- 20 milionów Gate SX
Maksymalna liczba dwu-qubitowych Gate na Circuit wynosi pięć milionów. Zapewnia to, że zadanie może być obsługiwane w ramach limitów pamięci niskopoziomowego stosu oprogramowania.