BlenderでマルチGPUをしてみた
TitanRTXをゲットしたので、GTX1060とのマルチGPUをしてみました。
目次
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カテゴリの投稿
- BlenderでマルチGPUをしてみた
- CPUとGPUの組み合わせでBlenderのレンダリングをしてみた
- Jupyter Notebookがすごい
- Jupyter notebookをWindows10にインストール
- SphinxにTwitter Cardを出力させる
- Surface Pro 6でトリプルディスプレイ
- Surface Pro 6のBlenderのレンダリング性能を測る
- USキーボードでプログラミングが捗るというのは本当なのか
- USキーボードの使用をやめた話
- Visual Studio CodeでSSHを使ってサーバーのファイルを編集する
- Visual Studio Codeで定型文(スニペット)を入力する
- reStructuredTextをdocx(Word形式)ファイルに変換してみた
- 安売りのPCにLinuxを入れようとしてハマった話
- 用紙のサイズのまとめ