アイキャッチ画像

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では、性能差がありすぎたかな。

広告

PCカテゴリの投稿