Skip to main content
IBM Quantum Platform

Inicialización de qubits

  • El código de esta página se ha desarrollado teniendo en cuenta los siguientes requisitos. Recomendamos utilizar estas versiones o versiones más recientes.

    qiskit-ibm-runtime~=0.47.0
    

Cuando se ejecuta un circuito en una unidad de procesamiento cuántico (QPU) IBM®, se suele insertar un reinicio implícito al principio del circuito para garantizar que los qubits se inicializan a cero. Esto se controla mediante la bandera init_qubits , establecida como una opción de ejecución primitiva.

Sin embargo, las imperfecciones en el proceso de reinicio pueden introducir errores en la preparación del estado. Para paliar el error, la QPU también inserta un tiempo de retardo de repetición (o rep_delay) entre los circuitos. Cada backend tiene un valor predeterminado diferente rep_delay, pero normalmente se configura para equilibrar la fidelidad del restablecimiento con el tiempo total de ejecución. Ejecutar backend.default_rep_delay para encontrar el valor predeterminado rep_delay para una QPU específica.

Dado que todas las QPU de IBM utilizan una ejecución con frecuencia de repetición dinámica, puede cambiar la rep_delay para cada trabajo. Los circuitos que envías en un trabajo primitivo se agrupan para su ejecución en la QPU. Estos circuitos se ejecutan iterando sobre los circuitos para cada disparo solicitado; la ejecución se realiza por columnas sobre una matriz de circuitos y disparos, como se ilustra en la siguiente figura.

La primera columna representa el disparo 0.  Los circuitos se ejecutan en orden de 0 a 3.  La segunda columna representa la toma 1.  Los circuitos se ejecutan en orden de 0 a 3.  Las demás columnas siguen el mismo patrón.
Matriz de ejecución por columnas

Debido a que rep_delay se inserta entre circuitos, cada disparo de la ejecución encuentra este retraso. Por lo tanto, a medida que se reduce el rep_delay, el tiempo total de ejecución de la QPU disminuye, a costa de aumentar la tasa de error de preparación del estado, como ilustra la siguiente imagen:

Esta imagen muestra que, a medida que se reduce el valor de rep_delay, aumenta la tasa de error en la preparación del estado.
Retardo de repetición frente a tasa de error

Si se establecen tanto rep_delay=0 como init_qubits=False, los circuitos se «fusionan», ya que los qubits comenzarán en el estado final de la toma anterior.

Tenga en cuenta que, aunque los circuitos de un trabajo primitivo se agrupan para su ejecución en QPU, no hay garantía sobre el orden en que se ejecutan los circuitos de los PUB. Por ejemplo, si envías pubs=[pub1, pub2], es posible que los circuitos pub1 de 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 primitivo

Verifique el valor rep_delay para una QPU

Verifique siempre el rango rep_delay compatible con la QPU específica que esté utilizando. Estos valores no son los mismos para todas las QPU y también pueden cambiar con el tiempo.

Tenga en cuenta que un aumento en rep_delay tendrá un impacto directo en su tiempo de ejecución y consumo de capacidad.

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
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.