{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "255dc213-977b-46de-86f4-3bab0a005340",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Initialisation des qubits\"\n",
        "description: \"Contenu explicatif sur l'exécution dynamique du taux de répétition\"\n",
        "---\n",
        "\n",
        "<span id=\"qubit-initialization\" />\n",
        "\n",
        "# Initialisation des qubits\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "6e5f6e09-ed60-4b74-a2fd-72da40d8645e",
      "metadata": {
        "tags": [
          "version-info"
        ]
      },
      "source": [
        "{/*\n",
        "  DO NOT EDIT THIS CELL!!!\n",
        "  This cell's content is generated automatically by a script. Anything you add\n",
        "  here will be removed next time the notebook is run. To add new content, create\n",
        "  a new cell before or after this one.\n",
        "  */}\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"Versions de package\">\n",
        "    Le code de cette page a été développé en tenant compte des exigences suivantes.\n",
        "    Nous recommandons d'utiliser ces versions ou des versions plus récentes.\n",
        "\n",
        "    ```\n",
        "    qiskit-ibm-runtime~=0.47.0\n",
        "    ```\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "abdfb100-5321-41d7-8aee-117062aed595",
      "metadata": {},
      "source": [
        "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](/docs/api/qiskit-ibm-runtime/options-execution-options-v2).\n",
        "\n",
        "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.\n",
        "\n",
        "É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.\n",
        "\n",
        "![La première colonne représente le tir 0.  Les circuits sont exécutés dans l'ordre de 0 à 3.  La deuxième colonne représente le tir 1.  Les circuits sont exécutés dans l'ordre de 0 à 3.  Les autres colonnes suivent le même schéma.](https://quantum.cloud.ibm.com/docs/images/guides/repetition-rate-execution/circuits_shots_matrix1.avif \"Matrice d'exécution par colonne\")\n",
        "\n",
        "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 :\n",
        "\n",
        "![Cette image montre qu'à mesure que la valeur du délai de répétition est réduite, le taux d'erreur dans la préparation de l'état augmente.](https://quantum.cloud.ibm.com/docs/images/guides/repetition-rate-execution/rep_delay.avif \"Délai de répétition en fonction du taux d'erreur\")\n",
        "\n",
        "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.\n",
        "\n",
        "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.\n",
        "\n",
        "<span id=\"specify-rep_delay-for-a-primitive-job\" />\n",
        "\n",
        "## Spécifier `rep_delay` pour un travail primitif\n",
        "\n",
        "<Admonition type=\"note\" title=\"Vérifiez la valeur rep_delay pour un QPU\">\n",
        "  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.\n",
        "\n",
        "  Veuillez noter qu'une augmentation de `rep_delay` aura un impact direct sur votre temps d'exécution et votre consommation de capacité.\n",
        "</Admonition>\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "id": "aca7f18c-ee37-4f6f-a6a2-fe389459bb9b",
      "metadata": {},
      "outputs": [],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "\n",
        "# Make sure your backend supports it\n",
        "backend = service.least_busy(\n",
        "    operational=True, min_num_qubits=100, dynamic_reprate_enabled=True\n",
        ")\n",
        "\n",
        "# Determine the allowable range\n",
        "backend.rep_delay_range\n",
        "sampler = Sampler(mode=backend)\n",
        "\n",
        "# Specify a value in the supported range\n",
        "sampler.options.execution.rep_delay = 0.0005"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "53c33092-8d59-4422-b438-1331afbacf17",
      "metadata": {},
      "source": [
        "<span id=\"next-steps\" />\n",
        "\n",
        "## Etapes suivantes\n",
        "\n",
        "<Admonition type=\"tip\" title=\"Recommandations\">\n",
        "  * Essayez un exemple dans le tutoriel sur l ['algorithme d'optimisation approximative quantique (QAOA)](/docs/tutorials/quantum-approximate-optimization-algorithm).\n",
        "  * Découvrez comment [commencer](/docs/guides/get-started-with-estimator) à utiliser Estimator.\n",
        "  * Découvrez comment [commencer](/docs/guides/get-started-with-sampler) à utiliser Sampler.\n",
        "</Admonition>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "id": "a1b8767d",
      "source": "© IBM Corp., 2017-2026"
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}