DaVinci ResolveでHDRを編集するとGPUメモリは8GBで足りるのか?

DaVinci ResolveはグラフィックカードのGPUメモリを大量に消費するソフトです。「HDR編集はより多くのGPUメモリを消費するのか?」というのが前から気になっていたので検証してみました。

検証してみようと思った動機

世間一般ではDaVinci Resolveで4K編集するには8GBのGPUメモリがあれば十分と言われているようですが、自分の環境の場合まともに動かず、12GBのカードに替えることで解決したので一体何が違うんだろう?と疑問に思ったのが発端です。

DaVinci Resolve使っていてGPUメモリフルエラーに悩まされてアップグレードを考えてる方も多いので何かのお役に立てればと一度検証してみようと思いました。

さて、8GBでエラーが出ていたときにやっていたことですが、Pocket Cinema Camera 4Kで撮った4K素材に簡単なカラコレして、ノイズリダクション掛けて、HDR動画を書きだすというものです。書き出し中にWIndowsのタスクマネージャーでGPUメモリの使用量が7.5GBを超えてしまうとエラーも何も出ずにデリバーが全く進まなくなっていました。

そういうわけで自分の中では「DaVinci Resolveで4K編集するならば8GBは無理、それ以上は必要」と思っていたわけですが、世間一般的な意見だと8GBで十分…。

さて、自分が何か特別なことをやってるとしたら、そう「HDR動画編集」です。

先に最終結論

明確な答えは出せなかった。

ただノイズリダクションとか重い処理を使うと8GBはギリギリなのでは?という…感想です。根拠はない。

HDRとSDRでGPUメモリの消費量は変わるのか?

こちらも先に結論から言うと「変わらないのでは?」と思いました。

たしかDaVinci Resolveは内部では32bit floatで色を管理していると聞いたことがあります。SDRだろうがそこに突っ込んで管理しているので特にシステムリソースの消費量に差はないんじゃないかとは思っていました。

以下のような検証をしてみました。

検証1 プロジェクトを開く

ドライバはStudio Driverを使ってすべて検証しています。

同じ内容のプロジェクトでプロジェクトのプリセットをSDR用とHDR用を切り替えつつ毎回DaVinci Resolveを終了させて開いてGPUの消費を確認しました。

専用GPUメモリ共有GPUメモリ
1回目4.20.6
2回目4.60.8
3回目4.60.6
平均4.40.6
SDR
専用GPUメモリ共有GPUメモリ
1回目4.50.9
2回目4.60.8
3回目4.50.8
平均4.50.8
HDR

0.3GBほどHDRが消費が多いようですが、SDRの1回目の計測が外れ値のように見えます。

検証2 タイムラインをシークしてみる

タイムラインをSPEED EDITOR使って最初から最後のコマまで、そして最後から最初のコマまでもどった時点でのメモリを計測。計測値のバラツキが大きいと感じたので5回測っています。

専用GPUメモリ共有GPUメモリ
1回目5.51.1
2回目5.92.2
3回目5.92.2
4回目6.12.8
5回目5.82.4
平均5.82.1
SDR
専用GPUメモリ共有GPUメモリ
1回目5.93.3
2回目5.92.7
3回目5.91.6
4回目6.12.1
5回目62.3
平均5.92.4
HDR

これも若干HDRの方が多いか?というぐらい。0.3GBほどHDRが多いような…。ただこれもSDRの一回目が異常値のような…。

今回の検証とは直接関係ないけどオブジェクトマスクを掛けたクリップでGPUメモリが一時的に11.7GBまで消費する現象が起きた。編集内容によって消費量にはだいぶ差がありそう。

検証3 Fusionタイトル追加してデリバー

↓こういう半透明で表示されるときにアニメーションが入る自作のFusionタイトルを動画の上に載せてみた。

専用GPUメモリ共有GPUメモリ
1回目9.66
2回目9.55.9
3回目9.65.9
平均9.55.9
SDR
専用GPUメモリ共有GPUメモリ
1回目95.9
2回目95.9
3回目95.9
平均95.9
HDR

うおう! SDRの方が消費が激しい。そんなことある?

この検証だけDaVinci Resolveを再起動せずにSDRを3回、1回再起動してHDRを3回連続デリバーしたので、たまたまな可能性はある。

あとこれも今回の検証とは関係ないと思うがHDRは一瞬だけ11.7GB GPUメモリ消費したタイミングがあった。その後は普通にデリバーが進んだけど。

あとFusion入れるとデリバーが激遅になる。モーションブラーを掛けているのもあるけど、動き出すときにGPUが跳ね上がる現象が見られた。

以上のように今回の検証では特段HDR動画編集がGPUメモリを消費する傾向はみられなかった。

モニタ接続枚数によってGPUメモリの消費量は変わる?(2022-08-11追記)

当たり前といえば当たり前ですが、変わります

Windowsの設定で外付けモニタを切断または拡張に切り替えて確認してみました。

モニタ枚数専用GPUメモリ共有GPUメモリ
1枚1.60.2
2枚2.00.2
3枚2.30.2
追記 1枚のみも入れて他も結果確認し直しました

1枚4K解像度のモニタを増やすとGPUが0.3~0.4GB消費されました。4K解像度のデータを常に保持しないといけなくなるわけだから、そりゃ増えるよね。

なので、うちの環境はシングルモニタ環境に比べると0.7GBぐらいはGPUを多めに使っていることになります。ただ、それぐらいの変動は使っているエフェクトなどで普通にありそうなので決定打と言えるかというと微妙ですが、ギリギリで動いているとなるとGPUメモリ不足になる可能性は高くなるでしょう。

やはり感覚的には8GBはギリギリ12GBあると安心

今回の検証はクリーンインストールして余計なソフトが入ってない環境まで作って確認してはいないので、DaVinci Resolveだけではなく常駐アプリが多数起動していたり、メモ用のNotionだったりが立ち上がっている中でやっています。頻繁にGPUメモリ使用量も変動しているので、「荒い」検証になっています。検証言うよりちょっと試してみたレベル。

ただ、先に書いたようにHDRだからという傾向は見えなかったです。

今回の検証したPCは先日Windows11を修復機能でインストールしたので環境的にはまだマシな状況です。ただ、実際DaVinci Resolveで問題が起きていた8GB GPU時代はというと、けしてクリーンな環境とは言えないです。趣味PCでゲームもたくさん入ってますし(笑)

実際クリーンな環境ではないとはいえ8GBのGPUメモリで散々な目にあっているので、そういうストレスから解放されたいのであればやはりRTX3060のように12GBメモリを備えたGPUカードを個人的にはお勧めします。

8GBで頑張ってた時はレンダーキャッシュの画質上げてレンダーキャッシュが貯まりきってデリバー掛けたり、複合クリップにしたら進むのでそうしてみたり、本当に大変だったので(汗)

追記 専用GPUが既に8GB超えてるやんけ

たしかに今回の検証結果をみると専用GPUメモリが9GB使用している。

「じゃあ8GB超えてるから、あきらかに足りないやんけ」となるかというと、おそらくそうではない。自分はGPUプログラムは専門外なので間違ってる可能性あるけど、PC関係の高速化の技術としてメモリはキャッシュ用途にも使われる。キャッシュというのは一度メモリにロードしたデータを次も使うかもしれないと言うことでしばらく保持しておくこと。新しいデータをメモリにロードしないといけないのに空きがないと言うときは、キャッシュを破棄して新しいデータをメモリにロードする。

ようするに念のために取ってるだけのデータなので本当に今やる処理に必要なデータはというのはもっと少ないかもしれない。だいたいメモリはあればあるだけガンガン使って効率良く動くように設計されているアプリケーションも多いので、一概に9GB使われていると結果が出ていても、もしかしたらキャッシュが4GBつかってるのであれば、実際は4GBは余裕があるということになる。GPUメモリにもキャッシュの仕組みがあるならば、今回の結果だけをみて既に足りてないとは言えない。