{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "255dc213-977b-46de-86f4-3bab0a005340",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Inicialização do qubit\"\n",
        "description: \"Conteúdo explicativo sobre a execução da taxa de repetição dinâmica\"\n",
        "---\n",
        "\n",
        "<span id=\"qubit-initialization\" />\n",
        "\n",
        "# Inicialização do qubit\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=\"Versões do pacote\">\n",
        "    O código desta página foi desenvolvido usando os seguintes requisitos.\n",
        "    Recomendamos o uso dessas versões ou de versões mais recentes.\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": [
        "Quando um circuito é executado em uma unidade de processamento quântico (QPU) IBM®, uma redefinição implícita é normalmente inserida no início do circuito para garantir que os qubits sejam inicializados em zero. Isso é controlado pelo sinalizador `init_qubits` , definido como uma [opção de execução primitiva](/docs/api/qiskit-ibm-runtime/options-execution-options-v2).\n",
        "\n",
        "No entanto, imperfeições no processo de reinicialização podem introduzir erros na preparação do estado. Para atenuar o erro, a QPU também insere um tempo de atraso de repetição (ou `rep_delay`) entre os circuitos. Cada backend tem um padrão diferente `rep_delay`, mas geralmente é definido para equilibrar a fidelidade da reinicialização com o tempo total de execução. Execute `backend.default_rep_delay` para encontrar o padrão `rep_delay` para uma QPU específica.\n",
        "\n",
        "Como todas as QPUs IBM utilizam execução com taxa de repetição dinâmica, você pode alterar a taxa `rep_delay` para cada tarefa. Os circuitos que você envia em um trabalho primitivo são agrupados para execução na QPU. Esses circuitos são executados por meio da iteração dos circuitos para cada disparo solicitado; a execução é feita por coluna em uma matriz de circuitos e disparos, conforme ilustrado na figura a seguir.\n",
        "\n",
        "![A primeira coluna representa o disparo 0.  Os circuitos são executados na ordem de 0 a 3.  A segunda coluna representa o tiro 1.  Os circuitos são executados na ordem de 0 a 3.  As colunas restantes seguem o mesmo padrão.](https://quantum.cloud.ibm.com/docs/images/guides/repetition-rate-execution/circuits_shots_matrix1.avif \"Matriz de execução por coluna\")\n",
        "\n",
        "Como `rep_delay` é inserido entre os circuitos, cada disparo da execução encontra esse atraso. Portanto, à medida que você diminui o `rep_delay`, o tempo total de execução da QPU diminui, em detrimento do aumento da taxa de erro de preparação do estado, conforme ilustra a imagem a seguir:\n",
        "\n",
        "![Essa imagem mostra que, à medida que o valor de rep\\_delay é reduzido, a taxa de erro de preparação do estado aumenta.](https://quantum.cloud.ibm.com/docs/images/guides/repetition-rate-execution/rep_delay.avif \"Atraso de repetição versus taxa de erro\")\n",
        "\n",
        "Se você definir e `rep_delay=0` `init_qubits=False`, os circuitos se “fundirão”, pois os qubits começarão no estado final da tentativa anterior.\n",
        "\n",
        "Observe que, embora os circuitos em uma tarefa primitiva sejam agrupados para execução QPU, não há garantia quanto à ordem em que os circuitos dos PUBs são executados. Por exemplo, se você enviar `pubs=[pub1, pub2]`, os circuitos de `pub1` podem não ser executados antes dos circuitos de `pub2`. Também não há garantia de que os circuitos da mesma tarefa sejam executados como um único lote na QPU.\n",
        "\n",
        "<span id=\"specify-rep_delay-for-a-primitive-job\" />\n",
        "\n",
        "## Especifique `rep_delay` para uma tarefa primitiva\n",
        "\n",
        "<Admonition type=\"note\" title=\"Verifique o valor rep_delay para um QPU\">\n",
        "  Verifique sempre o intervalo `rep_delay` suportado para a QPU específica que você está usando. Esses valores não são os mesmos para todas as QPU e também podem mudar com o tempo.\n",
        "\n",
        "  Observe que um aumento em `rep_delay` terá um impacto direto no seu tempo de execução e consumo de capacidade.\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",
        "## Próximas etapas\n",
        "\n",
        "<Admonition type=\"tip\" title=\"Recomendações\">\n",
        "  * Experimente um exemplo no tutorial [do algoritmo de otimização aproximada quântica (QAOA)](/docs/tutorials/quantum-approximate-optimization-algorithm).\n",
        "  * Veja como [começar](/docs/guides/get-started-with-estimator) a usar o Estimator.\n",
        "  * Veja como [começar](/docs/guides/get-started-with-sampler) a usar o 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
}