HPCプログラミング
HPC(High Performance Computing)の勉強。何も知らなかった状態よりは少しは理解できた。概念が分かっても実際の問題でどこまで使えるのやら。いろいろと工夫してプログラムを書いても、コンパイラが勝手に余計なことをしてしまうという心配も。コンパイラの最適化、というのが何をしているのかも学ばねば。
- メモリ階層→有効に働かせるアルゴリズムがブロック化
- ブロック化アルゴリズム→計算順序の改変
- メモリアクセスが高速化の障害→キャッシュの導入
- キャッシュは、プログラムでは制御しないところがバッファと異なる
- キャッシュにデータが無ければキャッシュミス→レイテンシが生じる
- ブロック化→キャッシュに存在するデータをなるべく使うため。データ移動を最小化
- ブロック化アルゴリズム→行列要素を適当なサイズの正方小行列に書き直すことで得られる
- プロセッサの演算・移動性能比→乗加算を計算する速度と、8バイトをロードする速度の比
- 計算密度の定義→浮動小数点演算回数と、記憶域オペランドをアクセスする回数の比(この比が大きくなれば高速!)
- レジスタブロック化とキャッシュブロック化
- シンタックスシュガー→プログラマに分かりやすくするために導入された機能のこと
教科書
HPCプログラミング (IT Text) | |
オーム社 2009-08 売り上げランキング : 358889 Amazonで詳しく見る by G-Tools |