
NVIDIA Nsight Graphics 2024.3可協助圖形開發團隊從 GPU Trace 與 Shader Profiler 檢視著色器中的執行緒分歧、warp 延遲及 D3D12 Work Graph 行為。對於無法僅靠 GPU 規格判斷瓶頸的遊戲、即時渲染與光線追蹤專案,重點不在追求單一指標,而是將量測結果連結到特定著色器、函式或原始碼行,再以專案測試驗證調整是否真正改善畫面效能。
圖形 GPU 最常見的兩類問題
GPU 以高度平行的方式處理三角形、像素、光線與其他渲染資料。可程式化著色器通常以 warp 為基本執行單位;一個 warp 包含 32 個執行緒,並在 Streaming Multiprocessor(SM)上依循 SIMT 模型發出指令。
第一類問題是執行緒分歧。當著色器中的動態分支讓同一 warp 內的執行緒走向不同的 if 或 else 路徑時,SM 必須遮罩不適用於目前分支的執行緒,降低有效吞吐量。但動態分支不必然應被移除:若條件在 warp 內具有良好的一致性,它仍可能比無分支地執行所有路徑更合適。
第二類問題是warp 停滯與延遲。記憶體存取與紋理擷取等長延遲操作可能使 warp 暫停。硬體可切換執行其他 warp,但若過多 warp 同時停滯,SM 利用率仍可能下降。實際延遲受快取命中層級及其他因素影響,不能僅以程式碼表面判斷。
2024.3 可觀察的著色器訊號
Nsight Graphics 的 GPU Trace 中,Shader Profiler 提供 Active Threads per Warp 直方圖。此圖可在著色器工作流程、由上而下、由下而上、熱點及原始碼/反組譯等檢視中使用,以效能計數器取樣的近似值呈現指定著色器、函式或原始碼行的活動執行緒情況。
直方圖中接近 32 的值,代表指令執行時有較多 warp 執行緒處於活動狀態。若熱點區段的活動執行緒偏低,可進一步檢查分支條件、資料分組方式與演算法;若數值接近滿載,則執行緒分歧未必是原先懷疑的主要限制因素。
要取得這項資料,啟動 GPU Trace 時需將 Timeline Metrics 設為 Top-Level Triage,或在可用時設為 Ray Tracing Triage,並啟用 Real-Time Shader Profiler。實際介面、支援條件與所需環境,應以對應版本的 NVIDIA 官方文件確認。
光線追蹤與延遲分析的適用情境
路徑追蹤的次級光線可能因擊中不同場景物件而產生顯著分歧。來源資料指出,Shader Execution Reordering(SER)旨在處理光線追蹤著色器中的執行緒與資料分散;當採用條件適合且 SER 正常運作時,Active Threads per Warp 可作為觀察執行一致性是否改善的訊號之一。是否可用、適用於哪些 GPU 與 API,以及對整體幀時間的影響,均需依完整專案與官方文件驗證。
此外,GPU Trace 的 Warp Latency直方圖將先前的單一平均延遲計數擴展為分布觀察,可協助辨識著色器計時變異、可能的提早結束,或不同呼叫參數造成的行為差異。該直方圖目前只包含時間軸上不重疊區域中、呼叫相同著色器的個別延遲資料點,因此不應將其視為完整工作負載的唯一延遲結論。
D3D12 Work Graph 與 Vulkan 工作流程
在 D3D12 中,Work Graph 的目標是降低 GPU 工作排程對 CPU 的依賴。Nsight Graphics 2024.2 已初步支援在 Shader Profiler 中分析整體 Work Graph 節點;2024.3 進一步提供 Work Graph 的原始碼關聯,可在 Shader Source 與 Hot Spots 中進行逐行分析。來源資料指出,此原始碼關聯需要 R565 系列驅動;部署前應核對實際驅動版本、工具版本與專案建置設定。
此版本的 Frame Debugger 支援 Vulkan 1.4,並支援新提升為必要項目的擴充功能及其他擴充功能,包括 VK_NV_inherited_viewport_scissor 與 VK_NV_device_generated_commands_compute。它亦增加 Windows 與 Linux 桌面平台上 Vulkan SC 應用程式的幀除錯與 GPU 追蹤支援。特定擴充功能、驅動與平台組合的可用性,應依 NVIDIA Nsight Graphics 使用指南及 Vulkan 驅動文件進行日期相符的確認。
建議的評估路徑
- 先建立可重現的場景、畫質設定與量測基準,確認問題出現在整體幀時間、特定通道或特定著色器。
- 使用 GPU Trace 找出熱點,並將 Active Threads per Warp 與原始碼行、分支或資料分組方式對照。
- 再檢查 Warp Latency 分布,區分分歧、記憶體或紋理延遲等可能因素,避免只針對單一指標調整。
- 每次僅變更一項策略,例如光線採樣方式、warp 感知的 D3D12 或 Vulkan 著色器程式碼,或適用時的 SER,之後重新量測整體效能與畫面正確性。
- 若使用 Work Graph 或 Vulkan 功能,將驅動、SDK、API 功能與建置產物納入測試矩陣。
常見問題
Active Threads per Warp 偏低,是否表示一定要移除所有分支?
不一定。偏低可表示分歧值得調查,但動態分支在條件結果於 warp 內較一致時可能仍具效益。應同時比對熱點、warp 延遲、整體幀時間與畫面輸出,再決定是否改寫分支或調整資料分組。
Work Graph 原始碼關聯可否直接證明 CPU 排程已不再是瓶頸?
不可以。原始碼關聯可協助定位 Work Graph 著色器中的逐行效能資料,但 CPU 與 GPU 的互動仍需透過完整追蹤與專案量測判斷。另須確認 R565 系列驅動及相容的工具、API 與專案設定。
結論
Nsight Graphics 2024.3 為圖形工作負載提供更細緻的 warp 活動度、延遲分布與 Work Graph 原始碼分析途徑。其價值在於讓團隊以可觀察的資料提出假設、進行小幅調整並重複驗證;最終採用與效能結論仍應以特定 GPU、驅動、API、場景及專案測試結果為準。
圍繞「NVIDIA Nsight Graphics 2024.3:分析圖形 GPU 工作負載的方法」繼續瞭解 NVIDIA 產品與網路方案。
WeChat
Profile