generated at
アムダールの法則
プログラム内の並列できない部分の割合で、並列化による性能向上の限界が決まる


S(N) = \frac{1}{H+(1-P) + \frac{P}{N}}
P: 並列化可能な実行時間の割合
1-P: 並列化が不可能な実行時間の割合
N: 利用可能なプロセッサの数
S(N): 性能向上率
H: オーバーヘッドの経過時間と逐次実行した時の経過時間の比
数式上、省略されることもある


具体例を考える
プログラム内で並列化できる部分が90%の時
S(N) = \frac{1}{0.1 + \frac{0.9}{N}}
_
N12345678910...
s(N)11.812.53.13.64.04.44.75.05.3...10
これは何を言っているのかと言うと、
並列化するためにコアを2つにしても、性能が2倍になるわけではなく1.8倍にしかならない
さらに悪いことに、これはコア数を増やすごとに嬉しさの度合いが減っていく
ここが、アムダールの法則の主張mrsekut
コアを10個にしても、10倍にならず5.3倍の性能にしかならない
無限個のコアで並列処理をしても、たったの10倍にしかならない




具体例