« BVHでレイトレ | メイン | 続・レイトレ »

2008年06月17日

SSE化

BVHレイトレをSSE化してみた。
20%くらいしかはやくなんねーorz
やっぱ分割アルゴリズムのほうが問題か

FPUのコードだと早々に条件分岐して、判定コードからぬけるんだけど、SSEのコードだと
_mm_max_psとか_mm_min_psとかで最大最小とってるから最後まで条件分岐がない。
しかも途中で分岐すると、余計に遅くなるし・・・。
経験上、FPUだと分岐予測がどうとかよりは、計算しないような分岐をいれてるほうが
最終的に早くなることも多々あるが、SSEのときは分岐しないほうが早いことが多いのかね。
(ある程度SSEロード命令のオーバーヘッドもあるのか)
とくに_mm_max_psとか_mm_min_psはかなり高速に動作するらしく、
intelのSSE導入のマニュアルにも条件分岐コードの代わりに使うことを推奨している。

インテル日本語技術資料のページ
なんかもう最近はmacもintelになったからintel一辺倒でいいんじゃないかと・・・w

投稿者 kioku : 2008年06月17日 08:00