CPUとGPUの組み合わせでBlenderのレンダリングをしてみた

Blender 2.8 betaのCyclesレンダーは、GPUとCPUを組み合わせてレンダリングできます。そこで、どれくらい早く結果が得られるのか試してみました。

GPUとCPUを組み合わせる

BlenderのCyclesレンダーは、レンダリングするときに画像を小さな区画(タイル)に分けてレンダリングします。一般的にGPUでレンダリングするときはタイルサイズを大きめに、CPUのときはタイルサイズを小さめにすると、画像全体のレンダリングにかかる時間が短くなります。

CPUとGPUを組み合わせる場合はタイルサイズを小さめにすると言われているのですが、実際はどうなのか試してみました。

サンプルと設定方法

Blenderのバージョンは2.8 betaです。どんどんアップデートされているので、正式リリースされるころには違う結果が得られるようになってるかも。

使用したPCは、CPUがRyzen 7 2700Xで、GPUがGTX1060 6GBです。

画像はBlender 公式のデモ のデータを使用しました。Car Demo (bmw27)とClass roomです。

「設定」の「システム」に「Cyclesレンダーデバイス」の項目がありまして、CPUとGPUの両方にチェックします。「レンダー」メニューのレンダーエンジンをCyclesにして、デバイスを「GPU演算」にします。そうすると、GPUとCPUの両方が使用されます。

Blenderの設定

比較してみた

まずはCar Demo(bmw27)です。

レンダー タイル 時間  
CPUのみ 32x32 04:34.04  
GPUのみ 256x256 04:01.04  
CPU+GPU 16x16 01:41.69  
CPU+GPU 32x32 01:48.98  
CPU+GPU 64x64 02:13.84 ※1
CPU+GPU 128x128 03:08.88 ※1
CPU+GPU 256x256 07:11.80 ※1

※1はGPUが先にレンダリングを終えてしまって、GPUが無負荷な時間が生じてました。

bmw27の結果

とくに256x256ではGPUが担当するタイルはあっという間にレンダリングが終わってしまって、CPUのレンダリングをひたすら待つという状態でした。

下図はタイルサイズを256x256にしたときの、レンダリング開始時の様子です。

図をよく見ると1枚の画像が12個に区分けされています。それに対して、CPUが8コア16スレッドの能力を持ってるわけです。GPUは自分の担当のタイルのレンダリングを終わらせると、停止します。あとはひたすらCPUを待つわけです。

bmw27の分割

次にClass roomです。

レンダー タイル 時間  
CPUのみ 32x32 15:00.92  
GPUのみ 256x256 11:30.34  
CPU+GPU 16x16 06:21.50  
CPU+GPU 32x32 05:20.79  
CPU+GPU 64x64 05:56.53  
CPU+GPU 128x128 06:22.18 ※1
CPU+GPU 256x256 07:28.85 ※1

※1はGPUが先にレンダリングを終えてしまって、GPUが無負荷な時間が生じてました。

classroomの結果

下図は、タイルサイズを256x256にしたときのレンダリング終了時の様子です。このデモデータは画像の中心から順番にレンダリングするようになっているのですが、中心部のレンダリングが最後まで残っています。つまり、最初に割り当てられたタイルをCPUがレンダリングしている間に、GPUが周囲のタイルを次々にレンダリングしてしまったという状態です。

classroomの分割

考察

CPUとGPUは、併用した方がレンダリング時間は短くなります。 計算資源が増える訳ですから当然ですね。ただし、CPUとGPUが全力で頑張りますので、発熱と廃熱に注意です。

タイルサイズは小さめが良いです。 どうやら、CPUの各スレッドとGPUは割り当てられたタイルをそれぞれレンダリングするようです。CPUは複数のタイルを同時にレンダリングしますが、その代わり各タイルのレンダリング時間は長めです。その間、GPUはタイルを1つずつレンダリングしていきます。そうすると、CPUがレンダリングしているのにGPUがレンダリングするタイルが残っていないという事態が起こるわけですね。

本投稿の結果はRyzen 2700X (8コア16スレッド)とGTX1060の組み合わせの場合の結果です。

CPUのコア数や1コアあたりの性能やGPUの性能によって、どれくらいのタイルサイズが適正か変わってきます。レンダリングする画像によっても変わります。各PCでどれくらいが適正なのか試してみないといけないですね。

PCカテゴリの投稿