Pular para o conteúdo principal

Inicialização de Qubits

Package versions

O código desta página foi desenvolvido usando os seguintes requisitos. Recomendamos usar essas versões ou versões mais recentes.

qiskit-ibm-runtime~=0.46.1

Quando um circuito é executado em uma unidade de processamento quântico (QPU) da IBM®, um reset implícito é tipicamente inserido no início do circuito para garantir que os qubits sejam inicializados em zero. Isso é controlado pela flag init_qubits, definida como uma opção de execução de primitiva.

No entanto, imperfeições no processo de reset podem introduzir erros de preparação de 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 rep_delay padrão diferente, mas geralmente é definido para equilibrar a fidelidade do reset em relação ao tempo total de execução. Execute backend.default_rep_delay para encontrar o rep_delay padrão de uma QPU específica.

Como todas as QPUs da IBM usam execução com taxa de repetição dinâmica, você pode alterar o rep_delay para cada job. Os circuitos que você envia em um job de primitiva são agrupados para execução na QPU. Esses circuitos são executados iterando sobre os circuitos para cada shot solicitado; a execução é feita por coluna sobre uma matriz de circuitos e shots, conforme ilustrado na figura a seguir.

A primeira coluna representa o shot 0. Os circuitos são executados em ordem, de 0 a 3. A segunda coluna representa o shot 1. Os circuitos são executados em ordem, de 0 a 3. As colunas restantes seguem o mesmo padrão.

Como o rep_delay é inserido entre os circuitos, cada shot da execução encontra esse atraso. Portanto, ao diminuir o rep_delay, o tempo total de execução na QPU diminui, à custa do aumento da taxa de erro de preparação de estado, conforme ilustra a imagem a seguir:

Esta imagem mostra que, à medida que o valor de rep_delay é reduzido, a taxa de erro de preparação de estado aumenta.

Se você definir tanto rep_delay=0 quanto init_qubits=False, os circuitos se "mesclam", já que os qubits começarão no estado final do shot anterior.

Observe que, embora os circuitos em um job de primitiva sejam agrupados para execução na QPU, não há garantia sobre a 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 de pub2. Também não há garantia de que circuitos do mesmo job serão executados como um único lote na QPU.

Especificar rep_delay para um job de primitiva

Verify the rep_delay value for a QPU

Sempre verifique o intervalo de rep_delay compatível com a QPU específica que você está usando. Esses valores não são iguais para todas as QPUs e também podem mudar com o tempo.

Observe que um aumento no rep_delay terá um impacto direto no seu tempo de execução e no consumo de capacidade.

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
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.0005

Próximos passos

Recomendações