Limites des jobs
Quand tu envoies un job à un QPU IBM®, il est d'abord transmis au service de validation des jobs. Ce service cherche à s'assurer que le job pourra s'exécuter sur le QPU, afin que tu n'aies pas à attendre qu'il passe dans la file d'attente pour que le job échoue. Ces vérifications comprennent le respect des limites décrites ci-dessous. Si ces limites sont dépassées, la charge de travail ne peut pas être prise en charge par la pile logicielle quantique et échouera généralement.
- Certaines options de primitives augmentent la taille du circuit. Les limites décrites sont vérifiées après l'augmentation attendue de la taille du circuit. En particulier, ces options augmentent la taille du circuit :
- Le découplage dynamique et le ZNE par repliement de portes introduisent des portes supplémentaires qui sont comptabilisées dans les instructions pour la limite Nombre maximum d'instructions bas niveau par qubit.
- Le ZNE par repliement de portes introduit des portes à deux qubits supplémentaires qui sont pertinentes pour la limite Nombre maximum de portes à deux qubits par job. Le nombre de portes à deux qubits est multiplié par la somme des facteurs de bruit demandés dans le ZNE par repliement de portes.
- Les limites rapportées par les champs
max_shotsetmax_experimentsdebackend.configuration()ne sont plus pertinentes ni appliquées. Ces champs seront supprimés dans un futur proche. - Ces limites sont par job, et non par Primitive Unified Bloc (PUB).
Nombre maximum d'exécutions
Au maximum, 10 millions d'exécutions sont autorisées pour les jobs Sampler (les jobs Estimator peuvent être divisés en sous-jobs plus petits, donc cette limite ne s'applique pas). Le nombre d'exécutions correspond au nombre de circuits multiplié par le nombre de shots, où les circuits sont ceux générés après la diffusion des éléments PUB.
Par exemple, si tu as un PUB avec un circuit et des paramètres de forme (4, 1), cela génère 4 circuits. Si tu demandes 2 000 shots, le nombre total d'exécutions est .
Remarque que si tu actives le Pauli-twirling dans ton job Sampler, le nombre total de shots est basé sur les valeurs num_randomizations et shots_per_randomization. Consulte TwirlingOptions pour plus de détails.
Nombre maximum d'instructions bas niveau par qubit
Le service autorise jusqu'à 26,8 millions d'instructions du système de contrôle par qubit. Cela garantit que les circuits utilisateur tiennent dans la mémoire d'instructions du système de contrôle. L'exemple ci-dessous montre comment transpiler un circuit et compter le nombre d'instructions de chaque type.
Le tableau suivant décrit comment le système traduit les instructions de circuit ISA (instruction set architecture) en instructions du système de contrôle lors du calcul de cette limite.
| Instruction | Compte |
|---|---|
rz | 1 |
delay | 1 |
sx | 2 |
x | 2 |
cx | 5 |
cz | 5 |
ecr | 5 |
measure | 10 |
reset | 17 |
init | 50 |
Ce tableau présente l'heuristique utilisée lors de la validation et ne reflète pas le nombre exact d'instructions utilisées pour implémenter une opération.
Exemple
Définis des circuits, transpile-les et obtiens le nombre de portes qui seront exécutées.
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}")
Pour tous les détails, consulte Transpiler avec des backends personnalisés.
Nombre maximum de portes à un et deux qubits par circuit
Le nombre maximum de portes à un qubit est le suivant :
- 30 millions de portes RZ
- 20 millions de portes SX
Le nombre maximum de portes à deux qubits par circuit est de cinq millions. Cela garantit que le job peut être manipulé dans les limites de mémoire de la pile logicielle bas niveau.