注
Visual Studio グラフィックス診断は、ARM64 Visual Studio ではサポートされていません。
パフォーマンス プロファイラーの GPU 使用率ツールを使用して、Direct3D アプリのハードウェア使用率の概要を理解します。 これは、アプリのパフォーマンスが CPU にバインドされているか GPU にバインドされているかを確認し、プラットフォームのハードウェアをより効果的に使用する方法に関する分析情報を得るのに役立ちます。 GPU 使用率は、Direct3D 12、Direct3D 11、および Direct3D 10 を使用するアプリをサポートしています。 Direct2D や OpenGL などの他のグラフィックス API はサポートされていません。
GPU 使用状況レポート ウィンドウの外観を次に示します。
要求事項
GPU 使用率ツールを使用するには、グラフィックス診断の要件に加えて、次のものが必要です。
必要なタイミング インストルメンテーションをサポートする GPU とドライバー。
注
サポートされているハードウェアとドライバーの詳細については、このドキュメントの最後にある 「ハードウェアとドライバーのサポート 」を参照してください。
グラフィックス診断の要件の詳細については、「 概要」を参照してください。
GPU 使用率ツールを使用する
GPU 使用率ツールでアプリを実行すると、Visual Studio によって診断セッションが作成されます。 このセッションでは、アプリのレンダリング パフォーマンスと GPU 使用率に関する高レベルの情報をリアルタイムでグラフ化します。
GPU 使用率ツールを起動するには:
メイン メニューで、[デバッグ]>[パフォーマンスと診断] を選択します (または、キーボードで Alt キーを押しながら F2 キーを押します)。
[パフォーマンスと診断] ハブで、[GPU 使用率] の横にあるチェック ボックスをオンにします。 必要に応じて、目的の他のツールの横にあるチェック ボックスをオンにします。 複数のパフォーマンス ツールと診断ツールを同時に実行して、アプリのパフォーマンスをより詳細に把握できます。
注
すべてのパフォーマンス ツールと診断ツールを同時に使用できるわけではありません。
[パフォーマンスと診断] ハブの下部にある [スタート] を選択し、選択したツールの下でアプリを実行します。
リアルタイムで表示される高レベルの情報には、フレームのタイミング、フレーム レート、GPU 使用率が含まれます。 これらの各情報は個別にグラフ化されますが、それらはすべて共通の時間スケールを使用するため、リレーションシップを簡単に理解できます。
フレーム時間 (ミリ秒) グラフとフレーム/秒 (FPS) グラフには、パフォーマンス目標が 60 フレームと 30 フレーム/秒の 2 本の赤い水平線があります。 フレーム タイム グラフでは、グラフが線の下にあるときにアプリがパフォーマンス ターゲットを超え、グラフが線の上にあるとターゲットが見落とされます。 1 秒あたりのフレーム数グラフの場合、これは逆です。グラフが線の上にある場合、アプリはパフォーマンス ターゲットを超え、グラフが線の下にある場合はターゲットを見落とします。 これらのグラフは、主にアプリのパフォーマンスの概要を把握し、調査する可能性のあるスローダウンを特定するために使用します。 たとえば、フレーム レートが急激に低下したり、GPU 使用率が急増したりする場合は、さらなる調査が必要になる場合があります。
アプリが GPU 使用率ツールで実行されている間、診断セッションでは、GPU で実行されたグラフィックス イベントに関する詳細情報も収集されます。 この情報を使用して、アプリがハードウェアを利用する方法に関するより詳細なレポートを生成します。 このレポートは収集された情報から生成されるまでに時間がかかるため、診断セッションの収集が完了した後にのみ使用できます。
パフォーマンスまたは使用率の問題をより詳しく確認する場合は、パフォーマンス情報の収集を停止して、レポートを生成できるようにします。
GPU 使用率レポートを生成して表示するには:
診断セッション ウィンドウの下部で、[ 収集の停止 ] リンクを選択するか、左上隅の [停止 ] を選択します。
レポートの上部で、調査する問題を示すグラフの 1 つからセクションを選択します。 選択できる時間は最大 3 秒です。 長いセクションは冒頭付近で切り捨てられます。
選択内容の詳細なタイムラインを表示するには、レポートの下部の ...この範囲メッセージの GPU 使用率の詳細を表示するには、ここをクリックし 、[ 詳細の表示] を選択します。
この選択により、レポートを含む新しいタブ付きドキュメントが開きます。 GPU 使用率レポートは、グラフィックス イベントが CPU で開始されたとき、GPU に到達したとき、および GPU の実行にかかる時間を確認するのに役立ちます。 この情報は、コード内の並列処理の増加のボトルネックと機会を特定するのに役立ちます。
GPUView または Windows Performance Analyzer へのエクスポート
Visual Studio 2017 以降では、 GPUView と Windows Performance Analyzer を使用してこのデータを開くことができます。 診断セッションの右下隅にある [GpuView で開く ] または [ WPA で開く ] リンクを選択するだけです。
GPU 使用率レポートを使用する
GPU 使用率レポートの上部には、CPU 処理アクティビティ、GPU レンダリング アクティビティ、GPU コピー アクティビティのタイムラインが表示されます。 これらのタイムラインは、ディスプレイの垂直同期 (vsync) を示す明るい灰色の垂直バーで分割されます。 バーの頻度は、GPU 使用状況データが収集されたディスプレイの 1 つのリフレッシュ レートと一致します ( [表示 ] ドロップダウン リストを使用して選択)。
表示の更新レートがアプリのパフォーマンス ターゲットよりも高くなる可能性があるため、vsync とアプリで実現するフレーム レートの間に 1 対 1 の関係がない可能性があります。 パフォーマンス ターゲットを満たすには、アプリがすべての処理を完了し、レンダリングを実行し、対象となるフレーム レートで Present()
呼び出しを行う必要があります。 ただし、レンダリングされたフレームは、 Present()
後の次の vsync まで表示されません。
GPU 使用率レポートの下部には、レポートの期間中に発生したグラフィックス イベントが一覧表示されます。 イベントを選択すると、関連するタイムライン内の対応するイベントにマーカーが表示されます。 通常、CPU スレッド上の 1 つのイベントは API 呼び出しを示し、GPU タイムラインの別のイベントは GPU がタスクを完了したタイミングを示します。 同様に、タイムラインでイベントを選択すると、レポートの下部にある対応するグラフィックス イベントが強調表示されます。
レポートの上部にあるタイムラインを縮小すると、最も時間のかかるイベントのみが表示されます。 期間が短いイベントを表示するには、ポインティング デバイスで Ctrl キーを押しながらホイールを使用するか、上部パネルの左下隅にあるスケーリング コントロールを使用してタイムラインを拡大します。 タイムライン パネルの内容をドラッグして、記録されたイベント間を移動することもできます。
探しているものを見つけるには、プロセス名、スレッド ID、およびイベント名に基づいて GPU 使用率レポートをフィルター処理します。 さらに、どのディスプレイのリフレッシュ レートによって vysnc 行を決定するかを選択できます。 アプリで ID3DUserDefinedAnnotation インターフェイスを使用してレンダリング コマンドをグループ化する場合は、イベントを階層的に並べ替えることができます。
詳細は次のとおりです。
フィルター コントロール | 説明 |
---|---|
処理 | 関心のあるプロセスの名前。 診断セッション中に GPU を使用したすべてのプロセスは、このドロップダウン リストに含まれます。 プロセスに関連付けられた色は、タイムライン内のスレッドのアクティビティの色です。 |
スレッド | 関心のあるスレッド ID。 マルチスレッド アプリでは、この情報は、関心のあるプロセスに属する特定のスレッドを分離するのに役立ちます。 選択したスレッドに関連付けられているイベントは、各タイムラインで強調表示されます。 |
ディスプレイ | リフレッシュ レートが表示されるディスプレイの番号。 一部のドライバーは、複数の物理ディスプレイを 1 つの大きな仮想ディスプレイとして表示するように構成できます。 マシンに複数のディスプレイが接続されている場合でも、表示されるディスプレイは 1 つだけです。 |
フィルター | 関心のあるキーワード。 レポートの下部のイベントには、キーワードに一致するもの (完全または部分的) のみが含まれます。 複数のキーワードをセミコロン (;)で区切ることで指定できます。 |
階層の並べ替え | ユーザー マーカーを使用して定義されたイベント階層を保持するか無視するかを示すチェック ボックス。 |
GPU 使用率レポートの下部にあるイベントの一覧には、各イベントの詳細が表示されます。
コラム | 説明 |
---|---|
イベント名 | グラフィックス イベントの名前。 通常、イベントは CPU スレッド タイムラインのイベントと GPU タイムライン イベントに対応します。 GPU 使用率がイベントの名前を特定できない場合、イベント名が割り 当 てられていない可能性があります。 詳細については、次の表の注を参照してください。 |
CPU の開始 (ns) | Direct3D API を呼び出して CPU でイベントが開始された時刻。 時間は、アプリの起動時を基準にナノ秒単位で測定されます。 |
GPU Start (ns) | GPU でイベントが開始された時刻。 時間は、アプリの起動時を基準にナノ秒単位で測定されます。 |
GPU 時間 (ns) | イベントが GPU で完了するまでにかかった時間 (ナノ秒単位)。 |
プロセス名 | イベントが発生したアプリの名前。 |
スレッド ID | イベントが発生したスレッド ID。 |
Von Bedeutung
GPU またはドライバーが必要なインストルメンテーション機能をサポートしていない場合、すべてのイベントは 未属性として表示されます。 この問題が発生した場合は、GPU ドライバーを更新して、もう一度やり直してください。 詳細については、このドキュメントの最後にある ハードウェアとドライバーのサポート を参照してください。
GPU 使用率の設定
アプリの起動時に情報の収集を開始するのではなく、プロファイリング情報の収集を延期するように GPU 使用率ツールを構成できます。 プロファイリング情報のサイズは大きくなる可能性があるため、このアクションは、アプリのパフォーマンス低下が後で表示されないことがわかっている場合に役立ちます。
アプリ起動時のプロファイリングを延期するには
メイン メニューで、[デバッグ]>[パフォーマンスと診断] を選択します (または、キーボードで Alt キーを押しながら F2 キーを押します)。
[パフォーマンスと診断] ハブの [GPU 使用率] の横にある設定リンクを選択します。
[GPU プロファイル構成] の [全般] プロパティ ページで、[アプリの起動時にプロファイリングを開始する] チェック ボックスをオフにして、プロファイリングを延期します。
Von Bedeutung
現時点では、Direct3D 12 アプリのプロファイリングを延期することはできません。
GPU 使用率ツールでアプリを実行すると、GPU 使用率ツール ウィンドウの下部に追加のリンクが表示されます。 プロファイリング情報の収集を開始するには、[追加の詳細な GPU 使用状況データの収集を開始する] メッセージの [開始] リンクを選択します。
ハードウェアとドライバーのサポート
次の GPU ハードウェアとドライバーがサポートされています。
売り手 | GPU の説明 | ドライバーのバージョンが必要 |
---|---|---|
インテル® | 第 4 世代 Intel® Core プロセッサ ('Haswell') - Intel® HD グラフィックス (GT1) - Intel® HD Graphics 4200 (GT2) - Intel® HD Graphics 4400 (GT2) - Intel® HD Graphics 4600 (GT2) - Intel® HD Graphics P4600 (GT2) - Intel® HD Graphics P4700 (GT2) - Intel® HD Graphics 5000 (GT3) - Intel® Iris™ Graphics 5100 (GT3) - Intel® Iris™ Pro Graphics 5200 (GT3e) |
(最新のドライバーを使用) |
AMD® | AMD Radeon™ HD 7000 シリーズ以降の大部分 (AMD Radeon™ HD 7350-7670 を除く) グラフィックス コア ネクスト (GCN) アーキテクチャを搭載した AMD Radeon™ GPU、AMD FirePro™ GPU、および AMD FirePro GPU アクセラレータ AMD® EシリーズおよびAMD Aシリーズのアクセラレーテッド プロセッシング ユニット (APU)、搭載されたグラフィックスコアNext (GCN) アーキテクチャ(「Kaveri」、「Kabini」、「Temash」、「Beema」、「Mullins」) |
14.7 RC3 以降 |
NVIDIA® | NVIDIA® GeForce® 400 シリーズ以降の大部分 Fermi、Kepler™、または Maxwell™ アーキテクチャを搭載した NVIDIA® GeForce® GPU、NVIDIA Quadro® GPU、NVIDIA® Tesla™ GPU アクセラレータ™ |
343.37 以降 |
現時点では、NVIDIA® SLI™ や AMD Crossfire™ などのマルチ GPU 構成はサポートされていません。 NVIDIA® オプティマス™や AMD Enduro™ などのハイブリッド グラフィックスのセットアップがサポートされています。