ジョブの制限
IBM® のQPUにジョブを送信すると、まずそのジョブがQPU上で実行可能かどうかが検証されます。これは、キューを通過するのを待った後にジョブが失敗する可能性を減らすためです。 これらのチェックには、以下に説明する制限の適用が含まれます。 これらの制限値を超えると、そのワークロードは量子ソフトウェアスタックで処理できなくなり、通常は失敗します。
- 特定のプリミティブ・オプションは、回路サイズを大きくする。 記載された限界値は、予想される回路規模の増大後にチェックされる。 特に、これらのオプションは回路サイズを大きくする:
- 動的デカップリングとゲートフォールディングZNEは、 1量子ビットあたりの最大低レベル命令数の制限のための命令に含まれる追加のゲートを導入する。
- ゲートフォールディングZNEは、 ジョブあたりの最大2量子ビットゲート数に関連する追加の2量子ビットゲートを導入する。 2量子ビットのゲート数は、ゲートフォールディングZNEで要求されるノイズ係数の合計を乗じたものである。
backend.configuration()フィールドmax_shotsとmax_experimentsによって報告された制限は、もはや関連性がなく、強制もされない。 これらのフィールドは近い将来削除される予定である。- これらの制限はジョブ単位であり、プリミティブ統一ブロック単位ではありません( PUB )。
最大実行回数
出力サイズの関係上、Samplerジョブの実行回数は最大1, 000万回までと制限されています。 実行回数は、周回数にショット数を掛けた値であり、ここでいう周回数とは、 PUB 要素がブロードキャストされた後に生成される周回数を指します。
例えば、1つの回路を持つ と形状 (4, 1) PUB のパラメータがある場合、これは4つの回路をレンダリングします。 2,000回のショットを要求した場合、実行の総数は. です 。
注意:Samplerジョブでパウリ回転を有効にした場合、ショットの総数は および shots_per_randomization num_randomizations の値に基づきます。 詳細は をご覧ください TwirlingOptions。
量子ビットあたりの低レベル命令の最大数
本サービスは**、量子ビットあたり**最大 26.8 百万回の制御システム命令を許可します。 これにより、ユーザー回路が制御システムの命令メモリ内に収まることが保証される。 以下の例は、回路をトランスパイルし、各命令の数をカウントする方法を示しています。
以下の表は、この限界値を計算する際に、システムが命令セットアーキテクチャ(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}")詳細については、 カスタムバックエンドに対するTranspileを参照してください。
回路あたりの単一量子ビットおよび二量子ビットゲートの上限数
単一量子ビットのゲートの最大数は以下の通り:
- 3000万RZゲート
- 2000万SXゲート
回路あたりの2量子ビットゲートの最大数は500万である。 これにより、ジョブが低レベル・ソフトウェア・スタックのメモリ制限内で操作できることが保証される。