L.Entisの日記: GPGPUレンダラ
姫野ベンチのCUDA最適化という例を挙げられてたんですが、 CPUだけだとは実測1GFlopsぐらいなんですが、 理論値600GFlopsのGPU4枚で、実測50GFlopsぐらい出せたとか。 コアはたったの2%しか働いてないんですが、それでもCPUより50倍以上は高速なので、GPGPUの価値は高いと。
世間では GPU は CPU より高速だという認識ですよね。
まあ実際そうなのですが、かといって私の現状認識ではまだ GPGPU は使いづらいので、特殊な用途でないと実効性能が低くて(それをやるために割く労力に)割に合わないというところ…
この前のレイトレとかに関連した話ですが。
(GPU化したら簡単に速くなるというのが素人認識なのだろうけど、必ずしもそうでもないというのが私の認識なわけです)
因みに、どうでもいいのですが、上のコメントの「CPUだけだとは実測1GFlopsぐらい」というのは、2.5GHz前後のx86系シングルCPUで、あまり最適化されていない(手書きでない)FPUコードだとこのくらいですかね。
同じCPUを仮定して、手書きのSSEコード(32ビット精度)だと10GFlops位、クアッドコアだと40GFlops位になるはずです。(私の自家製レイトレレンダラはこのくらいだと思います)
自前レンダラにGPUを利用できるオプションを将来的には導入できるといいなと思っているのですが、今のところ考えているアルゴリズムは、GPUをプログラマブルなコプロセッサ的扱いで出来るといいな(&マルチプロセッサの場合、1つはGPUを使い、それ以外はCPUのみで演算する)と考えているのですが、なんか今ひとつGPUのパワーが生かしきれそうにありません。orz
フォンシェーディングまでのシェーディングであれば、GPUが非常に強力であることは疑いようもないので、まずはそっち方向から行こうかとは思っているのですが(まあただのピクセルシェーダーですね)、レイトレーシングとなると複雑で………というか、CPUで今組んでいるコードは、SSEコードによる高速化(それにマルチプロセッサ)はもちろんのことですが、それプラス、アルゴリズムによるアクセラレーションも相当分あるので、GPUを使う価値があるのは、GPUがCPUよりかなり高速であること、且つ、CPUがシングルコア・シングルCPUということになるんですよね。
GPGPUレンダラ More ログイン