Limites de tarefa
Quando você envia um trabalho para uma QPU do IBM®, ele é primeiro validado para garantir que possa ser executado na QPU, a fim de reduzir a probabilidade de que o trabalho falhe depois de você ter esperado que ele fosse processado na fila. Essas verificações incluem a aplicação dos limites descritos a seguir. Se esses limites forem excedidos, essa carga de trabalho não poderá ser processada pela pilha de software quântico e, normalmente, falhará.
- Algumas opções primitivas aumentam o tamanho do circuito. Os limites descritos são verificados após o aumento esperado no tamanho do circuito. Em particular, essas opções aumentam o tamanho do circuito:
- O desacoplamento dinâmico e o gate-folding ZNE introduzem portas adicionais que são incluídas nas instruções para o limite do número máximo de instruções de baixo nível por qubit.
- O Gate-folding ZNE introduz portas de dois qubits adicionais relevantes para o limite do número máximo de portas de dois qubits por trabalho. O número de portas de dois qubits é multiplicado pela soma dos fatores de ruído solicitados no gate-folding ZNE.
- Os limites informados pelos campos
backend.configuration()max_shotsemax_experimentsnão são mais relevantes ou aplicados. Esses campos serão removidos em um futuro próximo. - Esses limites são por trabalho, não por Bloco Primitivo Unificado ( PUB ).
Execuções máximas
Devido ao tamanho da saída, são permitidas, no máximo, 10 milhões de execuções para tarefas do Sampler. O número de execuções é igual ao número de circuitos multiplicado pelo número de disparos, sendo que os circuitos são aqueles gerados após a transmissão de elementos d PUB.
Por exemplo, se você tiver um circuito e PUB parâmetros com forma (4, 1), isso renderia 4 circuitos. Se você solicitou 2.000 tiros, então o número total de execuções é .
Observe que, se você ativar o Pauli-twirling em sua tarefa do Sampler, o número total de disparos será baseado nos valores num_randomizations shots_per_randomization e. Veja TwirlingOptions para mais detalhes.
Número máximo de instruções de baixo nível por qubit
O serviço permite até 26.8 milhões de instruções do sistema de controle por qubit. Isso garante que os circuitos do usuário se encaixem na memória de instruções do sistema de controle. O exemplo abaixo mostra como transpilá-lo e contar quantas instruções existem.
A tabela a seguir descreve como o sistema traduz as instruções do circuito da arquitetura do conjunto de instruções (ISA) para controlar as instruções do sistema ao calcular esse limite.
Instrução | Contagem |
|---|---|
rz | 1 |
delay | 1 |
sx | 2 |
x | 2 |
cx | 5 |
cz | 5 |
ecr | 5 |
measure | 22 |
reset | 17 |
init | 50 |
Essa tabela captura a heurística usada na validação e não reflete o número exato de instruções usadas para implementar uma operação.
Exemplo
Defina circuitos, transpile-os e obtenha uma contagem de quantas portas serão executadas.
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 obter detalhes completos, consulte Transpile contra backends personalizados.
Número máximo de portas de um e dois qubits por circuito
O número máximo de portas de um único qubit é o seguinte:
- 30 milhões de portões RZ
- 20 milhões de portões SX
O número máximo de portas de dois qubits por circuito é de cinco milhões. Isso garante que o trabalho possa ser manipulado dentro dos limites de memória da pilha de software de baixo nível.