Blender 2.81 でGPU+CPUレンダーのタイルサイズの最適解を探る

Blenderのverが2.81になった。この機会にGPU+CPUレンダーとタイルサイズの最適解を探ってみる。

先日、安かったから組んだRyzen7 2700のマシン、そのテストも兼ねて。

テスト環境

  • Blender 2.81 日本語
  • v2.74公式スプラッシュ fishy cat(CC0)
  • CYCLESレンダー
  • OS Windows10
  • CPU Ryzen7 2700(OC 3625Mhz)
  • GPU MSI Radeon RX 570 ARMOR 8G OC

fishy catは、もふもふの処理がクッソ重い。が、もうそれは過去のものらしい。Ryzen7導入により余裕すぎるレンダリング速度に到達。

ただし、レンダー後のコンポジットノードの関連処理は未だにクッソ重いため、「出力プロパティ→ポストプロセッシング」のコンポジティングとシーケンサーをオフにして測定したものを基本とした(2.74との互換性の問題がありそう)。

なお、今回は寸法200%のままでレンダリング。

この状態から以下の3か所の設定を変更する。

  1. 「レンダープロパティ→パフォーマンス→タイル」の数値
  2. 「レンダープロパティ→レンダーエンジン」のデバイス
  3. 「編集→プリファレンス→システム→Cyclesレンダーデバイス」のオンオフボタン

この環境の場合、初回レンダリング時のカーネルロード時間が割と長い(Radeonのドライバverのせいかも)ため、数回レンダリングしたのち、最も早いタイムを採用した。

GPU+CPUレンダーの効果

GPUとCPUを同時に使いレンダリングできる機能(Hybrid renderingやCombined renderingなどと呼ばれている)が、いつの間にか実装されていた。

タイルサイズはCPUのみが32、GPUのみが1024、CPU+GPUが32+αの設定を試す。

※GPUとCPUの最適なタイルサイズは反比例する傾向にある。GPUは大きいほど速く、多コアのCPUは小さいほど速いようだが、ドライバとblenderのチューニング次第(おそらくRTX20シリーズあたりに最適化されてる)で大きく変わる模様。2.7系と2.8系でも結果が変わる。

CPUのみ タイル32×32

21.65秒を記録。

単純に計算して、以前の3倍くらい速くなっている(以前書いた記事)※。さすが16スレッド20MBキャッシュだ。数の暴力は強烈。

※前述のとおり2.8系の方が速い。旧環境(i7 3770)では2.79が50秒台、2.8系だと40秒台程度。

OCしすぎに注意

AMD Ryzen Master(AMD公式) で3.7Mhz以上ブッコムとBlenderが落ちた。電圧アップやクーラー強化をやりだすとキリが無いため、3625Mhzで終了。

なお、定格(3.4Ghz)だと22.5秒前後になる。

数の暴力を見せつけられると、つい16コア32スレッドのCPUが欲しくなるが我慢だ。Blenderで遊んでる程度の人間にそんなものは不要。

Ryzen 9 はまだ高いけど、どうせ数年内に全部12~16コアになるのだろう・・・その時買えば良し。Core i7 5960Xが出てからたった5年、Xeon X6550が出てから、まだ10年も経ってない事を考えると・・・ねぇ・・・

GPUのみ タイル1024×1024

22.78秒を記録。

CPUの方がやや速いという結果になる・・・メモリ使用量も多く、発熱も大きい。危険な香りが漂っていたためOCは中止(このグラボはメーカーOCモデル)。

レンダリングの時間から、「RX570≒Ryzen7 2700」になるようだ(あくまでBlender@fishy catの場合)。

というか、前回も同じような結果だった。やはりBlender的には、ミドルクラス以下のグラボを導入する意味はあまり無さそうだ。

現状(2019年末~)Ryzen 7 2700クラスのCPUは割と安い。そのため、Blender目的にグラボを買うならGTX1660Tiクラス以上は必須。価格的に1660では微妙だ。

少なくともRX570を買ってもほとんど意味がない事は解る。どうでも良いグラボを差しておいてその分CPUに投入するか、CPUを抑えてGTX1660Ti以上を買った方が良さげ(ただし、これで実際速くなるかは解らない)。

CPU+GPU タイル32×32

21.04秒を記録(コンポジティング有にすると82秒)。

たいして速くならない! まぁ、16スレッドから1スレッド増えても、最大6.25%しか変わらない・・・という事なのかな、と。

GPU複数差しすると比例して効果が出るのか(動くのか)は未知数だが、Blender的にはGTX1650の連装などもアリなのかもしれぬ。いや、それならRTX買った方が良いか・・・

タイルサイズの効果

CPU+GPUの設定を入れたまま、タイルサイズを変更する。

画像は同じなので省略。

なお、32×32の場合、480分割になる。

  • 8×8 21.85秒(最小サイズ)
  • 10×10 21.49秒
  • 20×20 21.28秒
  • 40×40 20.66秒(312分割)
  • 50×50 20.44秒
  • 60×60 20.56秒
  • 70×70 20.45秒
  • 80×80 20.74秒
  • 90×90 21.05秒(72分割)
  • 100×100 21.30秒(55分割)
  • 125×125 24.05秒(36分割)
  • 150×150 28.42秒(28分割)
  • 175×175 35.11秒(18分割)
  • 501×23 21.79秒(解像度の倍数)

fishy catの場合、鼻と髭の部分の処理が最も重いため、ココに割り当てられたコアが足を引っ張る。

つまり、21秒未満で1コアが処理できるのは10000ピクセル前後らしい(重ねて言うがfishy catの場合)。

まとめ

オブジェクトの形状等による個別チューニングが必要なようだ。とりあえずは、32~64ピクセル程度にしておいてCPU+GPUの設定にしておくのがベターか。

数年前は、グラボでの計算(GPGPU)メインの方がコスト的には優勢だったようだが、ミドルハイクラスのCPUですら10スレッド以上が標準になった今は、多コアCPUで攻めた方が良いのかもしれない。

少なくともBlender用途だと、Ryzen7 2700が2万以下で買えるようになった現状、GTX1650やRadeon RX570を導入する意味は、ほとんど無い。

しかしまぁ・・・レンダリングエンジンの仕様が変わったら全部パーなので・・・投資は自己責任で。

2.80→2.81でCyclesエンジンの何かが変わってるのは確かなので・・・明らかに色が違うし・・・しかもGPUは少し速い。

もしかして、OptiX対応のせいなのか?

2.80のレンダー結果



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA