{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "bed19311-f71d-4d8c-9a05-1b68fa72df29",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Définir les options de l'échantillonneur\"\n",
        "description: \"Spécifiez les options lors de la création à l'aide de la primitive Sampler.\"\n",
        "---\n",
        "\n",
        "<span id=\"specify-sampler-options\" />\n",
        "\n",
        "# Définir les options de l'échantillonneur\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3adc856a-0fcd-47e4-94d9-22b90bddc24f",
      "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 présenté sur cette page a été développé en tenant compte des exigences suivantes.\n",
        "    Nous vous recommandons d'utiliser ces versions ou des versions plus récentes.\n",
        "\n",
        "    ```\n",
        "    qiskit[all]~=2.5.1\n",
        "    qiskit-ibm-runtime~=0.47.0\n",
        "    ```\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "56db929d-8b84-49b2-a98b-55d33f91ea30",
      "metadata": {},
      "source": [
        "Vous pouvez utiliser les options pour personnaliser la primitive « Sampler ». Cette section explique comment définir les options de base d' IBM Quantum. Si l'interface de la méthode `run()` des primitives est commune à toutes les implémentations, leurs options, elles, ne le sont pas. Consultez les documentations d'API correspondantes pour plus d'informations sur les options [`qiskit_aer.primitives.SamplerV2`](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.primitives.SamplerV2.html) et [`qiskit.primitives.BackendSamplerV2`](/docs/api/qiskit/qiskit.primitives.BackendSamplerV2) .\n",
        "\n",
        "<span id=\"pass-options\" />\n",
        "\n",
        "<span id=\"set-sampler-options\" />\n",
        "\n",
        "## Définir les options de l'échantillonneur\n",
        "\n",
        "Vous pouvez définir des options lors de l'initialisation de Sampler, après l'avoir initialisé, ou encore mettre à jour ces options une fois Sampler initialisé. Pour savoir comment utiliser ces techniques, consultez la rubrique «[ Introduction aux options](/docs/guides/runtime-options-overview#options-precedence) ».\n",
        "\n",
        "De plus, vous pouvez définir la `shots` valeur dans la `run()` méthode, comme décrit dans la section suivante.\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3ca44016-acfe-4540-ab0e-659b9577c4eb",
      "metadata": {},
      "source": [
        "<span id=\"run-method\" />\n",
        "\n",
        "<span id=\"run-method\" />\n",
        "\n",
        "### Méthode Run()\n",
        "\n",
        "Les seules valeurs que vous pouvez transmettre à `run()` sont celles définies dans l'interface.  C'est-à-dire. `shots` Cela remplace toute valeur définie pour `default_shots` lors de l'exécution en cours.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "id": "c2423fcc-7f7f-4674-af6f-fc90f4b28b17",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<RuntimeJobV2('d9mq9qo8csec73fagtb0', 'sampler')>"
            ]
          },
          "execution_count": 1,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import SamplerV2 as Sampler\n",
        "from qiskit.circuit.library import random_iqp\n",
        "from qiskit.transpiler import generate_preset_pass_manager\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "circuit1 = random_iqp(3)\n",
        "circuit1.measure_all()\n",
        "circuit2 = random_iqp(3)\n",
        "circuit2.measure_all()\n",
        "\n",
        "pass_manager = generate_preset_pass_manager(\n",
        "    optimization_level=3, backend=backend\n",
        ")\n",
        "\n",
        "transpiled1 = pass_manager.run(circuit1)\n",
        "transpiled2 = pass_manager.run(circuit2)\n",
        "\n",
        "sampler = Sampler(mode=backend)\n",
        "# Default shots to use if not specified in run()\n",
        "sampler.options.default_shots = 500\n",
        "# Sample two circuits at 128 shots each.\n",
        "sampler.run([transpiled1, transpiled2], shots=128)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "4bf67f60-ce62-4b95-b70c-b15f131be46d",
      "metadata": {},
      "source": [
        "<span id=\"special-cases\" />\n",
        "\n",
        "### Cas particuliers\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "857e40a1-de1d-46f0-9db8-db55a6954f47",
      "metadata": {},
      "source": [
        "<span id=\"shots\" />\n",
        "\n",
        "<span id=\"shots\" />\n",
        "\n",
        "#### Tentatives\n",
        "\n",
        "La `SamplerV2.run` méthode accepte deux arguments : une liste de PUB, dont chacun peut spécifier une valeur propre à l' PUB e pour les « shots », et un argument clé « shots ». Ces valeurs de prise font partie de l'interface d'exécution de l'échantillonneur et sont indépendantes des options de l'échantillonneur d'exécution.  Elles ont priorité sur toutes les valeurs spécifiées en tant qu'options afin de respecter l'abstraction Sampler.\n",
        "\n",
        "Toutefois, si `shots` n'est spécifié ni par aucune option « PUB », ni dans l'argument «run» (ou si tous ces arguments sont vides `None`), alors la valeur «shots» définie dans les options est utilisée, notamment `default_shots`.\n",
        "\n",
        "En résumé, voici l'ordre de priorité pour définir les prises dans le Sampler, pour toute l' PUB :\n",
        "\n",
        "1. Si l' PUB e des prises de vue, utilisez cette valeur.\n",
        "2. Si l'argument `shots` « keyword » est spécifié dans `run`, utilisez cette valeur.\n",
        "3. Si cette option est `twirling` activée, le produit de et `num_randomizations` `shots_per_randomization`, tel que spécifié par les [options `twirling`](/docs/api/qiskit-ibm-runtime/options-twirling-options) , est utilisé.\n",
        "4. Si `sampler.options.default_shots` est spécifié, utilisez cette valeur.\n",
        "\n",
        "Ainsi, si des coups sont spécifiés à tous les emplacements possibles, c'est celui qui a la priorité la plus élevée (les coups spécifiés dans l' PUB ) qui est utilisé.\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  Bien que les priorités définies dans l' PUB et dans `run` aient une priorité plus élevée, la tâche échoue si `twirling` est activé et que le produit de `num_randomizations` et `shots_per_randomization` est inférieur à la `shots` valeur de. `num_randomizations`Dans ce scénario, `SamplerV2` n'est pas en mesure de répartir les prises de vue entre les éléments spécifiés.\n",
        "</Admonition>\n",
        "\n",
        "Exemple :\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "id": "e06376f4-fcba-4d03-8cbc-c53ca02d81af",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<RuntimeJobV2('d9mq9snurbec73e67ah0', 'sampler')>"
            ]
          },
          "execution_count": 2,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import SamplerV2 as Sampler\n",
        "from qiskit.circuit.library import random_iqp\n",
        "from qiskit.transpiler import generate_preset_pass_manager\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "circuit1 = random_iqp(3)\n",
        "circuit1.measure_all()\n",
        "circuit2 = random_iqp(3)\n",
        "circuit2.measure_all()\n",
        "\n",
        "pass_manager = generate_preset_pass_manager(\n",
        "    optimization_level=3, backend=backend\n",
        ")\n",
        "\n",
        "transpiled1 = pass_manager.run(circuit1)\n",
        "transpiled2 = pass_manager.run(circuit2)\n",
        "\n",
        "\n",
        "# Setting shots during primitive initialization\n",
        "sampler = Sampler(mode=backend, options={\"default_shots\": 4096})\n",
        "\n",
        "# Setting options after primitive initialization\n",
        "# This uses auto-complete.\n",
        "sampler.options.default_shots = 2000\n",
        "\n",
        "# This does bulk update.  The value for default_shots is overridden\n",
        "# if you specify shots with run() or in the PUB.\n",
        "sampler.options.update(\n",
        "    default_shots=1024, dynamical_decoupling={\"sequence_type\": \"XpXm\"}\n",
        ")\n",
        "\n",
        "# Sample two circuits at 128 shots each.\n",
        "sampler.run([transpiled1, transpiled2], shots=128)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "29451d36-d88d-4726-96d2-f3083ac9e4a9",
      "metadata": {},
      "source": [
        "<span id=\"options-table\" />\n",
        "\n",
        "<span id=\"available-options\" />\n",
        "\n",
        "## Options disponibles\n",
        "\n",
        "Le tableau suivant présente les options de la dernière version de `qiskit-ibm-runtime`. Pour consulter les versions antérieures de cette option, rendez-vous sur [la `qiskit-ibm-runtime` documentation de l'API](/docs/api/qiskit-ibm-runtime) et sélectionnez une version antérieure.\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"`default_shots`\">\n",
        "    Le nombre total de tirs à utiliser par circuit et par configuration.\n",
        "\n",
        "    **Valeurs possibles** : nombre entier >= 0\n",
        "\n",
        "    **Par défaut** : Aucun\n",
        "\n",
        "    [`default_shots` Documentation de l'API](/docs/api/qiskit-ibm-runtime/options-sampler-options#default_shots)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`dynamical_decoupling`\">\n",
        "    Gérer les paramètres de réduction des erreurs de découplage dynamique.\n",
        "\n",
        "    [`dynamical_decoupling` Documentation de l'API](/docs/api/qiskit-ibm-runtime/options-sampler-options#dynamical_decoupling)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`dynamical_decoupling.enable`\">\n",
        "        **Choix** : `True`, `False`\n",
        "\n",
        "        **Par défaut** : `False`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.extra_slack_distribution`\">\n",
        "        **Choix** : `middle`, `edges`\n",
        "\n",
        "        **Par défaut** : `middle`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.scheduling_method`\">\n",
        "        Options : `asap`, `alap`\n",
        "        Par défaut : `alap`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.sequence_type`\">\n",
        "        Options : `XX`, `XpXm`, `XY4`\n",
        "        Par défaut : `XX`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.skip_reset_qubits`\">\n",
        "        Options : `True`, `False`\n",
        "        Par défaut : `False`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`environment`\">\n",
        "    [`environment` Documentation de l'API](/docs/api/qiskit-ibm-runtime/options-sampler-options#environment)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`environment.job_tags`\">\n",
        "        Liste des balises.\n",
        "\n",
        "        **Options** : Aucune\n",
        "\n",
        "        **Par défaut** : Aucun\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.log_level`\">\n",
        "        **Options** : DEBUG, INFO, WARNING, ERROR, CRITICAL\n",
        "\n",
        "        **Par défaut** : AVERTISSEMENT\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.private`\">\n",
        "        **Choix** : `True`, `False`\n",
        "\n",
        "        **Par défaut** : `False`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`execution`\">\n",
        "    [`execution` Documentation de l'API](/docs/api/qiskit-ibm-runtime/options-sampler-options#execution)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`execution.init_qubits`\">\n",
        "        Faut-il ramener les qubits à l'état fondamental à chaque impulsion?\n",
        "\n",
        "        **Choix** : `True`, `False`\n",
        "\n",
        "        **Par défaut** : `True`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`execution.rep_delay`\">\n",
        "        Le délai entre une mesure et le circuit quantique qui suit.\n",
        "\n",
        "        **Options** : Valeur comprise dans la plage fournie par `backend.rep_delay_range`\n",
        "\n",
        "        **Par défaut** : fourni par `backend.default_rep_delay`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`execution.meas_type`\">\n",
        "        **Options** : `classified`, `kerneled`, `avg_kerneled`\n",
        "\n",
        "        **Par défaut** : `classified`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`max_execution_time`\">\n",
        "    Définit la durée maximale d'exécution d'une tâche, en secondes. Pour plus de détails, consultez le guide [sur la durée maximale d'exécution](/docs/guides/max-execution-time).\n",
        "\n",
        "    **Valeurs possibles** : nombre entier exprimant le nombre de secondes\\[,] compris entre 1 et 10 800\n",
        "\n",
        "    **Valeur par défaut** : 10800 (3 heures)\n",
        "\n",
        "    [`max_execution_time` Documentation de l'API](/docs/api/qiskit-ibm-runtime/options-sampler-options#max_execution_time)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`simulator`\">\n",
        "    Options à passer lors de la simulation d'un backend\n",
        "\n",
        "    [`simulator` Documentation de l'API](/docs/api/qiskit-ibm-runtime/options-simulator-options)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`simulator.basis_gates`\">\n",
        "        **Options** : liste des noms de portes de base vers lesquelles effectuer le dépliage\n",
        "\n",
        "        **Par défaut** : l'ensemble de toutes les portes de base prises en charge par [le simulateur Qiskit Aer](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.AerSimulator.html)\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.coupling_map`\">\n",
        "        **Choix** : Liste des interactions dirigées entre deux qubits\n",
        "\n",
        "        **Par défaut** : Aucune, ce qui signifie qu'il n'y a aucune contrainte de connectivité (connectivité totale).\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.noise_model`\">\n",
        "        **Options** : [Qiskit Aer NoiseModel](/docs/guides/build-noise-models) ou sa représentation\n",
        "\n",
        "        **Par défaut** : Aucun\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.seed_simulator`\">\n",
        "        **Valeurs possibles** : nombre entier\n",
        "\n",
        "        **Par défaut** : Aucun\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`twirling`\">\n",
        "    Options de rotation\n",
        "\n",
        "    [`twirling` Documentation de l'API](/docs/api/qiskit-ibm-runtime/options-twirling-options)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`twirling.enable_gates`\">\n",
        "        **Réponses** : Vrai, Faux\n",
        "\n",
        "        **Par défaut** : False\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.enable_measure`\">\n",
        "        **Réponses** : Vrai, Faux\n",
        "\n",
        "        **Par défaut** : False\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.num_randomizations`\">\n",
        "        **Valeurs possibles** : `auto`, nombre entier >= 1\n",
        "\n",
        "        **Par défaut** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.shots_per_randomization`\">\n",
        "        **Valeurs possibles** : `auto`, nombre entier >= 1\n",
        "\n",
        "        **Par défaut** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.strategy`\">\n",
        "        **Choix** : `active`, `active-circuit`, `active-accum`, `all`\n",
        "\n",
        "        **Par défaut** : `active-accum`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`experimental`\">\n",
        "    Options expérimentales, lorsqu'elles sont disponibles.\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "80737dfd-a1c7-4b5f-b1ea-3391dcfa61b7",
      "metadata": {},
      "source": [
        "<span id=\"options-compatibility-table\" />\n",
        "\n",
        "<span id=\"feature-compatibility\" />\n",
        "\n",
        "## Compatibilité des fonctions\n",
        "\n",
        "Certaines fonctionnalités d'exécution ne peuvent pas être utilisées conjointement dans une même tâche. Cliquez sur l'onglet correspondant pour afficher la liste des fonctionnalités incompatibles avec celle que vous avez sélectionnée :\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"Circuits dynamiques\">\n",
        "    Incompatible avec :\n",
        "\n",
        "    * Découplage dynamique\n",
        "\n",
        "    Remarques supplémentaires :\n",
        "\n",
        "    * La rotation des portes peut être appliquée aux circuits dynamiques, mais uniquement aux portes qui ne se trouvent pas à l'intérieur de blocs conditionnels. La rotation des mesures ne peut s'appliquer qu'aux mesures de terminaison.\n",
        "    * Compatible avec les portes fractionnaires lors de l'utilisation `qiskit-ibm-runtime` d' v0.42.0. ou d'une version ultérieure.\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Découplage dynamique\">\n",
        "    Incompatible avec :\n",
        "\n",
        "    * Circuits dynamiques\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Portes fractionnaires\">\n",
        "    Incompatible avec :\n",
        "\n",
        "    * Tourner la barrière\n",
        "\n",
        "    Compatible avec les circuits dynamiques lors de l'utilisation `qiskit-ibm-runtime` d' v0.42.0. ou d'une version ultérieure.\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Tournoiement de la barrière\">\n",
        "    Incompatible avec :\n",
        "\n",
        "    * Portes fractionnaires\n",
        "    * Étirements\n",
        "\n",
        "    Remarques supplémentaires :\n",
        "\n",
        "    * La rotation des portes peut être appliquée aux circuits dynamiques, mais uniquement aux portes qui ne se trouvent pas à l'intérieur de blocs conditionnels.\n",
        "    * La rotation des mesures ne peut s'appliquer qu'aux mesures en point d'extrémité.\n",
        "    * Le fait de modifier les mesures est contraire aux [`store`](/docs/api/qiskit/circuit#store) instructions.\n",
        "    * Ne fonctionne pas avec les entangleurs autres que Clifford.\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "b95e9e8e-575c-411e-8504-4ef0a00166d3",
      "metadata": {},
      "source": [
        "<span id=\"next-steps\" />\n",
        "\n",
        "## Etapes suivantes\n",
        "\n",
        "<Admonition type=\"tip\" title=\"Recommandations\">\n",
        "  * Consultez le guide «[ Introduction aux options](/docs/guides/runtime-options-overview) ».\n",
        "  * Pour plus d'informations sur ces `SamplerV2` méthodes, consultez [la documentation](/docs/api/qiskit-ibm-runtime/sampler-v2) de l'API Sampler.\n",
        "  * Choisissez [le mode d'exécution](execution-modes) dans lequel vous souhaitez exécuter votre tâche.\n",
        "  * Découvrez [la gestion du](/docs/guides/sampler-noise-management) bruit avec 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
}