アムダールの法則
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/08/27 01:44 UTC 版)
アムダールの法則(アムダールのほうそく、英語: Amdahl's law)は、ある計算機システムとその対象とする計算についてのモデルにおいて、その計算機の並列度を上げた場合に、並列化できない部分の存在、特にその割合が「ボトルネック」となることを示した法則である。コンピュータ・アーキテクトのジーン・アムダールが主張したものであり、アムダールの主張(アムダールのしゅちょう、英語: Amdahl's argument)という呼称もある[1]。
複数のプロセッサを使い並列計算によってプログラムの高速化を図る場合、そのプログラムの中で逐次的に実行しなければならない部分の時間によって、高速化が制限される。例えば、1プロセッサでは20時間かかる問題があり、そのプログラムのうち、合計で1時間分が並列処理できないとする。この場合、19時間分(95%)は並列処理できるが、どれだけプロセッサを追加したとしても、最小実行時間は並列処理できない部分にかかる1時間(5%)より短くならない。
詳細
アムダールの法則は、並列化しても問題の大きさが変化しないという前提と、問題には並列化できない部分があるという前提の上で、逐次的アルゴリズムとそれに対応したアルゴリズムの並列化実装によって期待できる高速化の関係をモデル化したものである。例えば、ある大きさの問題をあるアルゴリズムを並列化実装したもので実行した場合、問題の12%を並列化によって好きなように高速化できるとする(残り88%は並列化できない処理である)。アムダールの法則によれば、このときの並列化していない実装と比較した並列化版による高速化は最大でも
プログラムの並列化できる部分の実行時間の割合を P としたとき、並列化不可能な部分は (1 − P)であり、N個のプロセッサを使ったときの全体の性能向上率は次の式で表される。
ある逐次的プログラムを改良したときの最大高速化係数は、そのプログラムの一部を
- Cases where Amdahl's law is inapplicable
- Oral history interview with Gene M. Amdahl Charles Babbage Institute, University of Minnesota.
- Reevaluating Amdahl's Law
- Reevaluating Amdahl's Law and Gustafson's Law
- A simple interactive Amdahl's Law calculator
- "Amdahl's Law" by Joel F. Klein, Wolfram Demonstrations Project, 2007.
- Amdahl's Law in the Multicore Era
- Amdahl's Law explanation
- Blog Post: "What the $#@! is Parallelism, Anyhow?"
- Amdahl's Law applied to OS system calls on multicore CPU