BlenderのCyclesレンダーの速度を検証してみました。
Blender2.8には、以前のVersionから実装されたCyclesレンダーと、新たに実装されたEeveeレンダーの2つがありますが、今回はCyclesレンダーに絞って、レンダリング速度の検証を行います。
具体的には、Cyclesレンダリング時にGPU・CPUを使用し、タイルサイズ設定を調整することで、どのくらいレンダリング時間に差がでるかを調べます。
<本記事の対象者>
・Blenderでレンダリングしたい方全般
・GPU、CPUの使い分けによってどのくらい速度が変わるか知りたい方
CyclesレンダーのCPU、GPUによるレンダリング速度の検証
レンダリングに使用したPCのスペック
今回使用した環境は以下の通り。
・GPU:GeForce GTX 1060 6GB
・Blender 2.80
だいたいのスペックを知ってもらうために簡単に説明します。
CPU約4万円。12スレッドあるので、最大12個のタイルを平行して処理することができます。
Intel CPU Core i7-8700K 3.7GHz 12Mキャッシュ 6コア/12スレッド LGA1151 BX80684I78700K 【BOX】【日本正...
GPUは約3万円。2019年のゲーミングPCのなかでは、中の下ほどのスペックかと思います。
CPU・GPU使用によるレンダリング速度検証の結果
検証のために今回使用するのはBlender公式が公開しているデモシーンです。以下のリンクからダウンロードすることも可能です。
レンダリング結果はこんな感じ。めちゃくちゃクオリティが高いです。
それではさっそく検証結果の報告に入ります。
結果は以下のようになりました。
使用環境 | タイル | レンダリング時間 |
CPU | 32×32 | 4分38秒 |
GPU | 256×256 | 2分34秒 |
CPU+GPU | 16×16 | 1分36秒 |
CPU+GPU | 32×32 | 1分40秒 |
CPU+GPU | 64×64 | 1分53秒 |
CPU+GPU | 128×128 | 2分38秒 |
CPU+GPU | 256×256 | 6分47秒 |
最速はCPU+GPUの16×16タイル設定となりました。
タイルサイズを大きくするほど、CPUで処理しているタイルのレンダリング時間がかかってしまい、結果として遅くなっています。
これはレンダリング時のCPU、GPU、タイルの性質を知っている方なら予想できた結果でしょう。
よほどCPUとGPUのスペックに差がない場合は、CPUとGPUを併用してレンダリングした方が速くなるはず。。。(数十万円以上離れたら話は別)
以下の記事でも同様の検証を行っているので、PCスペックの比較に大変参考になりました。
検証結果の報告はここまでになります。
以下ではレンダリングにおけるCPUとGPU、レンダリングタイルについての解説をしていきます。
まだレンダリングについて詳しくわからない方はぜひこの機会に知っていってください。これを知っておくとレンダリング時の設定が自分で行えるようになります。
レンダリングにおけるCPU・GPU・タイルサイズの関係
レンダリング時にCPUとGPU、タイルサイズについての関係を知っておくことで、レンダリングを行う際に的確な調整を行えるようになります。
CPU・GPUの特性
まずはじめにCPUとGPUの特性について理解しておきましょう。
レンダリングにおけるCPUとGPUの挙動は以下のようになります。
CPU:複数のタイルを平行して処理できる(コア数、スレッド数に依存)
GPU:1つのタイルを高速に処理できる
CPU、GPUの特性はこのことを覚えておけばOK。
次にタイルサイズについて解説します。
レンダリング時のタイルサイズの設定
タイルサイズはレンダリング時に1度に処理するピクセルサイズのことを指します。
Blender2.80では以下のように設定します。
[プロパティ]>[レンダー]>[パフォーマンス]>[タイル]
タイルサイズが256×256ということは、レンダリングしたい画像を256×256ピクセルの正方形のタイルで分割してレンダリングしていくことになります。
タイルサイズはレンダリング時にオレンジ色の枠として表示されています。
CPU・GPUとタイルサイズの設定
以上のことから、CPUは小さいタイルサイズを平行に処理していくのが可能。GPUはタイルサイズに依存せずに高速な処理が可能ということがわかります。
例えば、1000×1000の画像をCPU(スレッド数10)のみでレンダリングするときを考えてみると。
タイルサイズ(100×100)で100タイルに分割して処理→〇(10スレッドを平行して処理が可能)
タイルサイズ(1000×1000)で1タイルとして処理→×(使わないスレッド数(9)だけ無駄になる)
ちなみにGPUはタイルサイズを変更しても差は出ません、と思っていたのですが、GPUのみ使用でもタイルサイズが小さい方が速い結果になりました。(256×256:2分34秒、16×16:2分14秒)
CPUのみ、GPUのみ、CPU+GPUのみの全パターンにおいてタイルサイズは小さい方がレンダリング速度が速い結果となりましたので、参考にしていただければ幸いです。
最後まで読んでいただきありがとうございました。