FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

「高速化プログラミング入門」を購入

本屋にふらっとよった時に発見。まさに本日発売でした。

高速化プログラミング入門

高速化プログラミング入門

内容としては、高速化の基礎から、メモリアクセス回数の削減、ループ最適化、キャッシュの活用、並列化ライブラリの活用、SIMD、データの整列方法などだ。

とりあえず基本的な最適化の部分を読み進めたが、内容が平易でとても分かりやすかった。 (一応、元のアセンブリ最適化の人間として)、このあたりの最適化の技法は確かに基本的なところだと思う。 また、SIMDについても大体予想できる内容が書かれており、最適化を取り扱う人間にとっては常識の内容がふんだんに含まれていると思った。 逆に言うと、そこまで高度な内容を本書に期待してはいけない。アセンブリ言語のレベルで最適化できる内容はこの程度だということだ。 (というか、「入門」と書いてあるのだから、アーキテクチャ毎の最適化手法など、そこに踏み込む必要は無いと思う)

本来の最適化は、アーキテクチャに最適化していかなければならないと思う。組み込みの領域では特に、CPUのアーキテクチャパイプラインやメモリアクセスのハードウェア特性を知っておくだけで最適化の手法ががらっと変わってくる。 場合によっては命令1つ1つを解析して最適化することも考えなければならない。 そこまで行ければプロフェッショナルだが、本書はそこに到達する前の、アセンブリまでは手を出せない、高位言語の領域で最適化についてざっくり知るためには良い本だと思った。

とりあえずは、最後まで読み進めていきたい。後半の実例に基く最適化と性能解析の章に期待だ。