微軟宣佈推出一項DirectX 12新功能,名爲Work Graphs,可以提高GPU驅動程序渲染的使用效率,從而減輕CPU的任務負擔。

微軟宣佈推出一項DirectX 12新功能,名爲Work Graphs,之前這一功能已經在預覽版中發佈了一段時間了。微軟表示利用Work Graphs,可以提高GPU驅動程序渲染的使用效率,從而減輕CPU的任務負擔。

微軟在博客文章中對Work Graphs進行了解釋。Work Graphs是D3D12中的GPU自主系統,旨在解決GPU上一般計算工作負載的限制,並解鎖潛在的GPU功能。簡而言之,新系統旨在切換到更高效的GPU驅動渲染系統,減少在不同工作負載下使用CPU的需求。在許多GPU工作負載中,GPU上的初始計算決定了GPU需要做哪些後續工作,可以通過返回CPU以發出新的工作任務來完成。不過對於GPU來說,能夠爲自己生成工作任務,直接提供數據效果會更好。D3D12中的ExecuteIndirect是這種形式的一種,其中應用程序使用GPU記錄一個非常受限的命令緩衝區,需要在GPU上進行串行處理,以發佈新的工作。

這考慮到一種新的方案,假設在GPU上運行的着色器線程(生產者)可以請求其他工作運行(消費者),那麼消費者也可以是生產者,只要GPU有能力運行,系統就能安排所請求的工作。此外,應用程序還可以讓系統管理任務間數據流的內存。這種方案就是Work Graphs,在節點圖中,每個節點的着色器代碼都可以請求調用其他節點,而無需等待它們啓動。Work Graphs可以捕捉用戶的算法意圖和整體結構,而不會讓開發人員過多地瞭解具體的硬件運行情況。異步的特性使系統可以最大限度地自由決定如何以最佳方式執行工作。

相關文章