7
フロップカウントによるアルゴリズム分析は時代遅れですか?
私の数値解析コースでは、問題のサイズに対して、必要な浮動小数点演算(フロップ)の数を数えることにより、アルゴリズムの効率を分析することを学びました。たとえば、数値線形代数に関するTrefethen&Bauのテキストには、フロップカウントの3Dに見える写真さえあります。 キャッシュにないものをフェッチするためのメモリレイテンシは、フロップのコストよりもはるかに大きいため、「フロップは無料」と言うのが流行しています。しかし、少なくとも数値解析コースでは、フロップを数えることを生徒に教えています。代わりに、メモリアクセスをカウントするように教える必要がありますか?新しい教科書を書く必要がありますか?または、メモリアクセスがマシン固有であり、時間を費やすことができませんか?フロップまたはメモリアクセスがボトルネックであるかどうかに関して、長期的な傾向はどうなりますか? 注:以下の回答のいくつかは、「実装を強烈に書き換えて、数フロップを節約するか、キャッシュのパフォーマンスを向上させるべきですか?」しかし、私が求めているのは、「算術演算またはメモリアクセスの観点からアルゴリズムの複雑さを推定する方が便利ですか?」という行に沿ったものです。