|
|
[[ファイル:AmdahlsLaw.svg|thumb|right|300px|複数のプロセッサを使って並列計算してプログラムの高速化を図る場合、そのプログラムの逐次的部分は、制限を受ける。例えば、仮にプログラムの95%を並列化できたとしても、残りの5%は並列処理ができないのだ、という設定があっためならば(その設定がどの程度妥当であるかはさておき)、どれだけプロセッサ数を増やしたとしても、図で示したように20倍以上には高速化しない。]]
'''アムダールの法則'''(アムダールのほうそく、Amdahl's law)は、ある計算機システムとその対象とする計算についてのモデルにおいて、その計算機の並列度を上げた場合に、全体として期待並列化できる全体ない部分の性能向上存在、特にその程度を数式割合が「ボトルネック」として表現なることを示したもの法則である。[[コンピュータ・アーキテクチャ|コンピュータ・アーキテクト]]の[[ジーン・アムダール]]が主張したものであり、''Amdahl's argument''(アムダールの主張)という呼称もある<ref>{{Harvnb|Rodgers|1985|p=226}}</ref>。[[そのようなボトルネックとなる「並列計算]]化できない部分の割合」が、結局のところ実際の要求においてどの程度であるか、というのはよくわからない。アムダール自身や、HPC分野における著名人では[[シーモア・クレイ|クレイ]]は悲観的だったと言われている。一方で2020年現在において、複数京コンピュータやそのプロセッサ後継である富岳のような、並列度を使った頼みときしたシステムにおいて、複数の理論上応用で一定の性能向成果が上の限界を予測すがっているということからは、あまり深刻な問題では無かったのによく使わかもしれないとも言える。
複数のプロセッサを使い並列計算によってプログラムの高速化を図る場合、そのプログラムの中で逐次的に実行しなければならない部分の時間によって、高速化が制限される。例えば、1プロセッサでは20時間かかるプログラムがあり、その中の1時間かかる部分が並列化できないと仮定する。したがってすると、そのような仮定の下ならば、19時間ぶん(95%)は並列化できるが、どれだけプロセッサを追加して並列化したとしても、そのプログラムの最小実行時間は1時間(5%)より短くならない。なぜなら、並列化できない部分に必ず1時間かかるため、図にも示したように、この場合の高速化は20倍までが限界だからである。
== 詳細 ==
|