アイキャッチ画像

BlenderでマルチGPUをしてみた

TitanRTXをゲットしたので、GTX1060とのマルチGPUをしてみました。

目次

  1. TitanRTXとGTX1060 6GB
  2. ベンチマーク
  3. 結論

TitanRTXとGTX1060 6GB

GTX1060はPascal世代のミドルレンジのビデオカードです。ディスプレイが2K出力なら、そこそこのゲームが動きます。

TitanRTXはTuring世代のハイエンドのビデオカードです。単独の計算性能ではRTX2080Tiの方が上のこともありますが、ビデオメモリを24GBも積んでいるのが特徴です。ビデオメモリを大量に使いたい人用です。

GTX1060 6GB

TitanRTX

CUDAコア

1280

4608

ベースクロック

1506

1350

MHz

ブーストクロック

1709

1700

MHz

ビデオメモリ

6

24

GB

ビデオメモリ

GDDR5

GDDR6

メモリ帯域幅

192.2

672

GB/s

TDP

120

280

W

上記の比較表でみると、TitanRTXはGTX1060 6Gに対して概ね4倍程度の性能になります。

TitanRTXを正規代理店で購入すると3年保証になる、というのもちょっとした違いですね。

ビデオカードを2枚使用するときは、同じビデオカードをそろえてNV Link SLIするというのが一般的だと思います。ですが、そんなに裕福でもないので、TitanRTXとGTX1060でマルチGPUにしてみたいと思います。ソフトウェア側が対応していないとマルチGPUの恩恵は受けられないのですが、BlenderではレンダリングにCPUとGPUの組み合わせができますので、マルチGPUでBlenderを動かしてみます。

デバイス選択

PCの構成は下表の通りです。

CPU

Ryzen 2700X

メモリ

32 GB

SSD

WD Black 512 GB

マザーボード

AsRock Master SLI

電源

850W

ベンチマーク

Blenderの公式サイトで配布されているBMWの画像のレンダリング時間を比較します。Blenderバージョン2.82、レンダーはCyclesです。

下表は、レンダリングに要した時間(秒)です。

タイルサイズ

16x16

32x32

64x64

128x128

256x256

240x135

192x270

Ryzen 2700X のみ

218.87

224.52

234.43

259.23

405.76

288.72

GTX1060 のみ

128.73

128.88

132.42

140.07

148.09

145.49

147.70

TitanRTX のみ

39.27

38.47

37.62

37.17

38.28

37.43

37.83

TitanRTX + GTX1060

31.41

30.99

30.77

31.92

39.41

35.18

33.42

TitanRTX + Ryzen 2700X

36.02

40.18

65.29

TitanRTX + GTX1060 + Ryzen 2700X

36.60

36.49

42.16

168.89

BlenderのCyclesレンダーでは、画像をタイルに分けてレンダリングします。

レンダリング

CPUがレンダリングする際には、1つのタイルに1つのスレッドが割り当てられます。つまり、Ryzen7 2700x(8コア16スレッド)なら16タイルが同時にレンダリングされます。

例えば、今回のデータを256x256で分割すると12タイルしか出来ませんので、遊ぶスレッドが出てきます。ですから、256x256は突出してレンダリング時間が長くなってしまっています。

240x135は画面を16分割したタイルサイズです。(今回のデモファイルに限る。)こうすると、遊ぶスレッドがなくなります。その結果、256x256よりもレンダリング時間が短くなります。ただし、一番複雑なタイルのレンダリング時間に引っ張られます。

GPUがレンダリングする際には、GPU毎に1つのタイルが割り当てられます。つまり、タイルを1つずつレンダリングしていきます。その代わり、1タイルあたりのレンダリングにかかる時間はCPUよりGPUの方が短くなります。

GPUの場合は、タイルサイズは小さすぎず大きすぎずが良さそうです。

このように、CPUとGPUでレンダリングの処理の仕方が異なりますので、組み合わせる際は注意が必要です。

TitanRTXとRyzen 2700Xの組み合わせでは、64x64でレンダリングした際に、GPUが先に計算を終わってしまってCPUの計算を待つという時間が出来てしまいました。TitanRTX + GTX1060 + Ryzen 2700Xの場合でも128x128でレンダリングした際に同様の現象に陥りました。

192x270は、画像を10分割したものです。GTX1060とTitanRTXの性能差が概ね1:4なので、この比率でタイルを割り当てられるようにしたらどうだろうというものです。

結論

CPUでレンダリングする場合は、タイルサイズは大きくしない方が良い。

GPUでレンダリングする場合は、タイルサイズとGPU性能のバランスするところを見つけるのが良い。

性能の異なるGPUの組み合わせでも、レンダリング時間が短くなる。

CPUとGPUの組み合わせは、タイルサイズを小さくしないとレンダリング時間を短く出来ない。

TitanRTXとGTX1060では、性能差がありすぎたかな。

公開日

広告