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.46.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, las imperfecciones en el proceso de reset pueden introducir errores en la preparación de estados. Para mitigar el error, la QPU 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 se establece para equilibrar la fidelidad del reset con el tiempo total de ejecución. Ejecuta backend.default_rep_delay para encontrar el rep_delay predeterminado de una QPU específica.

Dado que todas las QPUs de IBM utilizan la ejecución con tasa de repetición dinámica, puedes 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, al reducir el rep_delay, el tiempo total de ejecución en la QPU disminuye, a costa de aumentar la tasa de error en la preparación de estados, como ilustra 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.

Si estableces tanto rep_delay=0 como init_qubits=False, los circuitos se "fusionan", 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 ejemplo, si envías pubs=[pub1, pub2], es posible que los circuitos de pub1 no 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

Verifica el valor de rep_delay para una QPU

Verifica siempre el rango de rep_delay admitido para la QPU específica que estás usando. Estos valores no son los mismos para cada QPU y también pueden cambiar con el tiempo.

Ten en cuenta que un aumento en el rep_delay tendrá un impacto directo en tu tiempo de ejecución y en el consumo de capacidad.

# 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