Initialisation des qubits
Le code de cette page a été développé en tenant compte des exigences suivantes. Nous recommandons d'utiliser ces versions ou des versions plus récentes.
qiskit-ibm-runtime~=0.47.0
Lorsqu'un circuit est exécuté sur une unité de traitement quantique (QPU) IBM®, une réinitialisation implicite est généralement insérée au début du circuit pour s'assurer que les qubits sont initialisés à zéro. Ceci est contrôlé par l'indicateur init_qubits , défini en tant qu' option d'exécution primitive.
Cependant, des imperfections dans le processus de réinitialisation peuvent entraîner des erreurs de préparation de l'état. Pour atténuer l'erreur, le QPU insère également un délai de répétition (ou rep_delay) entre les circuits. Chaque backend a une valeur par défaut différente rep_delay, mais celle-ci est généralement définie de manière à trouver un équilibre entre la fidélité de la réinitialisation et le temps d'exécution total. Exécutez backend.default_rep_delay pour trouver la valeur par défaut rep_delay pour un QPU spécifique.
Étant donné que tous les QPU d' IBM s utilisent l'exécution à taux de répétition dynamique, vous pouvez modifier le rep_delay pour chaque tâche. Les circuits que vous soumettez dans une tâche primitive sont regroupés pour être exécutés sur le QPU. Ces circuits sont exécutés en itérant sur les circuits pour chaque tir demandé; l'exécution se fait colonne par colonne sur une matrice de circuits et de tirs, comme illustré dans la figure suivante.

Comme rep_delay est inséré entre les circuits, chaque cycle d'exécution subit ce retard. Par conséquent, lorsque vous réduisez le rep_delay, le temps d'exécution total du QPU diminue, au détriment d'une augmentation du taux d'erreur de préparation d'état, comme l'illustre l'image suivante :

Si vous définissez à la fois rep_delay=0 et init_qubits=False, les circuits « fusionnent », car les qubits commenceront dans l'état final du tir précédent.
Notez que, bien que les circuits d'une tâche primitive soient regroupés pour l'exécution QPU, l'ordre d'exécution des circuits provenant des PUB n'est pas garanti. Par exemple, si vous soumettez pubs=[pub1, pub2], les circuits provenant de pub1 pourraient ne pas s'exécuter avant ceux provenant de pub2. Il n'y a également aucune garantie que les circuits provenant d'une même tâche s'exécuteront en un seul lot sur le QPU.
Spécifier rep_delay pour un travail primitif
Vérifiez toujours la plage rep_delay prise en charge pour le QPU spécifique que vous utilisez. Ces valeurs ne sont pas les mêmes pour tous les QPU et peuvent également évoluer au fil du temps.
Veuillez noter qu'une augmentation de rep_delay aura un impact direct sur votre temps d'exécution et votre consommation de capacité.
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as 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.0005Etapes suivantes
- Essayez un exemple dans le tutoriel sur l 'algorithme d'optimisation approximative quantique (QAOA).
- Découvrez comment commencer à utiliser Estimator.
- Découvrez comment commencer à utiliser Sampler.