Saltar al contenido principal

Inicialización de qubits

Versiones de paquetes

El código de esta página fue desarrollado con los siguientes requisitos. Se recomienda usar estas versiones o versiones más recientes.

qiskit-ibm-runtime~=0.43.1

Cuando se ejecuta un circuito en una unidad de procesamiento cuántico (QPU) de IBM®, normalmente se inserta un reset implícito al comienzo del circuito para garantizar que los qubits se inicialicen en cero. Esto se controla mediante el indicador init_qubits, configurado como una opción de ejecución de primitivas.

Sin embargo, el proceso de reset no es perfecto, lo que genera errores en la preparación de estados. Para mitigar el error, el sistema también inserta un tiempo de retraso de repetición (o rep_delay) entre circuitos. Cada backend tiene un rep_delay predeterminado diferente, pero generalmente es mayor que T1 para permitir que el entorno resetee los qubits. El rep_delay predeterminado se puede consultar ejecutando backend.default_rep_delay.

Todas las QPUs de IBM utilizan la ejecución con tasa de repetición dinámica, lo que te permite cambiar el rep_delay para cada trabajo. Los circuitos que envías en un trabajo de primitivas se agrupan para su ejecución en la QPU. Estos circuitos se ejecutan iterando sobre los circuitos para cada shot solicitado; la ejecución se realiza por columnas sobre una matriz de circuitos y shots, como se ilustra en la siguiente figura.

La primera columna representa el shot 0. Los circuitos se ejecutan en orden del 0 al 3. La segunda columna representa el shot 1. Los circuitos se ejecutan en orden del 0 al 3. Las columnas restantes siguen el mismo patrón.

Dado que el rep_delay se inserta entre circuitos, cada shot de la ejecución encuentra este retraso. Por lo tanto, reducir el rep_delay disminuye el tiempo total de ejecución en la QPU, pero a costa de una mayor tasa de error en la preparación de estados, como se puede ver en la siguiente imagen:

Esta imagen muestra que a medida que se reduce el valor de rep_delay, la tasa de error en la preparación de estados aumenta.

Establecer tanto rep_delay=0 como init_qubits=False esencialmente "fusiona" los circuitos, ya que los qubits comenzarán en el estado final del shot anterior.

Ten en cuenta que, aunque los circuitos en un trabajo de primitivas se agrupan para la ejecución en la QPU, no hay garantía sobre el orden en que se ejecutan los circuitos de los PUBs. Por lo tanto, aunque envíes pubs=[pub1, pub2], no hay garantía de que los circuitos de pub1 se ejecuten antes que los de pub2. Tampoco hay garantía de que los circuitos del mismo trabajo se ejecuten como un único lote en la QPU.

Especificar rep_delay para un trabajo de primitivas

# 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 pasos

Recomendaciones