作成日:2005/12/12
私のPCがDualコアになったので、Blenderのマルチスレッド・レンダリング機能について検証(?)してみました。
理系なもんで、すぐ自分で検証したくなるんです・・(本当かよ!?)。 ちなみに、私のPCは、Athlon64 X2 4400+です。Blenderのマルチスレッド機能は、海外のサイトを調査した結果、2スレッドまでは対応できるらしいです(今のところ)。とりあえず、フリーウェアなのにマルチスレッドができることだけで私は感動してます♪
ちなみに、シングルコアでも、Intelの場合、Hyper Threadingという機能が最近のものにはあるらしく、それをBIOS設定でenableにすることで擬似マルチスレッド化できるとのこと。私の持っている古いIntelマシンは一応Pentium4なんだけど、BIOS設定に該当するものが見当たらず・・・、まぁ、いいか。今更です。
Blenderでマルチスレッド機能をオンにする方法は、Outputパネル(下図)の「Threadsボタン」をオンにするだけです。

ちなみに、この状態でレンダリングしているときのタスクマネージャの出力は、以下の通りです。確かにマルチで演算してます。
この画面を見ただけで感動〜。

さて、検証方法なのですが、簡単なレンダリングをして、3回レンダリング時間を計ります。そして、平均値を求めます。単なる確かめ程度の検証なので、その他もろもろの環境条件には目をつぶります。大雑把でいきます。 試験ケースは、次の4ケース。球の数が、2個、8個、14個、24個のときのレンダリング時間を計ります。
(最初) (増殖) (増殖っ!) (増殖ーっ!!)
ちなみに、レイトレーシングにしてみました。 計測結果の秒数については、お分かりかとは思いますが、絶対値には何の意味もありません。相対的に見て、マルチスレッド機能がどうかを見てみます。 だから、うちの方が早いとか、勝った負けたの議論はなしで♪
以下の結果から、まず一目で分かることは、「恐るべし!マルチスレッド!」。
ちょっと言い過ぎかもしれませんが、大体半分って言っていいのかもしれません。「デュアルなんだから、当たり前だろ」と、冷やかな目が注がれそうですが、下手なプログラミングのせいで、せっかくのマルチスレッドが完全に機能していないことになったかもしれないので、この結果は良かったです。
試験ケースの4番目を24個にしたのは間違いでしたが、レンダリング負荷が高くなるにつれ、微妙に演算時間に開きがでてきているような感じです。うれしくなる結果です。
