Inicialização de Qubits
Versões dos pacotes
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.43.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, o processo de reset não é perfeito, levando a erros de preparação de estado. Para atenuar o erro, o sistema 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 é maior que T1 para permitir que o ambiente resete os qubits. O rep_delay padrão pode ser consultado executando backend.default_rep_delay.
Todas as QPUs da IBM usam execução com taxa de repetição dinâmica, o que permite que você altere 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.

Como o rep_delay é inserido entre os circuitos, cada shot da execução encontra esse atraso. Portanto, diminuir o rep_delay reduz o tempo total de execução na QPU, mas à custa de uma maior taxa de erro de preparação de estado, como pode ser visto na imagem a seguir:

Definir tanto rep_delay=0 quanto init_qubits=False essencialmente "mescla" os circuitos, 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. Assim, mesmo que você envie pubs=[pub1, pub2], não há garantia de que os circuitos de pub1 serão 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
# 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
- Experimente um exemplo no tutorial Algoritmo de otimização aproximada quântica (QAOA).
- Veja como começar a usar primitivas.