この記事は、インテル® デベロッパー・ゾーンに公開されている「Game Tuning with Intel」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
この記事の PDF 版はこちらからご利用になれます。
はじめに
ハードウェアの仕様が異なる複数のプラットフォームで優れたパフォーマンスを発揮するゲームを作成することは、困難な作業です。複数の要因がパフォーマンスの問題を引き起こし、満足のいくゲームプレイができない可能性があります。
このドキュメントは、ゲーム開発者がインテル® グラフィックス・パフォーマンス・アナライザー (インテル® GPA) をすばやく使いこなせるようになることを目的としています。トレース、ストリーム、フレームのキャプチャーや、ゲームが GPU または CPU のどちらに依存しているかの判断などの基本を説明します。また、ツールをより深く理解するのに役立つ追加情報も提供します。
用語とツール
- グラフィックス・モニター: インテル® GPA 解析ツールのハブツール。トレース、ストリーム、またはフレーム・キャプチャー・オプションを設定できます。
- グラフィックス・トレース・アナライザー: GPU と CPU のリソースおよびアプリケーション・データを分配する際の問題の特定に使用します。CPU スレッド・アクティビティーから GPU 呼び出しと実行に至るまで、ゲームに関するあらゆるアクティビティーを視覚化します。
- グラフィックス・フレーム・アナライザー: キャプチャーしたフレームを探索し、特定の API 呼び出しがレンダリング・パイプラインのさまざまなステージでパフォーマンスに与える影響を理解するのに使用します。フレーム・レンダリング時間を短縮し、ドローコールの問題を確認し、レンダリング・パイプラインの各ステージでフレーム/秒 (FPS) にどのような影響があるかを理解できます。
- CPU 依存: CPU が常にビジー状態で、GPU にアイドルスポットがある場合、CPU に依存します。CPU がビジーであるとフレームで GPU にワークを割り当てることができないため、GPU はそれ以上作業することができません。
- GPU 依存: 逆に、GPU が常にビジー状態で、CPU にアイドルスポットがある場合、GPU に依存します。GPU の作業を最適化し、CPU がより多くの作業を GPU に割り当てることができるようにします。
- トレース: グラフィックス・トレース・アナライザーがトレースをキャプチャーすると、アプリケーション実行中の CPU と GPU の両方のアクティビティーが記録されます。デフォルトでは、5 秒間のデータがキャプチャーされます。
- フレーム: 1 つのフレームとそれに関連するリソース、テクスチャー、シェーダー、バッファー、およびその他のデータ。
- ストリーム: キャプチャーしたフレームのコレクション。
パフォーマンス解析のステップ
ステップ 1: グラフィックス・モニターでトレースをキャプチャーします。トレースには、CPU 呼び出しと GPU パケット間の依存関係などが表示されます。
ステップ 2: ゲームが GPU 依存か、CPU 依存かを判断するため、グラフィックス・トレース・アナライザーでトレースを解析します。
ステップ 3: GPU 依存の場合は、グラフィックス・モニターでストリームをキャプチャーします。これにより、フレームの詳細が得られます。
ステップ 4: キャプチャーしたストリームやフレームをグラフィックス・フレーム・アナライザーで解析します。
ステップ 5: ゲームが CPU 依存の場合は、インテル® VTune™ プロファイラーで CPU ボトルネック解析を開始します。
開発者は通常、ゲーム内のパフォーマンスが重要な領域を把握しています。不明な場合は、FPS カウンターを表示するゲーム・エンジン・ツールを使用するか、グラフィックス・モニターのキャプチャー・ウィンドウのヘッドアップ・ディスプレイ (HUD) に内蔵されている FPS カウンターを使用できます。
まず、ゲーム内でフレームレートが低下している場所や、視覚的な忠実性を向上させたい場所を特定し、グラフィックス・モニターでキャプチャーします。その後、グラフィックス・トレース・アナライザーで GPU と CPU の動作を視覚化したデータを確認します。最大の問題がどこにあるかを特定したら、グラフィックス・フレーム・アナライザーで GPU ボトルネックの詳細を掘り下げるか、インテル® VTune™ プロファイラーで CPU ボトルネックを調査します。
ステップ 1: グラフィックス・モニターでトレースをキャプチャーする
注: グラフィックス・モニターでメトリックデータをキャプチャーするには、Windows* で開発者モードを有効にしてください。
インテル® GPA は、すべてのサードパーティー製 GPU からすべてのメトリックを収集することはできませんが、大部分のメトリックは収集できます。
グラフィックス・モニターは、インテル® GPA 解析ツールのハブツールです。グラフィックス・モニターでは、トレース・キャプチャーとストリーム・キャプチャーのオプションと設定を選択します。
グラフィックス・モニターには、トレース、ストリーム、フレームという 3 種類のキャプチャー・オプションがあります。これらのいずれかをキャプチャーすると、グラフィックス・モニターの右側にキャプチャーとキャプチャーの種類を表すアイコンが表示されます。次の 3 つの画像は、異なる3 つの種類のキャプチャーを示しています。
図 1: トレース・キャプチャー
図 2: ストリーム・キャプチャー
図 3: フレーム・キャプチャー
グラフィックス・モニターでトレースをキャプチャーすると、グラフィックス・トレース・アナライザーでトレースを開いたときに、GPU および CPU コアの時系列の状態を視覚的に確認できます。
グラフィックス・モニターでは、キャプチャー時間を秒単位で変更可能です。
図 4: グラフィックス・モニターの [Options] ボタンを選択
[Options] で [Trace] タブを選択します。[Trace Duration (sec)] に秒単位で設定します。トレース・キャプチャーは大きくなる可能性があるので、キャプチャー時間はなるべく短くしておくとよいでしょう。
図 5: [Trace Duration (sec)] を秒単位で変更
トレースをキャプチャーするには、次の操作を行います。
- ゲームの実行ファイルを選択します。
- 必要に応じて、コマンドライン引数を設定します。
- キャプチャーの種類 (ここでは Trace) を選択します。
- [Start] をクリックします。
図 6: トレース・キャプチャーを開始
HUD オーバーレイ付きでゲームの実行ファイルが起動されます。HUD オーバーレイには、基本メトリックと主な指標が表示されます。遅延キャプチャーを選択した場合、トレースを開始するキーが表示されます。
図 7: HUD オーバーレイ付きでゲームを実行 (キーを押すとトレースが開始されます)
次のビデオと関連記事は、グラフィックス・トレース・アナライザーで表示するトレースのキャプチャーについて説明しています。
- ビデオ: トレースの設定とキャプチャー (英語)
- 記事: トレースの設定とキャプチャー (英語)
ステップ 2: グラフィックス・トレース・アナライザーでトレースを解析してゲームが GPU 依存か CPU 依存か判断する
パフォーマンスを解析する場所を特定し、グラフィックス・モニターでトレースの種類を指定してトレースをキャプチャーしたら、次のステップに進みます。
図 8: トレースアイコンをクリックしてグラフィックス・トレース・アナライザーを起動
グラフィックス・トレース・アナライザーを起動するには、トレースアイコンをクリックします。
注: 大量のデータを読み込むため、アプリケーションの起動には数分かかる場合があります。
グラフィックス・トレース・アナライザーは、数秒間のゲームプレイからデータを収集して、CPU の実行タスク、GPU のレンダリング・パケット、CPU と GPU のアクティビティーを視覚化します。トレース・キャプチャーでは、通常、3 ~ 5 秒間のゲームプレイがキャプチャーされます。
詳細は、次のビデオと関連記事を参照してください。
- ビデオ: トレースを開いて調査する (英語)
- 記事: トレースを開いて調査する (英語)
グラフィックス・トレース・アナライザーでは、キャプチャーしたデータにズームインできます。図 9 と図 10 から、ゲームはこのタイムスライスでは GPU 依存であることが分かります。CPU 実行にギャップがあり (図 9)、その間 GPU は常にビジー状態です (図 10)。
図 9: CPU 実行
図 10: GPU 実行
グラフィックス・トレース・アナライザーについては、以下を参照してください。
ステップ 3: GPU 依存の場合はグラフィックス・モニターでストリームをキャプチャーする
ストリームは、1 つまたは複数のフレームからデータ (テクスチャー、バッファー、シェーダー呼び出し、ハードウェア・カウンター) をキャプチャーします。これを解析してレンダリング・パイプラインのボトルネックを見つけ、ゲームの最適化に役立てることができます。
ストリーム (またはシングルフレーム) をキャプチャーするには、グラフィックス・モニターを開きます。テクスチャー、ピクセル履歴、その他のリソースなどの詳細な GPU アクティビティーを解析するキャプチャーの種類として、ストリーム (またはフレーム) を選択します。
ゲームプレイの任意の時点で複数のストリームをキャプチャーするため、遅延ストリーム・キャプチャーを有効にしてください。そうしないと、ゲームが始まってからキャプチャー・ウィンドウを閉じるまで、キャプチャーが強制的に行われます。グラフィックス・モニターの [Options] セクションで [Defer stream capture] をオンにします。
図 11: 遅延ストリーム・キャプチャーをオンにするため [Options] をクリック
図 12: [Stream] タブを選択して [Defer stream capture] をオンにする
次のビデオと関連記事は、グラフィックス・トレース・アナライザーでフレームの詳細を表示するため、ストリームをキャプチャーする方法について説明しています。
シングルフレームのキャプチャー
- ビデオ: フレームの設定とキャプチャー (英語)
- 記事: フレームの設定とキャプチャー (英語)
ストリームのキャプチャー (推奨)
- ビデオ: 複数のフレームの設定とキャプチャー (英語)
- 記事: 複数のフレームの設定とキャプチャー (英語)
グラフィックス・モニターでストリームをキャプチャーすると、グラフィックス・フレーム・アナライザーでそれを開いてストリームの解析を開始できます。グラフィックス・フレーム・アナライザーを起動するには、グラフィックス・モニターでストリームをダブルクリックします。
図 13: キャプチャーしたストリームをグラフィックス・トレース・アナライザーのマルチフレーム・ビューで表示
ステップ 4: キャプチャーしたストリームやフレームをグラフィックス・フレーム・アナライザーで解析する
グラフィックス・モニターでストリームをキャプチャーした後、グラフィックス・フレーム・アナライザーで解析を開始します。
グラフィックス・フレーム・アナライザーでは、ストリームをマルチフレーム・ビューで開き、マルチフレーム・ストリームを視覚化できます。ここで、注目するシングルフレームを特定します。フレームを選択して開き、ドローコール・レベルまでプロファイルします。
次のビデオと記事は、グラフィックス・フレーム・アナライザーの UIに慣れるのに役立ちます。
- ビデオ: シングルフレームを開いて調査する (英語)
- 記事: シングルフレームを開いて調査する (英語)
詳細は、次のビデオの Hotspot セクションを参照してください。
- ビデオ: 棒グラフと API ログの操作 (英語)
Hotspot 解析では、呼び出しをタイプ別に集計できるため、最も影響が大きい、時間のかかる、または問題のある呼び出しタイプを最適化できます。タイプ別に修正することで、ゲームの複数のセクションを最適化できる場合があります。
高度なプロファイル (Hotspot) モード解析の動作は、ビデオ「『The Lost Legends of Redwall*』とインテル® グラフィックス・パフォーマンス・アナライザー」 (英語) を参照してください。ビデオでは、高度なプロファイル (Hotspot) モードでこのゲームの問題を発見し、問題に対処した結果、ゲームのパフォーマンスが 3 倍以上向上したことを紹介しています。
グラフィックス・フレーム・アナライザーの詳細は、次のリソースを参照してください。
ステップ 5: CPU 依存の場合はインテル® VTune™ プロファイラーで CPU ボトルネックを解析する
CPU 依存解析の詳細は、インテル® VTune™ プロファイラーのページ (英語) を参照してください。
関連情報
ゲームの最適化手法 (英語)
インテル® グラフィックス・パフォーマンス・アナライザー (インテル® GPA) ユーザーガイド (英語)
製品および性能に関する情報
1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。