2010年1月10日日曜日

StreamGPU : 次の実験

 森田君が CPU と GPU の協調動作の実装を終え、パフォーマンス解析を行っている。彼の実験結果(ここを参照)によると、CPU / GPU 両方ともウィンドウサイズを285(?)にしたときに、oprofile を用いて CPU 使用率のブレークダウンを解析。Tesla (2コア)上での結果。
  • GPU 関係: OpenMP のランタイム (libgomp.so) が37%。libcuda.so, libcula.so を合わせて15%。トータルで52%以上
  • CPU 関係: System S の PE  RectMatrixRowCol::AddScaledRectMatrixRowCol::operator という関数が両方合わせて38%. これらは newmat の行列演算関数
CULA では、SVD の計算で CPU 部分は OpenMP を用いて並列化しているようで、その割合が 37 %。CPU 単独においての異常検知計算を割りこませることにより、CULA 単独のパフォーマンスと比較してどのくらい落ちているのであろう。

異常検知許容時間を L、測定する次元数を D として, まずこれらのパラメータを固定化する。L を60秒. GPU 版だと、前の森田君の実験によると、ウィンドウサイズ1024で5秒ぐらいであったので、D を12次元に固定する。

この条件において、まず最初は、CPU 版を走らせず、GPU 版のみでD次元を終了するのにかかる時間を測定する。次に、CPU 版を追加し、小さいウィンドウサイズまでを試し、GPU 版の実行時間に対してどのくらいの影響を与えるかを観測する。まずは、49などの小さいウィンドウサイズで、GPU 版がどのくらい遅くなっているかを見てみましょう。

仮に、GPU 版の空きが全くない状況においては、CPU 版を実行する隙間がないので、遅くなるでしょうが、それを確認しましょう。

もし CULA の SVD が CPU もフルに使い切ってしまう場合には以下の方向性での本研究の有効性を示せばよいのではないでしょうか?
  • Tesla は2コアだが4コアにして、CULA が使用する CPU のスレッド数を限定する (ただし、卒論までに CPU を換装するのは困難なので、これはまずやらない)
  • 他のクラスタ上のノードでスケールアウト処理。streams01-08 や sa のマシンを用いて、各ノード上で CPU を計算
まずは、全国大会の論文で忙しいと思うので、文書化を優先して、終わり次第、上記の実験をやりましょう。

0 件のコメント:

コメントを投稿