強スケーリングと弱スケーリング
プロセス数を増やしても速くならない原因を、Amdahlの法則とGustafsonの法則の使い分けで切り分けられるようになります。
- 1.強スケーリングは問題サイズ固定でプロセス数を増やす評価で、逐次部分の割合がAmdahlの法則により上限を決めてしまう。
- 2.弱スケーリングはプロセス数に比例して問題サイズも増やす評価で、Gustafsonの法則により逐次部分の相対的な影響が小さくなる。
- 3.実システムでは通信オーバーヘッドとロードバランスの崩れが理論上限からの乖離を生むため、効率(efficiency)を併記して評価する。
スケーリングという評価軸がなぜ必要か
並列計算機システムの性能は「コア数を2倍にすれば速度も2倍になる」という単純な話では済みません。プロセス数(あるいはコア数)P を増やしたときに実行時間がどう変化するかを定量的に評価する枠組みがスケーラビリティ分析です。HPC(High Performance Computing)の文脈では、評価の目的に応じて**強スケーリング(strong scaling)と弱スケーリング(weak scaling)**という、前提が根本的に異なる2つの指標を使い分けます。
この区別が重要なのは、両者が答える問いが違うからです。強スケーリングは「同じ問題をより多くのプロセスで解けば、どれだけ速く終わるか」を問い、弱スケーリングは「プロセスを増やした分だけ問題を大きくしたら、単位時間あたりに解ける量はどれだけ伸びるか」を問います。前提を混同すると、同じベンチマーク結果でも真逆の結論を導きかねません。
強スケーリング(strong scaling)とAmdahlの法則
強スケーリングは、問題サイズ(総データ量・総計算量)を固定したままプロセス数 P を増やし、実行時間がどこまで短縮されるかを見る評価です。理想的には P 倍のプロセスで実行時間が 1/P になりますが、現実にはプログラムの一部に並列化できない逐次区間(初期化、I/O、縮約演算の直列部分など)が必ず存在します。
この逐次区間の割合を f(0以上1以下、並列化不可能な部分の比率)とすると、Amdahlの法則は次のように速度向上(speedup)の上限を与えます。
Amdahlの法則
S(P) = 1 / ( f + (1 - f) / P )
f : 逐次実行しかできない部分の比率
1-f : 完全並列化できる部分の比率
P : プロセス数
P → 無限大 のとき
S(P) → 1 / f (速度向上の理論上限)
この式が示す核心は、逐次部分がわずかでも存在すれば、プロセス数をいくら増やしても速度向上には上限が生まれるという点です。たとえば f が5%(0.05)なら、P をどれだけ増やしても速度向上は最大20倍にしかなりません。これは単なる近似ではなく、P が無限大に発散する極限を取った結果として厳密に導かれる上限です。
f = 0.05 の場合の速度向上
P = 16 → S ≈ 9.1倍
P = 64 → S ≈ 15.4倍
P = 1024 → S ≈ 19.6倍
P = 無限大 → S → 20倍(上限)
強スケーリングでは、P を増やすほど1プロセスあたりのデータ量・計算量が減っていくため、通信や同期にかかるオーバーヘッドが計算時間に対して相対的に増大します。これが逐次部分の比率 f を実効的に押し上げ、理論値よりもさらに早く頭打ちになる要因です。
速度向上だけでは「頭打ちに近づいている」ことが直感的にわかりにくいため、実務では効率 E(P) = S(P) / P も併記します。理想は E(P) = 1(100%)で、Pの増加とともにEが1から下がっていく度合いが、並列化のコストパフォーマンスの悪化を表します。
弱スケーリング(weak scaling)とGustafsonの法則
弱スケーリングは、プロセス数 P に比例して問題サイズも大きくする評価です。たとえば1プロセスあたりの担当データ量を一定に保ったまま P を増やすことで、「より多くの計算資源を使って、より大きな問題を同じ時間で解けるか」を測ります。数値天気予報のメッシュを細かくする、分子動力学の粒子数を増やすなど、資源が増えたら問題そのものを大きくするのが自然なHPCの多くの応用に対応します。
Gustafsonの法則は、この設定における速度向上を次のように定式化します。
Gustafsonの法則
S(P) = f + (1 - f) * P
f : 逐次部分の比率(Pプロセスで実行した場合の実行時間に占める割合)
1-f : 並列部分の比率
P : プロセス数
Amdahlの法則との数式上の違いは小さく見えますが、意味は対照的です。Amdahlでは P が分母に効いて頭打ちになるのに対し、Gustafsonでは P が分子に効いて線形に近い伸びを許します。これは前提の違いによるものです。強スケーリングでは逐次部分の絶対時間は P によらず一定と仮定するのに対し、弱スケーリングでは並列部分の仕事量が P に比例して増える一方、逐次部分の絶対時間は据え置かれるため、全体に占める逐次部分の相対比率が P の増加とともに縮んでいきます。
| 観点 | 強スケーリング(Amdahl) | 弱スケーリング(Gustafson) |
|---|---|---|
| 問題サイズ | 固定 | プロセス数に比例して増加 |
| 問いの形 | 同じ問題をどれだけ速く解けるか | 同じ時間でどれだけ大きな問題を解けるか |
| 速度向上の式 | S(P) = 1 / (f + (1-f)/P) | S(P) = f + (1-f)*P |
| Pを無限大にした挙動 | 1/f に収束(上限あり) | Pに比例して増加し続ける |
| 支配的な制約 | 逐次区間の絶対時間 | 問題サイズ拡大に伴う通信・メモリ帯域 |
両式ともに f を「逐次部分の比率」と呼びますが、Amdahlの f は問題サイズ固定時の比率、Gustafsonの f はプロセス数Pで実行した際の比率です。同じ記号を使う教科書が多いため、どちらの実行条件における比率かを常に明示して混同を避ける必要があります。
実際のHPCシステムでの評価方法
実機での計測では、理論式どおりの挙動にはなりません。理由は主に3つあります。
第一に、通信オーバーヘッドです。プロセス数が増えるほど、集団通信(all-reduce、all-to-allなど)や境界データ交換の頻度・複雑度が増し、特に強スケーリングでは1プロセスあたりの計算量が減る一方で通信量は相対的に増えるため、通信が支配的なボトルネックに転じます。ネットワークの遅延(レイテンシ)が支配的になる小規模データでは、帯域幅よりもメッセージ起動コストが効いてきます。
第二に、ロードバランスの崩壊です。領域分割(ドメイン分割)による並列化では、境界条件や不均一なメッシュ密度、適応格子細分化(AMR)などにより、プロセス間で担当計算量に偏りが生じます。もっとも遅いプロセスが全体の同期点を遅らせるため、実測の速度向上は理論値より低くなります。
第三に、メモリ帯域とキャッシュ効果です。弱スケーリングで1ノードあたりの問題サイズを固定しても、ノード内のコア数を増やす場合はメモリコントローラやキャッシュを複数コアで共有するため、コアあたりの実効帯域が下がり、計算がメモリ律速(メモリバウンド)の場合は理想的な線形性から外れます。
これらを踏まえ、実務での評価は次のように行います。
実測評価の手順(概念)
1. ベースライン実行時間 T(P0) を最小プロセス数 P0 で計測
2. Pを段階的に増やして T(P) を計測(強スケーリング)
または 問題サイズもPに比例させてT(P)を計測(弱スケーリング)
3. 速度向上 S(P) = T(P0) * P0 / T(P) を算出
4. 効率 E(P) = S(P) / P を算出し、1に対する乖離を見る
5. 通信時間・計算時間・待機時間の内訳をプロファイラで分解し、
ボトルネックが計算律速か通信律速かロードバランスかを切り分ける
実測が理論の速度向上曲線を下回るのは異常ではなく通常です。重要なのは、乖離の主因が「逐次部分(f)の過小評価」なのか「通信オーバーヘッドの増大」なのか「ロードバランスの崩れ」なのかを、プロファイリングで切り分けられるかどうかです。切り分けられて初めて、アルゴリズム変更・通信パターン改善・分割方式変更のどれが有効かを判断できます。
まとめ
- 強スケーリングは問題サイズ固定でプロセス数
Pを増やす評価で、Amdahlの法則により速度向上は逐次部分の比率fから決まる1/fという上限に収束する。 - 弱スケーリングはプロセス数に比例して問題サイズも増やす評価で、Gustafsonの法則により逐次部分の相対的な影響が小さくなり、速度向上は
Pにほぼ比例して伸び続けうる。 - 同じ
fという記号でも、強スケーリングでは問題サイズ固定時の比率、弱スケーリングではプロセス数Pで実行した際の比率を指しており、意味が異なる点に注意が必要。 - 実システムでは通信オーバーヘッド・ロードバランスの崩壊・メモリ帯域の制約により理論上限からの乖離が生じるため、速度向上に加えて効率を計測し、プロファイリングでボトルネックの種類を切り分けることが評価の実務上の要点となる。
HPC・科学技術計算 Article
強スケーリングと弱スケーリングを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
HPC
比較で見る軸
難易度: advanced / カテゴリ: HPC・科学技術計算 / タグ数: 5
導入後に効く点
弱スケーリングはプロセス数に比例して問題サイズも増やす評価で、Gustafsonの法則により逐次部分の相対的な影響が小さくなる。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- HPC・科学技術計算
- タグ数
- 5
判断チェックリスト
- 自社の用途が「HPC / 並列計算」に近いか確認する。
- 強みである「強スケーリングは問題サイズ固定でプロセス数を増やす評価で、逐次部分の割合がAmdahlの法則により上限を決めてしまう。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。