Limiti dei job
Quando invii un job a un QPU IBM®, questo viene prima inoltrato al servizio di validazione dei job. Questo servizio cerca di garantire che il job possa essere eseguito sul QPU, in modo che tu non debba aspettare che passi attraverso la coda e poi vederlo fallire. Questi controlli includono il rispetto dei limiti descritti di seguito. Se tali limiti vengono superati, il carico di lavoro non può essere gestito dallo stack software quantistico e di solito fallirà .
- Alcune opzioni delle primitive aumentano la dimensione del circuito. I limiti descritti vengono verificati dopo l'aumento previsto della dimensione del circuito. In particolare, le seguenti opzioni aumentano la dimensione del circuito:
- Il decoupling dinamico e lo ZNE con gate-folding introducono gate aggiuntivi inclusi nelle istruzioni per il limite del Numero massimo di istruzioni a basso livello per qubit.
- Lo ZNE con gate-folding introduce gate a due qubit aggiuntivi rilevanti per il limite del Numero massimo di gate a due qubit per job. Il numero di gate a due qubit viene moltiplicato per la somma dei fattori di rumore richiesti nello ZNE con gate-folding.
- I limiti riportati dai campi
max_shotsemax_experimentsdibackend.configuration()non sono più rilevanti né applicati. Questi campi verranno rimossi nel prossimo futuro. - Questi limiti sono per job, non per Primitive Unified Bloc (PUB).
Numero massimo di esecuzioni​
Per i job Sampler sono consentite al massimo 10 milioni di esecuzioni (i job Estimator possono essere suddivisi in sotto-job più piccoli, quindi questo limite non si applica). Il numero di esecuzioni è dato dal numero di circuiti moltiplicato per il numero di shot, dove i circuiti sono quelli generati dopo il broadcasting degli elementi PUB.
Ad esempio, se hai un PUB con un circuito e parametri di forma (4, 1), questo produrrà 4 circuiti. Se hai richiesto 2.000 shot, il numero totale di esecuzioni è .
Tieni presente che se abiliti il Pauli-twirling nel tuo job Sampler, il numero totale di shot si basa sui valori num_randomizations e shots_per_randomization. Consulta TwirlingOptions per ulteriori dettagli.
Numero massimo di istruzioni a basso livello per qubit​
Il servizio consente fino a 26,8 milioni di istruzioni del sistema di controllo per qubit. Questo garantisce che i circuiti dell'utente rientrino nella memoria delle istruzioni del sistema di controllo. L'esempio seguente mostra come transpilare un circuito e contare quante istruzioni di ciascun tipo sono presenti.
La tabella seguente descrive come il sistema traduce le istruzioni del circuito ISA (Instruction Set Architecture) in istruzioni del sistema di controllo durante il calcolo di questo limite.
| Istruzione | Conteggio |
|---|---|
rz | 1 |
delay | 1 |
sx | 2 |
x | 2 |
cx | 5 |
cz | 5 |
ecr | 5 |
measure | 10 |
reset | 17 |
init | 50 |
Questa tabella riporta l'euristica utilizzata nella validazione e non riflette il numero esatto di istruzioni impiegate per implementare un'operazione.
Esempio​
Definisci i circuiti, transpilali e ottieni un conteggio del numero di gate che verranno eseguiti.
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}")
Per tutti i dettagli, consulta Transpilare con backend personalizzati.
Numero massimo di gate a uno e due qubit per circuito​
Il numero massimo di gate a qubit singolo è il seguente:
- 30 milioni di gate RZ
- 20 milioni di gate SX
Il numero massimo di gate a due qubit per circuito è cinque milioni. Questo garantisce che il job possa essere gestito entro i limiti di memoria dello stack software a basso livello.