アムダールの法則

記事数:(1)

アルゴリズム

アムダールの法則:並列処理の限界

計算機の処理を速くするには、複数の処理装置を同時に使って仕事を分担させる方法があります。これを並列処理と言います。もし全ての処理を分担できたら、処理装置の数だけ処理速度も上がるはずです。しかし、実際にはプログラムの一部は分担できない場合があります。例えば、処理の最初と最後で必要な準備やまとめの作業などです。アムダールの法則は、このような並列処理による速度向上の限界を計算する方法です。この法則は、計算機の処理全体を分担できる部分と分担できない部分に分け、分担できる部分の割合と処理装置の数を使って、どれだけ処理速度が向上するかを計算します。 具体的には、全体の処理時間を1とした時、分担できる部分をP、分担できない部分を1-Pと表します。そして、N個の処理装置を使った場合の処理時間は、分担できない部分の処理時間1-Pと、分担できる部分の処理時間PをNで割ったものの和で表されます。つまり、1-P + P/N が並列処理後の処理時間です。元の処理時間は1なので、並列処理によって処理速度がどれだけ向上したかは、1をこの処理時間で割ることで計算できます。これがアムダールの法則です。 この法則を使うことで、処理装置の数を増やしても、分担できない部分のせいで速度向上には限界があることが分かります。例えば、プログラムの半分しか分担できない場合、処理装置をどれだけ増やしても、処理速度は2倍以上にはなりません。この法則は、1967年にジーン・アムダール氏によって提唱されました。当時から並列計算は行われていましたが、現代のように多くの処理装置を使った大規模な並列計算が当たり前になった現在においても、アムダールの法則は処理速度向上のための指針となる重要な法則です。プログラムを設計する際には、アムダールの法則を念頭に置いて、並列処理に適した構造にすることが重要です。そうすることで、処理装置の数を増やしたときに、より効果的に処理速度を向上させることができます。