主要观点:GPU 设计易实现工作并行,但其工作呈流水线式,各单元易成为瓶颈致 GPU 利用率低。现代引擎中各渲染阶段常受不同单元瓶颈影响,GPU 轨迹能体现此现象。IHV 引入异步计算等技术旨在提高 GPU 利用率,通过分离图形和计算硬件流水线及使用命令队列来提交和调度工作。异步计算是调度机制,需合理配对任务,否则可能影响性能。
关键信息:
- GPU 各 drawcall 可同时处理批量顶点等,架构包含多种单元,工作呈流水线。
- 现代引擎中渲染各阶段常受不同单元瓶颈,如计算着色器、GPU 蒙皮、阴影等。
- IHV 引入异步计算等技术,图形和计算有各自命令队列,通过栅栏同步。
- 异步计算需处理好任务配对,如将 GTAO 移至计算队列,通过栅栏协调。
- 性能测试表明异步计算可提高 GPU 利用率,减少单个任务成本,但配对很重要。
重要细节:
- 不同渲染阶段对 GPU 各单元的依赖不同,如阴影pass 主要依赖 RT 核心,GBuffer pass 依赖几何处理。
- 创建计算命令队列需设置相关描述符,创建命令列表并提交至计算队列执行。
- 利用栅栏协调不同队列的工作,如通过 Signal()通知完成,Wait()等待完成。
- 计算队列无法看到与顶点和像素着色器执行相关的固定功能单元,资源转换需在图形队列进行。
- 性能测试中不同任务配对情况对 GPU 利用率和单个任务成本的影响不同,如 GTAO 与不同任务配对的效果。
- 实验确定最佳配对需比较各阶段瓶颈和 SM 占用,考虑引擎架构等因素。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。