Sari la conținutul principal

Limite de joburi

Când trimiți un job către un QPU IBM®, acesta este trimis mai întâi către serviciul de validare a joburilor. Acest serviciu încearcă să se asigure că jobul va putea rula pe QPU, astfel încât să nu fie nevoie să aștepți ca acesta să treacă prin coadă și apoi jobul să eșueze. Aceste verificări includ respectarea limitelor descrise mai jos. Dacă aceste limite sunt depășite, sarcina de lucru respectivă nu poate fi gestionată de stiva de software cuantic și, de obicei, va eșua.

Note
  • Anumite opțiuni ale primitivelor măresc dimensiunea circuitului. Limitele descrise sunt verificate după creșterea așteptată a dimensiunii circuitului. În special, aceste opțiuni măresc dimensiunea circuitului:
  • Limitele raportate de câmpurile backend.configuration() max_shots și max_experiments nu mai sunt relevante sau impuse. Aceste câmpuri vor fi eliminate în viitorul apropiat.
  • Aceste limite sunt per job, nu per Primitive Unified Bloc (PUB).

Numărul maxim de execuții

Sunt permise cel mult 10 milioane de execuții pentru joburile Sampler (joburile Estimator pot fi împărțite în sub-joburi mai mici, deci această limită nu se aplică). Numărul de execuții este numărul de circuite înmulțit cu numărul de shots, unde circuitele sunt cele generate după difuzarea elementelor PUB.

De exemplu, dacă ai un PUB cu un singur Circuit și parametri cu forma (4, 1), acesta ar genera 4 circuite. Dacă ai solicitat 2.000 de shots, atunci numărul total de execuții este 4×2,000=8,0004 \times 2,000 = 8,000.

Reține că, dacă activezi Pauli-twirling în jobul tău Sampler, numărul total de shots se bazează pe valorile num_randomizations și shots_per_randomization. Consultă TwirlingOptions pentru mai multe detalii.

Numărul maxim de instrucțiuni de nivel scăzut per qubit

Serviciul permite până la 26,8 milioane de instrucțiuni ale sistemului de control per qubit. Aceasta asigură că circuitele utilizatorului se încadrează în memoria de instrucțiuni a sistemului de control. Exemplul de mai jos arată cum să transpilezi un Circuit și să numeri câte instrucțiuni de fiecare tip există.

Tabelul următor descrie modul în care sistemul traduce instrucțiunile circuitului de arhitectură a setului de instrucțiuni (ISA) în instrucțiuni ale sistemului de control atunci când calculează această limită.

InstrucțiuneNumăr
rz1
delay1
sx2
x2
cx5
cz5
ecr5
measure10
reset17
init50
notă

Acest tabel surprinde euristica folosită în validare și nu reflectă numărul exact de instrucțiuni utilizate pentru implementarea unei operații.

Exemplu

Definește circuite, transpilează-le și obține un număr al porților care vor fi rulate.

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}")

Pentru detalii complete, consultă Transpilare față de Backend-uri personalizate.

Numărul maxim de porți cu un qubit și cu doi qubiți per Circuit

Numărul maxim de porți cu un singur qubit este următorul:

  • 30 de milioane de porți RZ
  • 20 de milioane de porți SX

Numărul maxim de porți cu doi qubiți per Circuit este de cinci milioane. Aceasta asigură că jobul poate fi manipulat în limitele de memorie ale stivei de software de nivel scăzut.