Saltar al contenido principal

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 que no tengas que esperar a que pase por la cola y luego falle. 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 Circuit. Los límites descritos se comprueban después del aumento esperado en el tamaño del Circuit. En particular, estas opciones aumentan el tamaño del Circuit:
  • 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 (los trabajos de Estimator se pueden dividir en sub-trabajos más pequeños, por lo que este límite no aplica). El número de ejecuciones es el número de Circuits multiplicado por el número de shots, donde los Circuits son los generados después de que se difunden los elementos PUB.

Por ejemplo, si tienes un PUB con un Circuit y parámetros con forma (4, 1), esto generaría 4 Circuits. 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 Circuits del usuario quepan dentro de la memoria de instrucciones del sistema de control. El siguiente ejemplo muestra cómo transpilar un Circuit y contar cuántas instrucciones de cada tipo hay.

La siguiente tabla describe cómo el sistema traduce las instrucciones del Circuit 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 Circuits, transpílalos y obtén un recuento de cuántos Gates 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 Gates de uno y dos Qubits por Circuit

El número máximo de Gates de un solo Qubit es el siguiente:

  • 30 millones de Gates RZ
  • 20 millones de Gates SX

El número máximo de Gates de dos Qubits por Circuit 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.