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á.
- 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:
- El desacoplamiento dinámico y el ZNE de plegado de puertas introducen puertas adicionales que se incluyen en las instrucciones para el límite de Número máximo de instrucciones de bajo nivel por qubit.
- El ZNE de plegado de puertas introduce puertas de dos qubits adicionales relevantes para el límite de Número máximo de puertas de dos qubits por trabajo. El número de puertas de dos qubits se multiplica por la suma de los factores de ruido solicitados en el ZNE de plegado de puertas.
- Los límites reportados por los campos
max_shotsymax_experimentsdebackend.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 .
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ón | Recuento |
|---|---|
rz | 1 |
delay | 1 |
sx | 2 |
x | 2 |
cx | 5 |
cz | 5 |
ecr | 5 |
measure | 10 |
reset | 17 |
init | 50 |
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.