RenderDoc で GPU カウンター(ハードウェアカウンタ-) の値を見ることができます。NVIDIA GPUを使用する場合では、準備が必要なので、その手順を説明します。
準備
NVIDIA GPUを使う場合、GPUカウンタ-へのアクセスのためにライブラリの導入が必要です。これは、Nsight PerfSDK library というもので、NVIDIA の Web サイトからダウンロードする必要があります。
このサイトからzip ファイルをダウンロードします。この zip ファイルに含まれる「nvperf_grfx_host.dll」ファイルを RenderDoc が認識する以下のフォルダにコピーします。
- %USERPROFILE%\AppData\Roaming\renderdoc\plugins\nv
GPUカウンタ-の取得・確認
RenderDoc を起動して、アプリケーションのキャプチャを取得します。
その後、 Performance Counter Viewer を開きます。(表示されていない場合には、メニュー/Window/Performance Counter Viewer と辿って開いてください)。このウィンドウ内にある Capture Counters ボタンを押すと、以下のようなカウンタ-を選択するウィンドウが表示されます。
もしここでエラーが表示されているようであれば、DLLのコピーが正しく行われているか、パスの間違いがないかなどを確認してみてください。このあと、Sample counters ボタンを押すとカウンタ-の値をサンプリングして、結果を表示します。
Vulkan のカウンター
一般的な Vulkan Built-in カウンターも用意されています。以下のようなものが用意されていました。こちらについては、準備不要・管理者として実行も不要で値を得ることができるようです。
まとめ
NVIDIA GPUの場合、GPUカウンタ-値を得るための準備が必要なので、その手順を紹介しました。AMD GPUの場合には標準(準備不要)で使えるらしいです。こちらは未確認です。
参考
- https://renderdoc.org/docs/window/performance_counter_viewer.html
余談、背景情報
RenderDoc の Event Browser で表示することが出来る Duration の値は、正確ではないようです。
手元では誤差とは思えない大きな値が表示されており、また、Duration表示のON/OFF を切り替えるたびに値の変動が大きいので、値の参考にできないと感じました。
そこで、今回のようにGPUのカウンターを得る方法にしました。ただし、Vulkan Built-in の GPU Duration カウンターの値は割と正しい値によっているようなので、こちらは信じてよいのかもしれません。しかし、これもまた Nsight Graphics で表示されるものと差分が大きいので、だんだんどれを信じてよいかわからなくなります。ベンダー提供ツールの値を一番信用したい、次点でGPUカウンターを信じたいところではあります。
ただし、AndroidなどのGPUではどのみち描画コマンド単位の計測には意味がないので、その点は気をつける必要があります。
情報
今回は、以下の環境を対象として記載しています。他の環境ではまた異なる状況となる可能性があります。
- Windows11
- NVIDIA Geforce RTX 3060
- ドライババージョン 537.58
- RenderDoc v1.30
- Nsight PerfSDK 2023.5
コメント