GPU 使用量

備註

ARM64 Visual Studio 不支援Visual Studio 圖形診斷。

使用效能分析工具中的 GPU 使用量工具,進一步瞭解 Direct3D 應用程式的高階硬體使用量。 它可協助您查看應用程式的效能是 CPU 系結還是 GPU 系結,並深入瞭解如何更有效地使用平台的硬體。 GPU 使用量支援使用 Direct3D 12、Direct3D 11 和 Direct3D 10 的應用程式。 它不支援其他圖形 API,例如 Direct2D 或 OpenGL。

以下是 [GPU 使用量報告 ] 視窗的外觀:

GPU 使用量報告的螢幕快照,其中包含 CPU 和 GPU 時間軸

需求

除了圖形診斷的需求之外,使用 GPU 使用工具還需要滿足下列要求:

  • 支援必要計時檢測的 GPU 和驅動程式。

    備註

    如需所支援硬體和驅動程式的詳細資訊,請參閱本文件結尾的硬體 和驅動程序支援 。

如需圖形診斷需求的詳細資訊,請參閱 開始使用。

使用 GPU 使用量工具

當您在 GPU 使用量工具下執行應用程式時,Visual Studio 會建立診斷會話。 此工作階段會即時呈現應用程式轉譯效能和 GPU 使用量的相關高階資訊。

若要啟動 GPU 使用量工具:

  1. 在主功能表中,選擇除錯>效能和診斷(或在鍵盤上按 Alt+F2)。

  2. 在 [效能和診斷] 中樞中,核取 [GPU 使用量] 旁的方塊。 或者,勾選您感興趣的其他工具旁的方塊。 您可以同時執行數個效能和診斷工具,以更充分瞭解您應用程式的效能。

    效能分析工具的螢幕快照,其中已選取 GPU 使用量

    備註

    並非所有的效能和診斷工具都可以同時使用。

  3. 在 [效能和診斷 ] 中樞底部,選取 [ 開始 ] 以在您選取的工具下執行您的應用程式。

實時顯示的高階資訊包括畫面時間、幀速率和 GPU 使用量。 每個資訊片段都獨立繪製,但它們全都使用共同時間尺度,讓您可以輕鬆了解它們之間的關聯。

框架時間 (ms) 和每秒框架數 (FPS) 圖表各有兩條紅色水平線,顯示每秒 60 和 30 個畫面格的效能目標。 在 [框架時間] 圖形中,當圖形位於線條下方時,您的應用程式會超過效能目標,而當圖形位於線條上方時,就會遺漏目標。 針對每秒幀數的圖表,情況正好相反:當圖表位於線條上方時,表示您的應用程式超過效能目標,而當圖表位於線條下方時,表示未達到目標。 您主要使用這些圖表來取得應用程式效能的概覽,並找出您可能想要調查的性能瓶頸。 例如,如果您看到幀速率突然下降或 GPU 使用率尖峰,可能會需要進一步調查。

當您的應用程式在 GPU 使用量工具下執行時,診斷會話也會收集 GPU 上執行之圖形事件的詳細資訊。 您可以使用這項資訊來產生更細微的報表,說明您的應用程式如何使用硬體。 由於此報告需要一些時間從收集到的信息產生,因此只有在診斷會話完成收集信息之後才能使用。

當您想要更仔細地查看效能或使用率問題時,請停止收集效能資訊,以便產生報告。

若要產生並檢視 GPU 使用量報告:

  1. 在診斷會話視窗的底部,選擇 [ 停止集合 ] 連結,或選取左上角的 [ 停止 ]。

    GPU 使用量工具中診斷會話視窗的螢幕快照,其中顯示每秒畫面格數、GPU 使用率、停止按鈕和 [停止集合] 連結。

  2. 在報表的頂端,從其中一個圖形中選取區段,其中顯示您想要調查的問題。 您的選取範圍最多可以長達 3 秒。 較長的區段會在接近開頭的部分被截斷。

    GPU 使用量工具中診斷會話視窗的螢幕快照,其中已選取診斷會話時間軸的一部分。

  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 使用量數據就是從該顯示器收集的。

由於顯示器的重新整理速率可能高於您應用程式的效能目標,因此 vsync 與您想要應用程式達到的幀速率之間可能不會有 1 對 1 的關聯性。 若要符合其效能目標,應用程式必須完成所有處理、執行轉譯,並在 Present() 目標幀速率進行呼叫。 不過,轉譯的畫面格會在Present()之後的下一個 vsync 才顯示。

GPU 使用量報表的底部部分會列出報表期間發生的圖形事件。 當您選取事件時,標記會出現在相關時間軸中的對應事件。 一般而言,CPU 線程上的一個事件會顯示 API 呼叫,而其中一個 GPU 時間軸上的另一個事件會在 GPU 完成工作時顯示。 同樣地,當您在時間軸中選取一個事件時,報表會在底部突出顯示對應的圖形事件。

當您縮小報表頂端的時間軸時,只會顯示最耗時的事件。 若要查看持續時間較短的事件,請在指向裝置上使用 Ctrl+wheel,或頂端面板左下角的縮放控件來縮放時程表。 您也可以拖曳時間軸面板的內容,以移動記錄的事件。

若要協助尋找您要尋找的專案,請根據進程名稱、線程標識碼和事件名稱來篩選 GPU 使用量報告。 此外,您可以選擇哪一個顯示器的刷新率來決定 vsync 行。 如果您的應用程式使用 ID3DUserDefinedAnnotation 介面來群組轉譯命令,則可以以階層方式排序事件。

以下是更多詳細資料:

篩選控制項 說明
過程 您感興趣的流程名稱。 診斷會話期間使用 GPU 的所有進程都包含在此下拉式清單中。 與進程相關聯的色彩是時間軸中線程活動的色彩。
線程 您感興趣的線程標識碼。 在多線程應用程式中,這項資訊可協助您隔離屬於您感興趣的進程的特定線程。 與所選線程相關聯的事件會在每個時間軸中反白顯示。
顯示器 顯示更新速率的顯示器編號。 某些驅動程式可以設定為將多個實體顯示器顯示為單一大型虛擬顯示器。 即使電腦連接了多個顯示器,您也可能只會看到列出一個顯示器。
篩選 您感興趣的關鍵詞。 報表底部部分的事件只會包含完全或部分符合關鍵詞的事件。 您可以使用分號來指定多個關鍵字(;)。
階層排序 複選框,指出是否保留或忽略透過用戶標記定義的事件階層。

GPU 使用量報表底部的事件清單會顯示每個事件的詳細數據。

資料行 說明
事件名稱 圖形事件的名稱。 事件通常會對應至 CPU 線程時間軸和 GPU 時間軸事件中的事件。 如果 GPU 使用量無法判斷事件名稱,事件名稱可能會顯示為未附屬。 如需詳細資訊,請參閱下表後面的附註。
CPU 開始時間 (ns) 呼叫 Direct3D API 在 CPU 上起始事件的時間。 時間是以奈秒為單位來測量,相對於應用程式啟動時的時間。
GPU Start (ns) 事件在 GPU 上起始的時間。 時間是以奈秒來衡量的,相對於應用程式啟動時。
GPU 持續時間 (ns) 事件在 GPU 上完成所需的時間,以納秒為單位。
程序名稱 事件的來源應用程式名稱。
線程標識碼 事件的來源線程標識碼。

這很重要

如果您的 GPU 或驅動程式不支援必要的檢測功能,所有事件都會顯示為 未設定。 如果您遇到此問題,請更新 GPU 驅動程式,然後再試一次。 如需詳細資訊,請參閱本文件結尾的硬體 和驅動程序支援 。

GPU 使用量設定

您可以設定 GPU 使用量工具來延後收集分析資訊,而不是在應用程式啟動時立即開始收集資訊。 由於分析資訊的大小可能相當龐大,因此當您知道應用程式的效能放慢要到稍後才會出現時,此動作會很有用。

若要從應用程式開頭延後分析:

  1. 在主功能表中,選擇除錯>效能和診斷(或在鍵盤上按 Alt+F2)。

  2. 在 [效能和診斷] 中樞的 [GPU 使用量] 旁,選取 [設定 ] 連結。

  3. 在 [GPU 分析組態] 底下的 [ 一般 ] 屬性頁面上,清除 [ 在應用程式啟動時開始分析 ] 複選框,以延後分析。

    物件屬性頁的螢幕快照,其中顯示集合選項

這很重要

此時,您無法延後 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)

AMD Radeon™ GPU、AMD FirePro™ GPU 和 AMD FirePro GPU 加速器,具有圖形核心次世代(GCN)架構

AMD® E 系列和 AMD A 系列加速處理單元 (APU) 具有圖形核心 Next (GCN) 架構 ('Kaveri', 'Kabini', 'Temash' , 'Beema', 'Mullins')
14.7 RC3 或更新版本
NVIDIA® NVIDIA® GeForce® 400 系列以來最多

NVIDIA GeForce® GPU、NVIDIA® Quadro® GPU 和 NVIDIA® Tesla™ GPU 加速器,具有 Fermi™、Kepler™ 或 Maxwell™ 架構
343.37 或更新版本

目前不支援多 GPU 組態,例如 NVIDIA® SLI™ 和 AMD Crossfire™。 支援混合式顯示卡設置,例如 NVIDIA® Optimus™,和 AMD Enduro™。