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

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

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

目次

  1. GPUとCPUを組み合わせる
  2. サンプルと設定方法
  3. 比較してみた
  4. 考察

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でどれくらいが適正なのか試してみないといけないですね。

公開日

広告