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á.
- 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:
- El desacoplamiento dinámico y el ZNE de plegado de Gates introducen Gates 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 Gates introduce Gates de dos Qubits adicionales relevantes para el límite de Número máximo de Gates de dos Qubits por trabajo. El número de Gates de dos Qubits se multiplica por la suma de los factores de ruido solicitados en el ZNE de plegado de Gates.
- 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 (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 .
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ó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 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.