アムダールの法則とグスタフソンの法則の違い:前提・式・スケーリング・例を比較
どちらも、プロセッサを増やしたときにどれだけ速くなるかを見積もる法則ですが、前提が違います。アムダールの法則は、問題の大きさを固定して、同じ仕事を速く終わらせることを考えるので、並列にできない部分が速度向上の上限を決めます。グスタフソンの法則は、実行時間を固定して、プロセッサを増やした分だけ大きな問題を解くことを考えるので、速度向上はプロセッサの数にほぼ比例して増えます。2つは矛盾するのではなく、違う問いに答えています。
| 項目 | アムダールの法則 | グスタフソンの法則 |
|---|---|---|
| 固定するもの | 問題の大きさ(全体の仕事量) | 実行時間(プロセッサ1つあたりの仕事量) |
| 問い | 同じ問題を、どれだけ速く解けるか | 同じ時間で、どれだけ大きな問題を解けるか |
| 式(Nはプロセッサ数) | S = 1 / ((1 − p) + p / N) | S = s + (1 − s) × N = N − s × (N − 1) |
| 割合の測り方 | pは、1台で実行したときに並列化できる部分が占める時間の割合 | sは、N台で並列に実行したときに逐次部分が占める時間の割合 |
| Nを増やしたとき | 1 / (1 − p) で頭打ちになる | Nにほぼ比例して増え続ける |
| 計算例 | p = 0.95 なら、N = 100 で約17倍、Nを無限大にしても20倍が上限 | s = 0.05 なら、N = 100 で約95倍 |
| 対応するスケーリング | 強いスケーリング | 弱いスケーリング |
| 見え方 | 悲観的。わずかな逐次部分が上限を決める | 楽観的。問題を大きくすれば並列化が報われる |
| 当てはまる例 | 決まった大きさの入力をすぐ処理したいとき。1枚の画像の処理、対話的な応答など | 格子を細かくしたシミュレーション、より大きなデータやモデルを同じ時間で処理したいとき |
| 共通して入っていないもの | 通信・同期のオーバーヘッド、負荷の偏り、メモリ帯域の不足 | 通信・同期のオーバーヘッド、負荷の偏り、メモリ帯域の不足 |
数値は代表的な目安で、世代や製品によって異なります。