|
|
[[ファイル: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倍までが限界だからである。
== 詳細 ==
|