HPCアプリケーション向け計算網羅性・計算順序をテストするツール
スポンサーリンク
概要
- 論文の詳細を見る
多くの High Performance Computing (HPC) アプリケーションでは,メモリアクセス最適化で大幅な性能向上が期待できる.例えば,行列積計算を部分行列へ分割するブロック化は,連続した配列アクセスを局所化しキャッシュヒット率を向上させられる.一方,ブロック化の効果を最大化するために施す計算順序の変更や,それに伴う計算カーネルの分割によって,実装コードは散在し可読性や保守性の低下を招く場合がある.さらに,ブロックの境界条件を判定するコードの増加によって,一部の行列要素の計算漏れや重複計算のような新たなバグの発生も問題となってくる.そのような最適化にともなうバグは,最適化の前後のプログラムの計算結果を突合すれば発見できるが,手動による突合は現実的ではない.また単純な機械的な突合では,浮動小数点の切り上げや乱数を使った初期パラメータ生成への対応が難しい.本研究では,実行ログを利用した HPC アプリケーションの計算順序及び計算網羅性のテストツールを提案する.このテストツールは,指定した計算カーネルでの配列アクセスの等の実行ログを記録し,ログの検証やログ同士を突合するための機能を提供する.アスペクト指向のポイントカットに基づいた記述により,散在した計算カーネルの位置や取得するログ内容を柔軟に記述できる.また,実行ログを集合として扱うための API を提供し,配列のアクセスシーケンスの比較や,同じ配列インデックスでの計算結果の突合などを単純な集合演算として記述できるようにした.提供している API は,MPI など分散環境にも対応できるようになっている.
- 2013-07-24