アムダールの法則
並行処理を書いているときに見つけたのでまとめ。
アムダールの法則とは、
並列性を追加して得られるスピードアップは、プログラムがどの程度並列に実行されるかに依存する。
というもの。一般式は以下。
- P: 並列化できる割合
- N: N個のプロセッサ
以下のグラフだとparallel positionがP、横軸がN、縦軸がSとなる。
具体例
ある処理をマルチスレッドで並行化し、速度向上を目指したいとする。
並列化できる処理部分は全体の50%とし、スレッド数を増やすことで高速化したい場合、アムダールの法則によればたかだか8スレッド程度で高速化は限界を迎える。
適応例
以下のような場合はアムダールの法則が適応できる。
- マルチスレッドによる速度向上率の予想
- スケールアウトによるパフォーマンス向上率
- マルチコアプロセッサーの性能速度予想
要所
P(並列化できる割合)を増やすことに務めると並列化の効果を得られやすい。