Inicialização do qubit
O código desta página foi desenvolvido usando os seguintes requisitos. Recomendamos o uso dessas versões ou de versões mais recentes.
qiskit-ibm-runtime~=0.47.0
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.
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.
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.

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:

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.
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.
Especifique rep_delay para uma tarefa primitiva
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.
Observe que um aumento em rep_delay terá um impacto direto no seu tempo de execução e consumo de capacidade.
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.0005Próximas etapas
- Experimente um exemplo no tutorial do algoritmo de otimização aproximada quântica (QAOA).
- Veja como começar a usar o Estimator.
- Veja como começar a usar o Sampler.