异步计算所有的事情

主要观点:GPU 设计易实现工作并行,但其工作呈流水线式,各单元易成为瓶颈致 GPU 利用率低。现代引擎中各渲染阶段常受不同单元瓶颈影响,GPU 轨迹能体现此现象。IHV 引入异步计算等技术旨在提高 GPU 利用率,通过分离图形和计算硬件流水线及使用命令队列来提交和调度工作。异步计算是调度机制,需合理配对任务,否则可能影响性能。

关键信息

  • GPU 各 drawcall 可同时处理批量顶点等,架构包含多种单元,工作呈流水线。
  • 现代引擎中渲染各阶段常受不同单元瓶颈,如计算着色器、GPU 蒙皮、阴影等。
  • IHV 引入异步计算等技术,图形和计算有各自命令队列,通过栅栏同步。
  • 异步计算需处理好任务配对,如将 GTAO 移至计算队列,通过栅栏协调。
  • 性能测试表明异步计算可提高 GPU 利用率,减少单个任务成本,但配对很重要。

重要细节

  • 不同渲染阶段对 GPU 各单元的依赖不同,如阴影pass 主要依赖 RT 核心,GBuffer pass 依赖几何处理。
  • 创建计算命令队列需设置相关描述符,创建命令列表并提交至计算队列执行。
  • 利用栅栏协调不同队列的工作,如通过 Signal()通知完成,Wait()等待完成。
  • 计算队列无法看到与顶点和像素着色器执行相关的固定功能单元,资源转换需在图形队列进行。
  • 性能测试中不同任务配对情况对 GPU 利用率和单个任务成本的影响不同,如 GTAO 与不同任务配对的效果。
  • 实验确定最佳配对需比较各阶段瓶颈和 SM 占用,考虑引擎架构等因素。
阅读 9
0 条评论