0

これは宿題です。

問題: プログラムには 20% のメモリ アクセスがあり、50% の乗算があり、残りはどちらにも関係のない他の関数に使用されます。全体で 1.2 倍の高速化が必要な場合、メモリ アクセスと乗算の両方が同等に改善された場合、両方にどれだけの高速化が必要になるか。

アムダールの法則を使用してどちらか一方のスピードアップを探している場合、これを行う方法はわかっていると思いますが、この問題にアプローチして、それらが等しく改善された場合にそれぞれのスピードアップを見つける方法がわかりません。

メモリアクセスを探しているだけなら、x について次の方程式を解くと思います。

1.2 = 1/[(1 - 0.2) + 0.2/x]

2 つのパーセンテージを組み合わせて0.2 + 0.5 = 0.7アムダールの法則で使用することが鍵ですか?

4

1 に答える 1

1

現在の実行時間が 100 秒であるとします。

必要なスピードアップは 6/5 です。つまり、古い時間に対する新しい時間は 5/6、つまり 16.67% または 16.67 秒の短縮になります。(アムダールの法則は以上です!)

20 秒がメモリ アクセスに費やされ、50 秒が乗算に費やされ、30 秒がその他の処理に費やされることがわかっています。

「両方が同等に改善された場合」という質問はあいまいです。両方が同じ絶対量 (それぞれ 16.67 の半分) だけ減らされることを意味するのでしょうか、それとも 16.67 秒の 2/7 がメモリから来て、5/7 が乗算から来て、比例して減らされることを意味するのでしょうか?

あなたはそこからそれを取ります!

ところで: 学者がパフォーマンス チューニングについて話すとき、彼らはメモリ アクセスと数学演算とビッグオーがすべてである小さな 1 ページのプログラムを念頭に置く傾向があります。実際のパフォーマンス チューニングは大きく異なります。ソフトウェアがどのように過剰に設計されているかを突き止め、パフォーマンス診断 (プロファイリングのようなものですが、より優れています) を使用して、脂肪がどこにあるかを見つけ出し、それを何度も繰り返して取り除きます。例。

于 2014-07-02T21:12:48.213 に答える