CUDAで、シミュレーションを書いていますが、
やっとまともに動き始めました。
32x32x32要素の粒子シミュレーションですが、計算時間は、
GPUだと、5ms(干渉少)~15ms(干渉多数) ・・・ GeForce GTS 250 (128コア)
CPUだと、50ms(干渉少)~80ms(干渉多数) ・・・ Core i7 860 (2.8GHz) 1スレッド
と、CPUもかなりがんばっています。
CPUを10コア使えば、GPUの128コアとほぼ同じ以上の処理ができるということは、
とにかく、1コアあたり1/10くらいの仕事はしてくれるのかな?という感じ。
GPUのコア数を増やせば、より処理時間が減るので、480コアの
GeForce GTX 480を使用すれば、約4倍速く処理が終わり、
目標としている1msに近づきそうです。
(本当は要素数 100x100x100 でやりたかったので、かなり妥協の妥協ですが・・・ ^^;)
こうしてみると、CPUの方が、アーキテクチャやパイプライン処理の
最適化が進んでいる印象を強く受けますね。
あと、
①これを最適化して、1msオーダーで処理を行う。
②粒子同士の連結(スプリング・ダンパー)をつける。
③より多コアのGPUでやってみる。
というところが、当面の目標になります。
先は長そうですが、光は見えてきた感じです。
AMD ATI Radeon HDだと、最上位機種に3000コアとかありますが、
これって、NVIDIAと同じ性能のコアが3000個付いていると
考えて良いのかなぁ・・・???
要するに、↓ これを買わなきゃって事なんだけど。(PRですいません)
