SLnavkのブログ

組み込みソフト開発をしています

アムダールの法則

問題

マルチプロセッサによる並列処理において,1プロセッサのときに対する性能向上比はアムダールの法則で説明することができる。性能向上比に関する記述のうち,適切なものはどれか。
[アムダールの法則]


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

ア. プロセッサ数が一定の場合,性能向上比は並列化可能部の割合に比例する。
イ. プロセッサ数を増やした場合,性能向上比は並列化可能部の割合に反比例する。
ウ. 並列化可能部の割合が0.5の場合は,プロセッサ数をいくら増やしても性能向上比が2を超えることはない。
エ. 並列化可能部の割合が最低0.9以上であれば,性能向上比はプロセッサ数の半分以上の値となる。

出典: 平成27年秋期 午前Ⅱ 問23

爆速解法

選択肢を頭から確認していく。
アについて。プロセッサ数が定数の場合を考えるから、変数となる並列化可能部の割合で式をまとめると以下の通り。これは比例関係でないため不適。

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

イについて。プロセッサが多い場合、並列可能な部分が多いほど、性能向上が見込まれる。そのため反比例ではないため不適。

ウについて。割合が0.5、プロセッサ数が無限の時性能向上比は2となる。よって適切。

エについて。ウで述べた通り、アムダールの法則ではプロセッサをいくら増やしても性能の上限が出てくる。並列化可能部の割合が0.9の時性能向上比の上限は10である。そのため、プロセッサ数100としても性能向上比は10を超えない。これはエの主張と矛盾するため不適。

じっくり解説

H30午前II問23に類題がある。ウの極限の計算について以下参照。

マルチプロセッサの性能上限 - SLnavkのブログ

プロセッサはいくら増やしても、並列化ができない処理がボトルネットとなり性能上限が存在する事がキーポイント。

ハンバーガー店の従業員(=プロセッサの数)が無限にいたとしても、オーダーを受けてから調理して提供する場合、調理時間(パティを焼く時間は並列不可能だろう)がボトルネックとなり提供時間が0秒になることはない。そんなイメージ。
客が頼みそうなものを事前に用意しておくことで、オーダーを受ける前に調理を開始するような技術は分岐予測など別にある。