Shade@HyperThreading

今まで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