Saltar al contenido principal
Este proyecto está en fase beta. ¿Encontraste un error? Abre un issue en GitHub. ¿Tienes una pregunta o una idea? Pregunta en Discussions — ¡nos encantaría tu opinión!
¿Cómo es la calidad de la traducción en esta página?

Límites de trabajos

Cuando envías un trabajo a una QPU de IBM®, primero se envía al servicio de validación de trabajos. Este servicio intenta asegurarse de que el trabajo pueda ejecutarse en la QPU para reducir la probabilidad de que tu trabajo falle después de que hayas esperado a que pase por la cola. Estas comprobaciones incluyen el cumplimiento de los límites que se describen a continuación. Si se superan estos límites, esa carga de trabajo no podrá ser procesada por la pila de software cuántico y generalmente fallará.

Notas
  • Ciertas opciones primitivas aumentan el tamaño del circuito. Los límites descritos se comprueban después del aumento esperado en el tamaño del circuito. En particular, estas opciones aumentan el tamaño del circuito:
  • Los límites reportados por los campos max_shots y max_experiments de backend.configuration() ya no son relevantes ni se aplican. Estos campos se eliminarán en un futuro próximo.
  • Estos límites son por trabajo, no por Primitive Unified Bloc (PUB).

Número máximo de ejecuciones​

Se permiten como máximo 10 millones de ejecuciones para los trabajos de Sampler, debido al tamaño de la salida. El número de ejecuciones es el número de circuitos multiplicado por el número de shots, donde los circuitos son los generados después de que se difunden los elementos PUB.

Por ejemplo, si tienes un PUB con un circuito y parámetros con forma (4, 1), esto daría lugar a 4 circuitos. Si solicitaste 2.000 shots, entonces el número total de ejecuciones es 4×2,000=8,0004 \times 2,000 = 8,000.

Ten en cuenta que si habilitas el Pauli-twirling en tu trabajo de Sampler, el número total de shots se basa en los valores de num_randomizations y shots_per_randomization. Consulta TwirlingOptions para más detalles.

Número máximo de instrucciones de bajo nivel por qubit​

El servicio permite hasta 26,8 millones de instrucciones del sistema de control por qubit. Esto garantiza que los circuitos del usuario quepan dentro de la memoria de instrucciones del sistema de control. El siguiente ejemplo muestra cómo transpilar un circuito y contar cuántas instrucciones de cada tipo hay.

La siguiente tabla describe cómo el sistema traduce las instrucciones del circuito de la arquitectura del conjunto de instrucciones (ISA) a instrucciones del sistema de control al calcular este límite.

InstrucciónRecuento
rz1
delay1
sx2
x2
cx5
cz5
ecr5
measure10
reset17
init50
nota

Esta tabla recoge la heurística utilizada en la validación y no refleja el número exacto de instrucciones empleadas para implementar una operación.

Ejemplo​

Define circuitos, transpílalos y obtén un recuento de cuántas puertas se ejecutarán.

from qiskit import QuantumCircuit
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService

num_qubits = 50
ghz = QuantumCircuit(num_qubits)
ghz.h(range(num_qubits))
ghz.cx(0, range(1, num_qubits))
op_counts = ghz.count_ops()

# Choose the least busy backend
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

pm = generate_preset_pass_manager(optimization_level=3, backend=backend)
transpiled_ghz = pm.run(ghz)
op_counts = transpiled_ghz.count_ops()

print(f"Post-Transpilation gates: {op_counts}")

Para ver todos los detalles, consulta Transpilar con backends personalizados.

Número máximo de puertas de uno y dos qubits por circuito​

El número máximo de puertas de un solo qubit es el siguiente:

  • 30 millones de puertas RZ
  • 20 millones de puertas SX

El número máximo de puertas de dos qubits por circuito es de cinco millones. Esto garantiza que el trabajo pueda manipularse dentro de los límites de memoria de la pila de software de bajo nivel.