日記

CPUとGPU

以前作ってたフォトンベイカーを最近また新しく作り直してる。
以前のものは色んな技法の調査目的でコードを書いてたため、余分なコードが大量にある状態だった。
作り直してるといっても別の仕事でちょっと忙しいのであまり進んでない。

今のところColladaファイルからシーンデータを読み込んでBVHを構築しレイとシーンの交差判定をする処理まで書いた。
まだCPUで処理するコードしか書いてないけど、比較的楽にGPUに持っていけそうなデータ構造&処理にしている。

マルチスレッド化してSSEも使うようにしたけど、テストシーンで100万レイの処理に2秒ほど掛かった。(Core 2 Duo 2GHz)
CPUが古いからもっといいのを使えばまだまだ速くなるだろうけど、たとえ10倍高速化したとしても、
例えばGeforce GTX 460なら100分の1秒単位で処理可能レベルなわけで、GPUに勝てる気がしない。

オフラインレンダリング界にはCPU好き派というかGPU嫌い派がまま居らっしゃって
その根拠としては、GPUの柔軟性の無さが挙げられることが一番多い気がする。
それに関しては全面的に同意せざるを得ない。

でもCPUかGPUかという二択は個人的にあまりしっくりこない。
処理を分割・変形・シンプル化して個々の処理を単純化することは可能だと思うし、単純な処理を大量に捌くならGPUの方が圧倒的に速い。
ただGPU向けに処理を分割・変形・シンプル化するのがめっちゃ大変というだけ。
限界まで処理を分割・変形・シンプル化したうえでCPUとGPUに適材適所で処理を振り分けるのが実行速度的には一番いい。

うまい例えが思いつかないけど、CPUかGPUかという二択は、個人的にはPythonかC++かという二択に似てる気がする。
それは何を重視するかによってどちらにも一長一短あるけど、実行速度第一のコンテキストでは後者を選択しない理由はないと思う。

まぁこれは個人で趣味でやってて開発コストをコストだと感じてない立場だからそう思うだけであって、商用レンダラの開発とかだったらまた考え方は変わる。
開発側としてもコストはなるべく下げたいし、ユーザとしてもコストが製品価格に上乗せされたらヤダなと思う。

でもコスト優先というのはつまり「妥協」なわけで。
妥協だらけの人生を歩んでる身として、自分の力でなんとかできそうなところはこれ以上妥協を積み重ねたくないという思いがあるのかも。(何の話)

コメントを残す

メールアドレスが公開されることはありません。



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください