著者
杉原 健太 青木 尊之
出版者
一般社団法人 日本計算工学会
雑誌
日本計算工学会論文集 (ISSN:13478826)
巻号頁・発行日
vol.2010, pp.20100018, 2010-12-03 (Released:2010-12-03)
参考文献数
20

GPUは演算性能が高いばかりでなくメモリバンド幅も広いため, CUDAのリリースによって格子系の流体計算などさまざまな分野でGPUを用いた高速計算の研究(GPGPU)が行われるようになっている. 本研究では流体の移流現象を記述する移流方程式に対して1次~6次精度有限差分法や5次精度WENO法を適用し, GPUによる実行性能の検証および評価, 複数GPUでの新たな並列計算方法の開発, 大規模高次精度移流計算の複数GPUを用いた並列計算での高速化と強スケーラビリティの検証を行う. 本研究は東京工業大学 学術国際情報センターのスーパーコンピュータ TSUBAME Grid Clusterを利用して行われた. NVIDIAのCUDAを用いてGPU上に実装する上で, 以下の方法を導入する. Global memoryへのアクセス回数を低減するためにx, y方向のデータをSM内のShared memoryをソフトウェアマネージド・キャッシュとして利用し, 各Thread内で閉じているz方向のデータはThread内の変数(Register ファイル)に格納し, 計算の高速化を図る. 3次元的に計算空間分割しBlockの数を増やすことでSMの並列実行効率を高める. 3次元領域分割法によるGPU並列計算により並列数の増加に伴い, 境界bufferのデータサイズを減少させ通信時間を短縮させる. 計算領域を7つのKernelに分け非同期実行することによる「計算Kernel, Device-Host間通信, MPI通信」3つのオーバーラップ技法を提案する.本論文では演算密度(flop/byte)と実行性能との関係に注目した評価を導入し, 低次から高次精度の差分を用いた移流計算を例に評価の妥当性を検証した. 高次精度手法は低次よりも演算密度が高く実行性能を引き出し易いことが明らかになった. また, GPU並列計算では3次元領域分割を使用し, 7個のstreamによる非同期実行によるkernel関数, MPI, Device-Host通信のオーバーラップ技法の提案をした. これらにより, 高次精度移流計算において60GPUで7.8TFlopsという非常に高い実行性能を達成した. 本研究によって以下の新しい知見が得られた. GPUの実行性能は演算密度(flop/byte)で有効な評価ができる. Shared memoryを用いたデータの再利用により演算密度は高くなり実行性能が向上する. 1GPUの実行性能が1CPU coreに比べて数十~百倍高速であり, 複数 GPUの場合はMPI通信に加えてDevice-Host間通信も必要になるため計算時間の中で通信時間の占める割合が高く, 高速化におけるボトルネックになる. 複数GPU計算において, 3次元領域分割が有効である. 本論文で提案した技法は移流計算に限らず直交格子でのさまざまなステンシル計算(例えば拡散方程,Jacobi法等の反復解法)にも適用可能であり, 汎用性が高いといえる.