高速化プログラミング入門
- 著者 北山 洋幸
- 判型 B5変型、368頁
- 本体価格 3,800円
- ダウンロードサービス:本書掲載のサンプルファイル
- ISBN 978-4-87783-387-9
2016年1月10日 初版第1刷発行
本書について
本書は、主にソフトウェアからの視点で、いかにコンピュータの性能を向上させるかについて解説します。
高速化というと難しい手法を考えがちですが、意外と簡単な方法でも効果的な場合があります。本書では、古典的な手法からはじめて、キャッシュメモリの活用、並列化、ベクトル命令(SIMD)を活用した手法などについて解説します。さらに、これらに付随する高速化の注意点や、複数の手法を融合する方法、そして比較的低速なCPUや貧弱なコンパイラまたは開発環境に応用できる手法についても言及します。
本書は、理論の説明に終始せず実践的に学習できるよう、具体的なサンプルプログラムを多数示しながら解説を行います。理論は大事ですが、すでに教科書的な書籍は多数存在するので、CPUの概論や一般的な高速化についての解説は最初の章にまとめ、第2章以降では一般的に有効とされている手法を実践していきます。
高速化の分野は奥が深いため、それぞれを極めようとすると膨大なページ数を必要とします。本書は、なるべく実務で使用できそうなトピックに絞り、その入門程度に留め、高速なプログラムを開発するためのきっかけになるよう心掛けます。また、高価なコンパイラや開発環境を用意することなく、小規模で身近な環境で利用できる例を紹介します。
目 次
- 第1章 高速化の基礎
- 1.1 CPU概論
- 1.2 メモリ概論
- 1.3 並列化概論
- 1.4 並列化の分類
- 1.5 並列化の限界
- 1.6 並列化の課題
- 1.7 時間軸と高速化
- 第2章 単純な高速化
- 2.1 コンパイラオプション
- 2.2 コンパイラを変えてみる
- 2.3 初歩的な最適化
- 第3章 ループの高速化
- 3.1 ループアンロール
- 3.2 ベンチマークに使用したシステム
- 第4章 キャッシュメモリ
- 4.1 2次元配列の総和
- 4.2 2次元配列への書き込み
- 4.3 サブブロックへ分割
- 4.4 プリフェッチ
- 第5章 並列化
- 5.1 配列に係数を乗ずる
- 5.2 OpenMP概論
- 5.3 OpenMPに対応したプログラムのビルド方法
- 第6章 ベクトル化
- 6.1 逐次処理
- 6.2 ベクトル化・128ビット
- 6.3 ベクトル化・256ビット
- 6.4 アライメント
- 6.5 アセンブリ言語で開発
- 6.6 Visual C++とイントリンシック
- 6.7 Visual C++でアセンブラ
- 6.8 SIMD命令とメモリ管理
- 第7章 データの整列
- 7.1 行列を並び替え
- 7.2 3Dベクトルの正規化(AOS、SOA)
- 第8章 並列化とベクトル化の融合
- 8.1 逐次処理
- 8.2 128ビット
- 8.3 256ビット
- 8.4 ブロックで分割
- 第9章 並列化とキャッシュ
- 9.1 ループで分割
- 9.2 ブロックで分割
- 9.3 OpenMPの共有変数とプライベート変数
- 9.4 OpenMPの指示文
- 9.5 指示句
- 第10章 水平演算
- 10.1 配列の総和
- 10.2 並列化
- 10.3 ベクトル化
- 10.4 並列化とベクトル化の融合
- 10.5 最大値
- 第11章 フィルタ
- 11.1 積和でフィルタ
- 11.2 FFTでフィルタ
- 11.3 fftw3について
- 11.4 実験データ作成や評価
新刊書籍のご案内などお送り致します。 ←クリックすると登録ページに行きます。