研究概要 |
GPU(Graphics Processing Unit)は128〜240個のプロセッサをもつ並列計算機として注目されている.そのプログラミング方法として当初はグラフィックス言語OpenGL/Cgを用いていたが,2006年に異なるプログラミング方法CUDAが発表された.本研究では,どのような工夫をすれば効率のよいCUDAプログラムを設計できるかを解明し,Open/CgプログラムとCUDAプログラムのどちらが効率のよいGPUプログラムとなるかを比較した.応用問題は,a)画像処理分野のコーンビームCT再構成,b)バイオ情報分野の塩基配列探索,c)グラフ理論の全点対最短経路長探索,d)シミュレーションで多用される相互透過係数畳み込み処理とした. 1.a)に関しては,既に市販装置に採用されている研究代表者らのグループが開発したOpen/Cgプログラムと比較した結果,部分的にはOpen/Cgプログラムが性能のよいところもあるが,全体としてCUDAプログラムの方が効率がよいことがわかった.b)に関しても同様である. 2.b)〜,d)は,入力データの一部のみ異なる同一処理を多数実行する必要があり,GPUでそのような処理を同時に実行することにより全体のスループットを向上させる方法に関する知見を得た 3.a)〜d)に関して,小容量の共有メモリの有効利用の方法,それと関連したプロセス数の選択方法,プロセスの粒度などに関して有用な知見を得た. 4.SIMDとして動作しているプロセッサが,GPUのメモリを整然と連続領域をアクセスするcoalesced参照は,データアクセスの性能を上げることが知られているが,d)ではそのために入力データをシャフルする方法の効果を確認した.
|