ニュース
そのGPU、仕事してる?Intelが「GPU Busy」を計測できる監視ツール公開
2023年8月18日 23:00
Intelは18日(現地時間)、同社が“GPU Busy”と定義するメトリックを計測できる無償のGPU監視ツール「PresentMon」のベータ版を公開した。このソフトウェアはIntelのGPUのみならずNVIDIAやAMDのGPUでも動作可能で、オープンソースとしてソースコードはGitHub上で21日より提供するという。
同社が“GPU Busy”と定義する新しいメトリックが誕生した背景はこうだ。現代的なGPU監視ツールのほとんどは、1フレームが処理される時間に対し「Frametime」という指標を用いているのだが、これは「CPUにおいて、前のフレームが描画されるまでの待ち時間+当たり判定などのゲーム処理時間+(CPUの)レンダリング時間」の値(PresentとPresent間の時間)であるのだという。
つまり、Frametimeという指標はゲーム描画における「CPUの処理時間」であって、「GPUの処理時間」ではないわけで、GPUの処理速度を計測する数値としては厳密には正しくない。そこで、GPUが本当に1フレームをレンダリングしている時間を“GPU Busy”というメトリックとして定義しよう、と提唱したわけだ。
GPUの処理が進まなければCPU側の処理も進まないので、FrametimeとGPU Busyは一定の相関関係にある。CPUがGPU処理より高速で、GPUに問題なく仕事を割り振ることができれば問題はない。問題となるのは「GPUの処理がCPUより高速な場合」だ。つまりGPUはレンダリングをさっさと終えたのに、CPUから次のレンダリングの指示(フィード)がなされない場合だ。
特に高性能GPUを使っているにもかかわらず、ゲーム側のグラフィックスの画質設定を「低」にした場合などは、GPU側が先に処理を終えてしまうので、「GPUが待っている時間=仕事をしない時間」が増えることになる。画質設定を低にしてもフレームレートが爆速にならないなら、CPUがボトルネックとなっているということだ。
PresentMonではこのGPU BusyとFrametimeの両方を取得できるので、CPUとGPUにとってバランスが取れた画質設定になっているのか分かる、というわけだ。
IntelがGPU Busyを定義する真意とは
Intelが“GPU Busy”を打ち出したのにはもう1つ理由がある。それは「Intel ArcのGPUはハードウェアとして既に十分に高速で、ドライバの改善でフレームレートが向上できた」ことを証明・アピールするためだ。
Intel Arcのローンチ時のドライバ「バージョン3490」は、一部ゲームにおいてGPU Busyが短くてもFrametimeが長い場合があったのだという。GPU側がレンダリングされるようになるまで、CPU側でドライバを介し、DirectXの描画命令をGPUが理解できる内部命令に変換してGPUに送る必要があるが、このパイプラインで時間がかかってFrametimeが延びていた。
新ドライバ「バージョン4571」以降では、このパイプラインを刷新することでFrametimeを削減し、GPU Busyに近づけることができたのだという。なお、以前のドライバではDirectX 9対応ゲームの性能を向上させたが、新ドライバではDirectX 11対応ゲームの性能も引き上げたのもトピックだ。
ちなみにIntel ArcのドライバはCPU内蔵GPUと共通のインストールパッケージとなっているが、パイプライン刷新を行なったのはディスクリートのArc向けのみ。というのも、内蔵GPUの場合はGPUの処理速度が遅いので、CPU側が十分な命令数をフィードできるからだとしている。