ジョブの制限
IBM® QPUにジョブを送信すると、まずジョブ検証サービスに送られます。このサービスは、ジョブがキューを通過してから失敗するのを待たずに済むよう、QPU上でジョブが実行できることを事前に確認しようとします。これらのチェックには、以下に説明する制限の適用が含まれます。これらの制限を超えると、そのワークロードは量子ソフトウェアスタックでは処理できず、通常は失敗します。
- 一部のプリミティブオプションは回路サイズを増加させます。説明されている制限は、回路サイズの予想される増加_後_にチェックされます。特に、以下のオプションが回路サイズを増加させます。
- ダイナミカルデカップリングとゲートフォールディングZNEは、クビットあたりの低レベル命令の最大数の制限における命令に含まれる追加ゲートを導入します。
- ゲートフォールディングZNEは、ジョブあたりの2量子ビットゲートの最大数の制限に関連する追加の2量子ビットゲートを導入します。2量子ビットゲートの数は、ゲートフォールディングZNEで要求されるノイズ係数の合計を乗算します。
backend.configuration()フィールドmax_shotsおよびmax_experimentsによって報告される制限は、現在は適用されておらず、廃止されています。これらのフィールドは近い将来削除される予定です。- これらの制限は、Primitive Unified Bloc(PUB)ごとではなく、ジョブごとです。
最大実行回数
Samplerジョブに対しては、最大で1,000万回の実行が許可されます(Estimatorジョブはより小さなサブジョブに分割できるため、この制限は適用されません)。実行回数は、回路数とショット数の積です。ここでの回路とは、PUB要素がブロードキャストされた後に生成されるものです。
例えば、1つの回路とシェイプ (4, 1) のパラメーターを持つPUBがある場合、4つの回路が生成されます。2,000ショットを要求した場合、実行の総数は になります。
Samplerジョブでパウリツワリングを有効にした場合、ショットの総数は num_randomizations と shots_per_randomization の値に基づきます。詳細については、TwirlingOptionsを参照してください。
クビットあたりの低レベル命令の最大 数
サービスでは、クビットあたり最大2,680万件の制御システム命令が許可されています。これにより、ユーザーの回路が制御システムの命令メモリ内に収まることが保証されます。以下の例では、回路をトランスパイルして、各命令の数をカウントする方法を示します。
以下の表は、この制限を計算する際に、システムが命令セットアーキテクチャ(ISA)の回路命令を制御システム命令に変換する方法を説明しています。
| 命令 | カウント |
|---|---|
rz | 1 |
delay | 1 |
sx | 2 |
x | 2 |
cx | 5 |
cz | 5 |
ecr | 5 |
measure | 10 |
reset | 17 |
init | 50 |
この表は検証に使用されるヒューリスティックを示しており、操作を実装するために使用される命令の正確な数を反映するものではありません。
例
回路を定義し、トランスパイルして、実行されるゲートの数をカウントします。
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万です。これにより、ジョブが低レベルソフトウェアスタックのメモリ制限内で処理できることが保証されます。