GPU 使用率GPU Usage

Visual Studio のパフォーマンスおよび診断ハブに含まれる GPU 使用率ツールを使用すると、Direct3D アプリのハードウェア利用状況の概要を適切に把握できます。Use the GPU Usage tool in the Visual Studio Performance and Diagnostics Hub to better understand the high-level hardware utilization of your Direct3D app. このツールを使用すると、アプリのパフォーマンスが CPU バインドまたは GPU バインドのどちらであるかを判断し、プラットフォームのハードウェアをより効率的に使用する方法について洞察を得ることができます。You can use it to determine whether the performance of your app is CPU-bound or GPU-bound and gain insight into how you can use the platform's hardware more effectively. GPU 使用率ツールは、Direct3D 12、Direct3D 11、および Direct3D 10 を使用するアプリをサポートします。その他のグラフィックス API (Direct2D や OpenGL など) はサポートしていません。GPU Usage supports apps that use Direct3D 12, Direct3D 11, and Direct3D 10; it doesn't support other graphics APIs such as Direct2D or OpenGL.

[GPU 使用率レポート] ウィンドウを次に示します。This is the GPU Usage Report window:

GPU 使用率レポート、CPU タイムラインと GPU タイムラインありThe GPU Usage report, with CPU and GPU timelines

要件Requirements

グラフィックス診断の要件以外の、GPU 使用率ツールを使用するための追加要件を次に示します。The following are requirements for using the GPU Usage tool that are in addition to Graphics Diagnostics requirements.

  • 必要なタイミング インストルメンテーションをサポートする GPU とドライバー。A GPU and driver that support the necessary timing instrumentation.

    注意

    サポートされるハードウェアとドライバーの詳細については、このドキュメントの最後にある「ハードウェアとドライバーのサポート」をご覧ください。For more information on supported hardware and drivers, see Hardware and driver support at the end of this document.

    グラフィックス診断の要件の詳細については、「使用を開始する」をご覧ください。For more information about Graphics Diagnostics requirements, see Getting Started.

GPU 使用率ツールの使用方法Using the GPU Usage tool

GPU 使用率ツールの下でアプリを実行すると、Visual Studio は、アプリのレンダリング パフォーマンスと GPU 使用率に関する概要情報をリアルタイムでグラフに表示する診断セッションを作成します。When you run your app under the GPU Usage tool, Visual Studio creates a diagnostic session that graphs high-level information about your app's rendering performance and GPU utilization in real-time.

GPU 使用率ツールを開始するには:To start the GPU Usage tool:

  1. メイン メニューで、[デバッグ][パフォーマンスと診断] を選びます (キーボード: Alt + F2 キーを押します)。In the main menu, choose Debug, then Performance and Diagnostics (Keyboard: Press Alt+F2).

  2. [パフォーマンスと診断] ハブで、[GPU 使用率] の横にあるチェック ボックスをオンにします。In the Performance and Diagnostics hub, check the box next to GPU Usage. 必要に応じて、調査するその他のツールの横のチェック ボックスをオンにします。Optionally, check the boxes next to other tools you're interested in. 複数の [パフォーマンスと診断] ツールを同時に実行して、アプリのパフォーマンスをさらに多面的に把握することもできます。You can run several Performance and Diagnostics tools concurrently to get a fuller picture of your app's performance.

    使用する診断ツールを選択します。Choose the diagnostic tools you want to use.

    注意

    すべての [パフォーマンスと診断] ツールを同時に使用することはできません。Not all Performance and Diagnostics tools can be used at the same time.

  3. [パフォーマンスと診断] ハブの一番下にある青色の [開始] ボタンを選び、いま選んだツールの下でアプリを実行します。Choose the blue Start button at the bottom of the Performance and Diagnostics hub to run your app under the tools you selected.

    フレーム時間、フレーム レート、および GPU 使用率が、リアルタイムの概要情報として表示されます。The high-level information that's displayed in real-time includes frame timing, frame rate, and GPU utilization. これらの情報はそれぞれ個別にグラフ化されますが、共通のタイム スケールを使用しているため、それらの情報を簡単に関連付けることができます。Each of these pieces of information are graphed independently, but use a common time-scale so that you can easily relate between them.

    [フレーム時間 (ミリ秒)][1 秒あたりのフレーム数 (FPS)] グラフには、1 秒あたり 60 フレームと 30 フレームの目標パフォーマンスを表す 2 本の赤い水平線が表示されます。The Frame time (ms) and Frames per second (FPS) graphs contain two red, horizontal lines that represent performance targets of 60 and 30 frames per second. [フレーム時間] グラフでは、アプリが目標パフォーマンスを超えているときはグラフが線の下にあり、下回っているときはグラフが線の上にあります。In the Frame time graph, your app is exceeding the performance target when the graph is below the line and missing it when the graph is above the line. [1 秒あたりのフレーム数] グラフでは、その逆です。アプリが目標パフォーマンスを上回っているときはグラフが線の上にあり、下回っているときはグラフが線の下にあります。For the Frames per second graph it's the opposite - your app is exceeding the performance target when the graph is above the line and missing it when the graph is below the line. これらのグラフは、主として、アプリのパフォーマンスに関する概要情報を取得し、調査する必要のあるスローダウン (フレーム レートの急激な低下や、GPU 使用率のスパイクなど) を識別するために使用します。Primarily, these graphs are used to get a high-level idea of your app's performance and to identify slow-downs that you might want to investigate -- for example, a sudden drop in frame rate or a spike in GPU Utilization.

    GPU 使用率ツールの下でアプリを実行中には、GPU で実行されたグラフィックス イベントに関する詳細情報も診断セッションによって収集されます。While your app runs under the GPU Usage tool, the diagnostics session also collects detailed information about graphics events that were executed on the GPU. この情報は、アプリでのハードウェアの使用状況のより詳細なレポートを生成するために使用されます。This information is used to generate a more granular report of how your app utilizes the hardware. 収集した情報からこのレポートを生成するまでには少し時間がかかるため、診断セッションが情報の収集を完了してからのみ使用可能です。Because this report takes some time to generate from the collected information, it's only available after the diagnostics session is done collecting information.

    パフォーマンスまたは使用状況の問題をより詳細に表示するには、パフォーマンス情報の収集を停止すれば、レポートを生成できます。When you want to look at a performance or utilization issue more closely, stop collecting performance information so that the report can be generated.

GPU 使用率レポートを生成して表示するには:To generate and view the GPU Usage Report:

  1. [診断セッション] ウィンドウの下部で [コレクションの停止] リンクを選ぶか、左上隅の [停止] をクリックします。In the bottom portion of the diagnostics session window, choose the Stop Collection link or press Stop in the upper left-hand corner.

    GPU と CPU のタイミング情報を収集します。Collect GPU and CPU timing information.

  2. レポートの上部で、調査対象の問題を示している範囲をいずれか 1 つのグラフから選択します。In the top portion of the report, select a section from one of the graphs that shows the issue you want to investigate. 選択できる範囲は最大 3 秒間までです。それより長い範囲は、先頭に向かって切り捨てられます。Your selection can be up to 3 seconds long; longer sections are truncated towards the beginning.

    収集後、詳細を表示する範囲を選ぶPost-collection, select a range to view details

  3. レポートの下部で、[その範囲の GPU 使用率の詳細が表示されます] というメッセージにある [詳細の表示] リンクをクリックして、選択した範囲のタイムラインの詳細を表示します。In the bottom portion of the report, choose the view details link in the ...click here to view details of GPU usage for that range message to view a detailed timeline of your selection.

    収集後、範囲を選択した状態Post-collection, with range selected

    新しいタブ付きのドキュメントが開いて、レポートが表示されます。This opens a new tabbed document that contains the report. GPU 使用率レポートは、グラフィックス イベントが CPU 上で始まった時点と、それが GPU に到達した時点と、それを GPU で実行するのに要した時間の長さを調べるために役立ちます。The GPU Usage report helps you to see when a graphics event is started on the CPU, when it reaches the GPU, and how long it takes the GPU to execute it. この情報を利用して、コードのボトルネックと、並列処理を増やす機会を識別します。This information can help you to identify bottlenecks and opportunities for increased parallelism in your code.

GPUView または Windows Performance Analyzer にエクスポートするExport to GPUView or Windows Performance Analyzer

Visual Studio 2017 以降では、診断セッションの右下にある [GpuView で開く] または [WPA で開く] リンクをクリックすると、このデータを GPUView および Windows Performance Analyzer で開くことができます。Starting with Visual Studio 2017, this data can be opened with GPUView and Windows Performance Analyzer by clicking the Open in GpuView or Open in WPA links located at the lower right of the diagnostic session.

... で開く

GPU 使用率レポートの使用方法Using the GPU Usage report

GPU 使用率レポートの上部には、CPU 処理アクティビティ、GPU レンダリング アクティビティ、および GPU コピー アクティビティのタイムラインが表示されます。The top portion of the GPU Usage report displays timelines for the CPU processing activity, GPU rendering activity and GPU copy activity. これらのタイムラインは、ディスプレイの垂直同期を表す薄い灰色の垂直線で分けられます。この線の頻度は、GPU 使用率データを取得したディスプレイの 1 つ ([ディスプレイ] ドロップダウンで選択) のリフレッシュ レートと一致します。These timelines are divided by light-grey, vertical bars that represent the display's vsync; the frequency of the bars matches the refresh rate of one of the displays (selected by using the Display drop-down) that GPU Usage data was collected from. アプリのパフォーマンス目標よりもディスプレイのリフレッシュ レートのほうが高いことがあるので、垂直同期とアプリで実現したいフレーム レートが 1 対 1 の関係にならない可能性があります。Because the display might have a higher refresh rate than your app's performance target there might not be a 1-to-1 relationship between vsync and the frame-rate you want your app to achieve. パフォーマンス目標を満たすためには、アプリは、すべての処理を完了し、レンダリングを実行し、目標のフレーム レートで Present() 呼び出しを行う必要があります。ただし、レンダリングされたフレームは、Present() より後の次の垂直同期までは表示されません。To meet its performance target an app must complete all processing, perform rendering, and make a Present() call at the targeted framerate, but the rendered frame will not be displayed until the next vsync after Present().

下の部分には、レポートの期間中に発生したグラフィックス イベントの一覧が表示されます。The bottom portion displays a listing of the graphics events that occurred during the time period of the report.

[GPU 使用率レポート] ウィンドウを次に示します。Here's the GPU Usage Report window:

GPU 使用率レポート、CPU タイムラインと GPU タイムラインありThe GPU Usage report, with CPU and GPU timelines

レポートの下部で 1 つのイベントを選択すると、該当するタイムラインの対応するイベントにマーカーが表示されます。通常、CPU スレッドの 1 つのイベントは API 呼び出しを表し、GPU タイムラインの 1 つにあるもう 1 つのイベントは、GPU がタスクを完了した時点を表します。Selecting one of the events in the bottom portion of the report places a marker at corresponding events in the relevant timelines, typically one event on a CPU thread that represents the API call and another event on one of the GPU timelines that represents when the GPU completed the task. 同様に、タイムラインでイベントのいずれかを選択すると、レポートの下部で対応するイベントが強調表示されます。レポートの上部でタイムラインをズームアウトすると、最も時間のかかるイベントのみが表示されます。Likewise, selecting one of the events in a timeline highlights the corresponding event in the bottom portion of the report.When zoomed out of the timelines in the top portion of the report, only the most time-consuming events are visible. 持続期間の短いイベントを表示するには、タイムラインをズームインします。Ctrl キーを押しながらポインティング デバイスのホイールを回すか、上のパネルの左下隅にある拡大/縮小コントロールを使用してください。To see events that have a shorter duration, zoom into the timelines by using Ctrl + wheel on your pointing device, or the scaling control in the lower left-hand corner of the top panel. また、タイムライン パネルの内容をドラッグして、記録されたイベントに移動することもできます。You can also drag the timeline panel's contents to move through the recorded events.

探しているものを見つけやすくするために、GPU の使用状況レポートをプロセス名、スレッド ID、およびイベント名でフィルター処理することができます。また、どのディスプレイのリフレッシュ レートによって垂直同期の線を決めるかを選択できます。さらに、アプリが ID3DUserDefinedAnnotation インターフェイスを使用している場合は、イベントを階層的に並べ替えてレンダリング コマンドでグループ化できます。To help you find what you're looking for, you can filter the GPU Usage Report based on Process names, Thread IDs, and the event name; additionally, you can choose which display's refresh rate determines the vysnc lines and you can sort events hierarchically if your app uses the ID3DUserDefinedAnnotation interface to group rendering commands.

さらに詳細な情報を次に示します。Here are more details:

フィルター コントロールFilter control 説明Description
ProcessProcess 調査対象のプロセスの名前。The name of the process you are interested in. 診断セッション中に GPU を使用したすべてのプロセスが、このドロップダウン リストに含まれます。All processes that used the GPU during the diagnostics session are included in this dropdown. このドロップダウンでプロセスに関連付けられている色は、下のタイムラインでのスレッドのアクティビティの色です。The color associated with the process in this drop down is the color of the thread's activity in the timelines below.
スレッドThread 調査対象のスレッド ID。The thread ID that you are interested in. マルチ スレッド アプリケーションでは、これを使用して、調査対象のプロセスに属するスレッドを分離できます。In a multi-threaded app, this can help you isolate particular threads that belong to the process that you're interested in. 各タイムラインで、選択されたスレッドに関連付けられたイベントが強調表示されます。Events associated with the selected thread are highlighted in each timeline.
表示Display リフレッシュ レートを表示するディスプレイの番号。注: 一部のドライバーでは、複数の物理ディスプレイが 1 つの大きな仮想ディスプレイを表すように構成することができます。The number of the display whose refresh rate is displayed Note: Some drivers can be configured to present multiple physical displays as a single, large virtual display. コンピューターに複数のディスプレイが接続されている場合でも、一覧に表示されるディスプレイが 1 つだけのことがあります。You might see just one display listed, even if the machine has multiple displays attached.
フィルターFilter 調査対象のキーワード。Keywords that you are interested in. レポートの下部に、このキーワードが全体または一部と一致するイベントだけが表示されます。Events in the bottom portion of the report will only include those that match a keyword in whole or in part. 複数のキーワードを指定するには、セミコロン (;) で区切ります。You can specify multiple keywords by separating them with a semicolon (;).
階層的に並べ替えHierarchy Sort イベントの階層 (ユーザー マーカーを使用して定義される) を保持するか無視するかを指定するチェック ボックスです。A checkbox that indicates whether event hierarchies--defined through user markers--are preserved or ignored.

GPU 使用率レポートの下部のイベント一覧には、各イベントの詳細が表示されます。The list of events in the bottom portion of the GPU Usage Report displays the details of each event.

Column 説明Description
イベント名Event Name グラフィックス イベントの名前。The name of the graphics event. イベントは、通常、CPU スレッドのタイムライン内の 1 つのイベントと、GPU のタイムライン上の 1 つのイベントに対応します。An event usually corresponds to one event in a CPU thread timeline and one event on a GPU timeline.

GPU 使用率ツールでイベントの名前を特定できなかった場合は、イベント名が 'unattributed' になります。Event names might be 'unattributed' if GPU Usage was unable to determine the name of an event. 詳細については、この表の下にある注意書きを参照してください。For more information, see the note below this table.
CPU 開始 (ナノ秒)CPU Start (ns) Direct3D API を呼び出すことによって CPU 上でイベントが開始された時刻。The time that the event was initiated on the CPU by calling a Direct3D API. 時間は、アプリケーションの開始時を基準にしたナノ秒単位で測定されます。The time Is measured in nanoseconds, relative to when the app started.
GPU 開始 (ナノ秒)GPU Start (ns) GPU 上でイベントが開始された時刻。The time that the event was initiated on the GPU. 時間は、アプリケーションの開始時を基準にしたナノ秒単位で測定されます。The time is measured in nanoseconds, relative to when the app started.
GPU 期間 (ナノ秒)GPU Duration (ns) GPU 上でイベントの完了にかかった時間 (ナノ秒)。The time that the event took to complete on the GPU, in nanoseconds.
プロセス名Process Name イベントの発生元のアプリの名前。The name of the app from which the event came.
スレッド IDThread ID イベントの発生元のスレッド ID。The thread ID from which the event came.

重要

イベントの属性には Windows 8.1 が必要です。Windows 8.1 is required for event attribution. さらに、GPU またはドライバーがインストルメンテーションのために必要な機能をサポートしていない場合は、すべてのイベントが 'unattributed' として表示されます。Additionally, if your GPU or driver don't support the necessary instrumentation features, all events will appear as 'unattributed'. この問題が発生した場合は、GPU ドライバーを更新して、もう一度試してください。Make sure to update your GPU driver and try again if you experience this problem. 詳細については、この後の「ハードウェアとドライバーのサポート」をご覧ください。For more information, see Hardware and driver support below.

GPU 使用率の設定GPU Usage settings

アプリが起動した時、すぐに情報の収集を開始するのではなく、プロファイリング情報のコレクションを延期するには、GPU 使用率ツールをそのように構成することができます。You can configure the GPU Usage tool to postpone collection of profiling information, rather than starting to collect information as soon as the app starts. プロファイル情報のサイズはかなり大きくなるため、アプリのパフォーマンス低下がしばらく後になってから現れる場合には、この構成機能が便利です。Because the size of the profiling information can be significant, this is useful when you know that slowdowns in your app's performance won't appear until later.

プロファイリングをアプリケーションの開始時から延期するには:To postpone profiling from the start of the app:

  1. メイン メニューで、[デバッグ][パフォーマンスと診断] を選びます (キーボード: Alt + F2 キーを押します)。In the main menu, choose Debug, then Performance and Diagnostics (Keyboard: Press Alt+F2).

  2. [パフォーマンスと診断] ハブで、[GPU 使用率] の横にある [設定] リンクに従います。In the Performance and Diagnostics hub, follow the settings link next to GPU Usage.

  3. [GPU プロファイリングの構成][全般] プロパティ ページで、[アプリの起動時にプロファイリングを開始] チェック ボックスをオフにして、プロファイリングを延期します。Under GPU Profiling Configuration, on the General property page, clear the Begin profiling at app start checkbox to postpone profiling.

    GPU 使用率の収集の開始時に構成するConfigure when GPU Usage collection starts

重要

プロファイリングの延期は、Direct3D 12 アプリに対しては現在サポートされていません。Postponing profiling is not currently supported for Direct3D 12 apps.

この設定を使用してプロファイリング情報のコレクションを延期すると、GPU 使用率ツールの下でアプリを実行したときに、GPU 使用率ツール ウィンドウの下部で追加のリンクを使用できるようになります。When you postpone the collection of profiling information by using this setting, an additional link becomes available in the bottom portion of the GPU Usage tool window when you run your app under the GPU Usage tool. プロファイリング情報の収集を開始するには、[GPU 使用率データの収集を開始します] メッセージの [開始] リンクをクリックします。To start collecting profiling information, choose the Start link in the Start collecting additional detailed GPU Usage Data message.

ハードウェアとドライバーのサポートHardware and driver support

次の GPU ハードウェアとドライバーがサポートされます。The following GPU hardware and drivers are supported:

ベンダーVendor GPU の説明GPU Description 必要なドライバー バージョンDriver Version Required
Intel®Intel® 第 4 世代 Intel® Core プロセッサ ('Haswell')4th Generation Intel® Core Processors ('Haswell')

- Intel® HD グラフィックス (GT1)- Intel® HD Graphics (GT1)
- Intel® HD グラフィックス 4200 (GT2)- Intel® HD Graphics 4200 (GT2)
- Intel® HD グラフィックス 4400 (GT2)- Intel® HD Graphics 4400 (GT2)
- Intel® HD グラフィックス 4600 (GT2)- Intel® HD Graphics 4600 (GT2)
- Intel® HD グラフィックス P4600 (GT2)- Intel® HD Graphics P4600 (GT2)
- Intel® HD グラフィックス P4700 (GT2)- Intel® HD Graphics P4700 (GT2)
- Intel® HD グラフィックス 5000 (GT3)- Intel® HD Graphics 5000 (GT3)
- Intel® Iris™ グラフィックス 5100 (GT3)- Intel® Iris™ Graphics 5100 (GT3)
- Intel® Iris™ Pro グラフィックス 5200 (GT3e)- Intel® Iris™ Pro Graphics 5200 (GT3e)
-- (最新のドライバーを使用)-- (use latest drivers)
AMD®AMD® AMD Radeon™ HD 7000 シリーズの大部分 (AMD Radeon™ HD 7350 ~ 7670 を除く)Most since AMD Radeon™ HD 7000-series (excludes AMD Radeon™ HD 7350-7670)

グラフィックス コア ネクスト (GCN) アーキテクチャを搭載した AMD Radeon™ GPU、AMD FirePro™ GPU、および AMD FirePro GPU アクセラレータAMD Radeon™ GPU, AMD FirePro™ GPUs, and AMD FirePro GPU accelerators featuring Graphics Core Next (GCN) architecture.

グラフィックス コア ネクスト (GCN) アーキテクチャを搭載した AMD® E シリーズおよび AMD A シリーズの Accelerated Processing Unit (APU) ('Kaveri'、'Kabini'、'Temash'、'Beema'、'Mullins')AMD® E-Series and AMD A-series Accelerated Processing Units (APUs) featuring Graphics Core Next (GCN) architecture ('Kaveri', 'Kabini', 'Temash' , 'Beema', 'Mullins')
14.7 RC3 以上14.7 RC3 or higher
NVIDIA®NVIDIA® NVIDIA® GeForce 400 シリーズ以降の大部分Most since NVIDIA® GeForce® 400-series.

Fermi™、Kepler™、または Maxwell™ アーキテクチャを搭載した NVIDIA® GeForce® GPU、NVIDIA Quadro® GPU、および NVIDIA® Tesla™ GPU アクセラレータNVIDIA® GeForce® GPUs, NVIDIA Quadro® GPUs and NVIDIA® Tesla™ GPU accelerators featuring Fermi™, Kepler™, or Maxwell™ architecture.
343.37 以上343.37 or higher

NVIDIA SLI® および AMD Crossfire™ などのマルチ GPU 構成は、現時点ではサポートされていません。Multi-GPU configurations such as NVIDIA® SLI™ and AMD Crossfire™ are not supported at this time. NVIDIA® Optimus™ および AMD Enduro™ などのハイブリッド グラフィック設定はサポートされています。Hybrid graphics setup, such as NVIDIA® Optimus™ and AMD Enduro™ are supported.

関連項目See also