今までCeleron1.4のマシンでWindows2000を主に使っていましたが、最近HyperThreading対応のPentium4に切り替えたので、HyperThreadingがShadeのレンダリングにどの程度効果があるのかWindows2000とWindowsXPで計測してみました。
● 主な構成
CPU : Pentium4 2.4C メモリ : DDR400 512M x 2 マザーボード : ASUS P4P800 OS : Windows2000 SP3、WindowsXP SP1 Shade : Advance Rev.20a
● テスト内容
テスト用に作ったシーンをOS別、HyperThreadingの有無別でパストーレーザー、分散レイトレース(1スレッド/2スレッド)それぞれ5回連続してレンダリングを行いその平均時間を比較しました。
パストレーサー用 分散レイトレーシング用
● OSの違いとHyperThreadingの効果
IntelはWindows2000使用時にはHyperThreadingを無効にするように推奨しています。しかし有効にするとタスクマネージャーにCPUのグラフが2つ表示されるので、まったく無意味とは思えません。
テスト結果
HyperThreading OS パストレーザー 分散レートレーシング(1スレッド) 分散トレーシング(2スレッド) off Windows2000 197 219 223 off WindowsXP 200 220 219 on Windows2000 244 286 197 on WindowsXP 201 219 196 普通は行わないので参考にならない
他と比較すると異常な遅さ
マルチスレッドレンダリングではWindows2000、WindowsXPともHyperThreadingの効果が現れています。ですがWindows2000でシングルスレッドレンダリングを行ったときにはHyperThreading無効時よりかなり時間がかかっています。尋常でない遅さです。マルチスレッドで効果を発揮しないのではなく、シングルスレッドで悪影響が出るということのようです。
因みに、下図はパストレーサーでレンダリング中のCPU使用率です。WindowsXPでは片方の論理CPUがレンダリングを行っているのに対し、Windows2000では互いに仕事を奪い合っているという感じ。HyperThreadingを有効にした場合は素直にWindowsXPを使うほうが良さそうです。
WindowsXP Windows2000
● HyperPathの効果
P4P800にはHyperPathという機能が搭載されています。IntelのPATとよく似た機能らしいのですが、Shadeのレンダリングには効果があるのか、これも有無別で計測してみました。
テスト結果
HyperPath HyperThreading OS パストレーザー 分散レートレーシング(1スレッド) 分散トレーシング(2スレッド) off off Windows2000 197 219 223 on off Windows2000 195 219 220 off off WindowsXP 200 220 219 on off WindowsXP 198 220 222 off on WindowsXP 201 219 196 on on WindowsXP 197 219 197 分散レイトレーシングでは効果が見られないのですが、パストレーサーでは若干の効果はあるようです。ですが誤差の範囲と言えなくもありません。
● 結果について
あまり時間をかけたくなかったので1回あたりのレンダリング時間の目安を200秒程度に抑えました。そのため相対的に誤差の範囲が大きくなってしまいました。同じ設定の5回のレンダリング中で数秒の幅があったからです。もっと時間のかかるシーンで計測したほうが良かったかもしれません。また、5回連続してレンダリングしましたが1回目が最も速い傾向にあるようです。
● 使用ツール
初めのうちは手作業で集計を行っていましたが、そのうち面倒になってきてベンチマークプラグインを作りました。まだまだ改良の余地はありますが、興味のある方は使ってみてください。
ベンチマークプラグイン → ShadeMark