テストレポート
AMDのGPUOpenから登場した「OCAT」を試す。DX12とVulkan,そしてUWPタイトルのベンチマークを行えるツールは「使える」か?
その解決策の1つが,Intelの開発した「PresentMon」と,それを使いやすくした「PresentMonLauncher」である。
PresentMonLauncherについては2016年8月8日掲載の記事が詳しいが,簡単に振り返っておくと,これは,Windows 10に組み込まれているイベントトレース機能を使い,3Dグラフィックスの描画タイミングをトレースすることで,フレームレートの計測を行うもの。しかしPresentMon自体が,DirectX 12 APIを用いてレンダリングされた画像を表示する「Present」メソッド周りのデータを出力する開発者向けツールということもあり,エンドユーザーの立場からすると,PresentMonLauncherであっても使い勝手は今ひとつだ。
そんなこんなで,DirectX 12やVulkanベースのタイトルでベンチマークを行うのはなかなか大変なのだが,その状況を一変させるかもしれないツールが,「Radeon Software Crimson ReLive Edition」と一緒に,AMDから――より正確を期すならば,オープンソースのGPU対応アプリケーション開発支援フレームワークとしてAMDが提唱する「GPUOpen」から登場し,GitHubで入手できる「OCAT」(Open Capture Analystics Tool,オーキャット)である。
NVIDIA製のフレームレート計測システム「Frame Capture Analysis Tool」(略称:FCAT)を意識した印象も受ける名称だが,果たしてこのツールは「使える」のか否か。ちょっと検証してみたい。
GitHubのOCATページ
Fraps感覚で利用できるOCAT。フレームレートのリアルタイム表示も可能
OCAT自体は,PresentMonと同じく,Presentメソッドを用いてフレームレートの計測を行うツールだ。今回スクリーンショット取得に用いたのはバージョン0.9.9 Beta(Version 0.9.9.26451)だが,起動すると,以下のとおり「OCAT Configuration」が開くようになっている。
各段のタイルはそれぞれ,クリックすることで変更を行えるようになっている。それぞれのタイルの意味は下にまとめてみたので,参考にしてほしい。
- Recording Hotkey:計測開始に使うホットキーを変更できる。デフォルトは[F11]キー。「修飾キーと何かのキーの組み合わせ」のような複数のキーを設定することはできない
- Recording Time Period in Seconds:計測時間を秒単位で指定できる。デフォルトは「60」秒
- Capture All Applications / Capture Single Application:計測対象となるアプリケーションの指定。デフォルトは「Capture All Applications」で,アクティブになっているアプリケーションの計測を行う。「Capture Single Application」を選択するとウインドウ表示が少し変わるので,そこから「Select target executable」をクリックしてダイアログを出し,実行ファイルを指定することで,任意のアプリケーションのみを計測対象とすることができる
- Write performance summary / Write detail perfomance report / Record performance for all processes:Write performance summaryは,有効にすると,計測結果の要約として「平均フレームレート」「平均フレームタイム」(※1フレームを描画するのに必要な時間の平均値)「フレームタイムの99%パーセンタイル値」(※突出した最大値を除く,全体の99%がこのフレームタイム内に収まることを意味する)が概要データファイルとして出力されるようになる。Write detail performance reportは有効化すると,Presetメソッドに関する詳細なデータがレポートファイルに出力されるようになる。Record performance for all processesは有効化すると,ゲームを複数起動している場合などで,その複数のプロセスに対して計測を行い,プロセスごとにレポートファイルが生成されるようになる。無効化すると,対象はアクティブウインドウのみとなる仕組みだ。いずれもチェックボックスはデフォルトで有効
- Start:利用開始用のボタン。クリックすると,ゲーム画面の右上にリアルタイムでフレームレートとフレームタイムが表示されるようになる
Capture Single Applicationを選択し,実行ファイルを指定したところ。「Target executable」に,指定した実行ファイルが表示される |
Startのタイルをクリックしたところ。ゲーム画面の右上に,こんな感じでフレームレートとフレームタイムがオーバーレイ表示となる |
Startのタイルをクリックして,ゲーム画面の右上にフレームレートとフレームタイムが出た状態で,設定したホットキーを押すと,追加で「Capture Started」と表示が出て実際の計測が始まり,あらかじめ指定した時間が経過すると,「Capture Ended」と合わせて計測結果概要が表示される。この概要はOCAT ConfigurationでWrite performance summaryにチェックを入れたときに書き出される概要データファイルの内容そのものなのだが,いちいち結果ファイルを開かずとも,画面上で数字を確認できるのは,使ってみると非常に便利だ。
ただし,筆者が確認したところ,GeForce搭載環境ではDirectX 12モードの「Battlefield 1」(以下,BF1)でフレームレートとフレームタイムのリアルタイム表示が機能せず,またUWP(Universal Windows Platform)準拠である「Forza Horizon 3」では,GeForce,Radeonともにリアルタイム表示が機能しなかった。このあたり,まだ発展途上のアプリケーションである感は否めない。
ちなみに,概要データファイルおよびレポートファイルは,Windowsをデフォルトで構成しているなら,「C:\ユーザー
DirectX 12とVulkanで,OCATとPresentMonLauncher,さらにFCATを比較。テストする前からOCATの優位性が判明!?
では,OCATのスコアはどれほど信頼できるのか,今回は「GeForce GTX 1080」「GeForce GTX 1060 6GB」「GeForce GTX 1050 Ti」(以下,GeForce表記を省略)と,「Radeon R9 Fury X」「Radeon RX 480」「Radeon RX 460」(以下,Radeon表記を省略)といった具合に,現行世代のハイエンド,ミドルハイクラス,エントリーミドルクラスを両陣営から3製品ずつ用意した。それぞれ,OCATで平均および最小フレームレートを計測したうえで,そのスコアをPresentMonLauncher,そしてFCATのスコアと比較し,計測結果が信頼に足るものか見ていこうというわけである。
テスト環境は表のとおりで,GTX 1050 Tiカードとして用意したMSIの「GeForce GTX 1050 Ti 4G OC」と,RX 460カードとして用意したTul製「PoweColor Radeon RX 460 2GB GDDR5」(型番:AXRX 460 2GBD5-DH/OC)は,メーカーレベルで動作クロックを引き上げたクロックアップモデルであるため,今回はMSIのオーバークロックツール「Afterburner」(Version 4.3.0)で,動作クロックをリファレンスレベルにまで下げて利用していることをお断りしておきたい。
なお,テストに用いるグラフィックスドライバは,「GeForce 376.19 Driver」と「Radeon Software Crimson ReLive Edition 16.12 Pre-Release」。いずれもテスト開始時点の最新版で,後者はAMDから全世界のレビュワーに対して配布されたものである。
今回,テストのために用意したのは,DirectX 12モードのBF1と,Vulkanモードの「DOOM」,そしてDirectX 12モードのForza Horizon 3……のはずだったが,まずPresentMonLauncherは,Forza Horizon 3がUWPアプリであることが原因なのか,プロセスをフックすることができず,動作しなかった。
さらにFCATは,計測に必要な「カラーバーを表示させるオーバーレイツール」(関連記事)が,なんとBF1以外では動作せず。NVIDIAに問い合わせたところ,「Vulkanはサポート対象外。DirectX 12はサポートしており、『Forza Motorsport 6: Apex』での動作は確認済みだが,Forza Horizon 3で動作しない理由は分からない」という回答だったので,現状,どうしようもない状況だ。
よって,「OCATとPresentMonLauncher,FCATを比較する」という目的を完遂できたのは,今回のテスト対象だとBF1だけということになる。いきなり互換性の面でOCAT大勝利という言い方もできるだろう。
話は前後するが,具体的なテスト方法を紹介しておきたい。
BF1は,グラフィックス設定プリセット「中」もしくは「最高」を選択し,キャンペーンモードの「4. ランナー」からステージ2の「THE RUNNER」を利用。このマップにおいて1分間,一定のルートを移動し,その間のフレームレートを計測する。自分で操作するという不確定要素があるため,2回テストを実施し,その平均をスコアとして採用することにした。
DOOMでは,グラフィックス設定プリセット「中」「ウルトラ」の2つを選択。テストにあたっては,アーケードモードの「UAC」ステージにおいて,1分間一定のルートを移動し,その間のフレームレートを計測する。
実際に操作してみると,敵の動きなどがAIにより毎回異なっても,スコアに大きなバラつきは見られなかったが,こちらも「実際に操作する」という不確定要素が入るため,やはり2回テストを行い,その平均をスコアとして採用する。
そしてForza Horizon 3では「SURFERS PARADISEフェスティバルサイト」近くを走る海岸沿いの一直線の道路を利用する。
この道路の両端には速度のランキングを行うスピードゾーンが2か所設けられている。そこで,片方のスピードゾーンに進入したところで計測を開始すると,もう片方のスピードゾーンに差し掛かったあたりでちょうど1分となる。ほぼ一直線なので,ほかの車を避ける必要はあるが,基本的に前進の操作だけで済むというわけだ。
こちらでは,グラフィックス設定プリセットは「ミディアム」と「ウルトラ」を選択。Forza Horizon 3の場合は,天候によってスコアが大きく変わるため,雨だった場合は,しばらく時間を置き,晴れもしくは曇りの環境下でのみテストを行うことにした。
テスト解像度は1920
なお,これは言うまでもないことだとは思うが,念のため書いておくと,今回のテストは,取り上げるGPU間の優劣を語るためのものではない。あくまでも,GPUごとに,ベンチマークテストの傾向がどう出るかを見るためのものなので,くれぐれも,異なるGPU間でスコアの比較をしないようお願いしたい。
OCATのスコアに違和感なし
まずは,OCATとPresentMonLauncher(以下,グラフ中のみ「PML」),FCATのすべてでスコアを取得できたBF1から見ていこう。
グラフ1~6はBF1の結果で,あえていえばOCATのスコアが低め,FCATのスコアが高めであるものの,総じて,平均フレームレート,最小フレームレートとも,それほど大きな違いは出ていない。少なくともOCATでRadeonが露骨に有利とか,そういったことはないと断言してしまっていいだろう。
なお,本稿の主旨から外れることを断って続けると,「最高」プリセットでは,GTX 1080でも最小フレームレートは40fpsを超えるのがやっというレベルで,BF1は“重い”場所だと相応にGPU性能を必要とする印象である。
フレームレートの推移自体にも違いはないのか。BF1でOCATとPresentMonLauncher,FCATのそれぞれが記録したデータを見てみよう。
グラフ7は「最高」プリセットの解像度1920
むしろ,縦方向のスパイク(突起)が大きく,これが平均フレームレートを押し上げた気配を感じられるFCATと比べると,OCATやPresentMonLauncherのほうがスコアは安定していると言えるかもしれない。
グラフ8~13はDOOMの結果となる。DOOMではOCATとPresentMonLauncherのみの比較となるが,こちらでも両者のスコアにこれといった違いは生じていない。BF1と似た傾向が出ているわけだ。
なお,ここでも横道に逸れてみると,Vulkan版DOOMでは解像度1920
最後にグラフ14~19は,もはや比較には使えないが,OCATで取得したForza Horizon 3のテスト結果である。GPUごとのスコア傾向自体は――R9 Fury Xがグラフィックスメモリ容量不足を露呈している気配がある点も含め――DOOMのそれに近いので,おおむね破綻はないと言っていいのではなかろうか。
それにしても,UWP準拠のゲームタイトルでも問題なく計測できるOCATは,とても素晴らしい。
DX12&Vulkan時代のFrapsになる可能性高し。今後の機能&互換性向上にも期待
以上,「そもそも動作しない」という問題を抱えるPresentMonLauncherおよびFCATと比べると,(正式に試したのが3タイトルのみとはいえ)OCATの信頼性は非常に高かった。また,BF1やDOOMで得られるスコアを勘案するに,信頼性は十分なレベルにあると述べていいのではないかと思う。
筆者のように,何十回とテストを繰り返すような人には,簡易的にでもテスト結果をゲーム画面上で確認できるのはとても便利で,また,そうでない場合でも,DirectX 12やVulkanベースのタイトルでフレームレート(やフレームタイム)を参照できるのは役立つはずだ。
まだ,特定のアプリケーションとGPUの組み合わせで不具合があったりもするが,そこはオープンソースプロジェクト,少しずつでもアップデートは入っていくだろう。
今回のテストを通じて,筆者はOCATに「使える」手応えを感じており,今後,GPUなどのテストで積極的に活用していきたいと考えている。
GitHubのOCATページ
- 関連タイトル:
ベンチマーク
- この記事のURL: