アムダールの法則

マルチプロセッサによる並列処理において,1 プロセッサのときに対する性能向上比はアムダールの法則 (Amdahl’s Law) で説明することができる。

性能向上比 = 1 / {(1 - 並列化可能部の割合) + 並列化可能部の割合 / プロセッサ数}

並列化可能部の割合(高速化部分率)が 0.5 の場合,プロセッサ数をいくら増やしても性能向上比が 2 を超えることはない。

これは,アムダールの法則の本質である「性能向上には限界がある」ことを示している。

アムダールの法則とは

アムダールの法則とは,1967 年に米コンピュータ科学者のジーン・アムダール (Gene Amdahl) 氏によって提唱された。

IT 用語辞典 e-Words において,アムダールの法則の概要は次のように示されている(2024年11月23日調べ)。

アムダールの法則(Amdahl’s law)とは、コンピュータシステムの構成要素の一部を改良して得られる性能向上は、その要素が処理時間に寄与する度合いに制限されるという法則。並列処理の高速化の限界を示す法則として知られる。

(出典)IT 用語辞典 e-Words「アムダールの法則

法則を提唱したアムダール氏は,1970 年代に当時の米 IBM 社のメインフレームコンピュータ製品の互換機を開発・販売していた米アムダール社 (Amdahl Corporation) の創業者としてよく知られる。

オーバヘッドの割合

問題によっては,並列化可能部の割合(高速化部分率)ではなく,オーバーヘッドの割合(1 – 高速化部分率)で与えられることがある。

例題 マルチプロセッサの性能

1 台の CPU の性能を 1 とするとき,その CPU を n 台用いたマルチプロセッサの性能 P が,

P = n / (1 + (n - 1) * a)

で表されるとする。ここで,a はオーバヘッドを表す定数である。例えば,a = 0.1,n = 4 とすると,P ≠ 3 なので,4 台の CPU から成るマルチプロセッサの性能は約 3 になる。この式で表されるマルチプロセッサの性能には限界があり,n を幾ら大きくしても P はある値以上にならない。a = 0.1 の場合,P の上限は幾らか。

解答と解説

与えられた数式の n を無限大に接近させる極限値を計算すると,次式となる。

P = 1 / a

よって,a = 0.1 の場合,n を幾ら大きくしても P は 10 以上にならない。

a = 0.1,0.2,0.4 の場合,CPU の台数 n とマルチプロセッサの性能 P との関係を下図に示す。

  • a = 0.1 の場合,n を幾ら大きくしても P は 10 以上にならない。
  • a = 0.2 の場合,n を幾ら大きくしても P は 5 以上にならない。
  • a = 0.4 の場合,n を幾ら大きくしても P は 2.5 以上にならない。
図 CPU の台数 n とマルチプロセッサの性能 P との関係

参考 CPU の台数とマルチプロセッサの性能との関係のグラフ化

CPU の台数とマルチプロセッサの性能との関係を MATLAB / Octave でグラフ化する。

% Define the number of points and parameter values
n = logspace(0, 3, 200);
a_values = [0.1, 0.2, 0.4];

% Preallocate matrix for performance values
P = zeros(length(a_values), length(n));

% Calculate performance for each a value
for i = 1:length(a_values)
    a = a_values(i);
    P(i, :) = n ./ (1 + (n - 1) * a);
end

% Plot the results
figure(1);
plot(n, P(1, :), n, P(2, :), n, P(3, :));
xlabel('n');
ylabel('P');
grid on;
legend('a=0.1', 'a=0.2', 'a=0.4');
saveas(gcf, 'AmdalsLaw.png');

上記の MATLAB コードは,Microsoft Copilot にリファクタリングしてもらった。

更新履歴

  • 2023年4月7日 新規作成
  • 2023年9月8日 フォーカスキーフレーズ,メタディスクリプションを追加
  • 2024年11月23日 「アムダールの法則とは」を追加

アムダールの法則” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です