研究概要 |
提案している動的負荷分散フレームワークTascellを用いて,各種アプリケーションの並列化を行った.当初の例題としていたd-COPINEについては,Javaで書かれたものであり,逐次プログラムとしても採用しているデータ構造等性能上の問題があったため,C言語への移植を含む性能チューニングを行った.これの並列化およびその評価は今後の課題とする,それ以外のアプリケーションとして,N体シミュレーションのためのBarnes-Hutアルゴリズムと,spanning tree構築アルゴリズムの並列化を行った.Barnes-Hutアルゴリズムは,各質点をleafとする木を構築してそれを一回走査することで全質点間の力を近似的に計算するものである.生成される木は一般にアンバランスであるため,Tascellによる並列化が効果的に適用できる.実際,128ハードウェアスレッドを備える共有メモリ並列計算サーバにおいて,素朴に並列化したCilkプログラムより約7倍高速に計算させることに成功した.spanning tree構築アルゴリズムは,これまで効率的に並列化することが困難であったが,深さ制限つきの深さ優先探索を行いつつ溢れた呼び出しを各ワーカごとの記憶領域(ワーカローカルストレージ)に蓄え,それを次回の並列ステージで呼び出すというプログラミングの工夫により,高い並列効果を得ることに成功した.なお,ここでワーカローカルストレージの機能は,アプリケーション開発時判明したTascellに不足していた機能として新たに追加した.Barnes-Hutアルゴリズムについては,試験的に分散環境における実装も行い,ノード間で粒子の情報を効果的に交換するためのブロードキャスト機能を新たなTascellの機能として追加したが,十分な性能を得るには至らなかったため,今後プログラムやTuscellの実装の見直しを行っていく.
|