メインコンテンツへスキップ

ジョブの制限

IBM® QPUにジョブを送信すると、まずジョブ検証サービスに送られます。このサービスは、ジョブがキューを通過してから失敗するのを待たずに済むよう、QPU上でジョブが実行できることを事前に確認しようとします。これらのチェックには、以下に説明する制限の適用が含まれます。これらの制限を超えると、そのワークロードは量子ソフトウェアスタックでは処理できず、通常は失敗します。

注意
  • 一部のプリミティブオプションは回路サイズを増加させます。説明されている制限は、回路サイズの予想される増加_後_にチェックされます。特に、以下のオプションが回路サイズを増加させます。
  • backend.configuration() フィールド max_shots および max_experiments によって報告される制限は、現在は適用されておらず、廃止されています。これらのフィールドは近い将来削除される予定です。
  • これらの制限は、Primitive Unified Bloc(PUB)ごとではなく、ジョブごとです。

最大実行回数

Samplerジョブに対しては、最大で1,000万回の実行が許可されます(Estimatorジョブはより小さなサブジョブに分割できるため、この制限は適用されません)。実行回数は、回路数とショット数の積です。ここでの回路とは、PUB要素がブロードキャストされた後に生成されるものです。

例えば、1つの回路とシェイプ (4, 1) のパラメーターを持つPUBがある場合、4つの回路が生成されます。2,000ショットを要求した場合、実行の総数は 4×2,000=8,0004 \times 2,000 = 8,000 になります。

Samplerジョブでパウリツワリングを有効にした場合、ショットの総数は num_randomizationsshots_per_randomization の値に基づきます。詳細については、TwirlingOptionsを参照してください。

クビットあたりの低レベル命令の最大数

サービスでは、クビットあたり最大2,680万件の制御システム命令が許可されています。これにより、ユーザーの回路が制御システムの命令メモリ内に収まることが保証されます。以下の例では、回路をトランスパイルして、各命令の数をカウントする方法を示します。

以下の表は、この制限を計算する際に、システムが命令セットアーキテクチャ(ISA)の回路命令を制御システム命令に変換する方法を説明しています。

命令カウント
rz1
delay1
sx2
x2
cx5
cz5
ecr5
measure10
reset17
init50
備考

この表は検証に使用されるヒューリスティックを示しており、操作を実装するために使用される命令の正確な数を反映するものではありません。

回路を定義し、トランスパイルして、実行されるゲートの数をカウントします。

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}")

詳細については、カスタムバックエンドに対するトランスパイルを参照してください。

回路あたりの1量子ビットおよび2量子ビットゲートの最大数

1量子ビットゲートの最大数は以下のとおりです。

  • RZゲート:3,000万
  • SXゲート:2,000万

回路あたりの2量子ビットゲートの最大数は500万です。これにより、ジョブが低レベルソフトウェアスタックのメモリ制限内で処理できることが保証されます。