ネットワーク管理者の憂鬱な日常

とある組織でネットワーク管理に携わる管理者の憂鬱な日常を書いてみたりするブログ

銀河衝突シミュレーターを試してみる

以前からぼちぼち構築していた、GPUによる並列計算環境を組み直してみた。
GPUを汎用計算に使おうという試みは「GPGPU(General-Purpose computation on GPUs)
と呼ばれている。

効果測定のために、N体計算の代表例である銀河衝突シミュレーターを動かしてみた。
# 単に動かしてみたというダケなのだが・・・。
銀河衝突シミュレーターは、慶応大の泰岡先生のところから入手できる。
http://www.yasuoka.mech.keio.ac.jp/cuda/

動かした環境は次の通り。
・CPU Intel Core 2 Duo E6300(1.86GHz)
・RAM PC2-6400(DDR2-800)2GB SDRAM x 4
・GPU NVIDIA GeForce 8800 GTX(768MB GDDR3 SDRAM実装、G80コア)

で、結果は次の通り。

これは、Core 2 Duo E6300の1コア分だけを用いた結果。0.3GFLOPS。


こちらはE6300に実装されている2コアを両方使った結果。13.4GFLOPS。
なおかつ、アセンブラで組まれているらしいので、無駄なコードがないのだろう。


で、こちらがGPGPUによるもの。113.3GFLOPSを叩きだしている。
Core 2 Duo E6300の実に8〜9倍。


実際、2コア使った実行例は1フレーム/sec程度、GPUによるものは15フレーム/sec程度の
感覚的な違いが感じられた。1コアでの実行例は言うに及ばず。
早い話、遅いパラパラマンガとそれなりのアニメーションって感じ。
しかし、見た目以上にその効果の差を感じることができる。

対象問題をどう並列で解くか、また、どう最適化すれば性能が出るかという
課題はあるが、GPUによる並列計算環境の可能性は高い。

今回使ったGPUは128コアのSP(Streaming Processor)で構成されている。
NVIDIAによれば、GPUを増やせば(理論上は)線形に性能が向上するらしいので、
SLI構成にしてみるとか、単純にGeForce 9800 GX2を積めばSPが256コアに
なるので、もっと早くなるのだろう。

が、やはり並列計算の知見と(恐らく)それなりに各GPUに適応した最適化手法を
得ないと、リニアな性能向上は出来ないような気がする。

スポンサーリンク