MUSA Graphs
图是由一系列操作(如内核启动、数据传输等)通过依赖关系连接形成的工作流程,其定义阶段与 执行阶段相互分离。
概述
什么是 MUSA Graphs
MUSA Graphs 是 MUSA 的一种工作提交模式。图是由一系列操作(如内核启动、数据传输等)通过依赖关系连接形成的工作流程,其定义阶段与执行阶段相互分离。使用该机制,图只需定义一次,之后可重复启动执行。
将图的定义与执行解耦,可实现以下优化:
- 降低 CPU 启动开销:相比于流(stream)方式,大部分设置工作已提前完成
- 支持全局优化:将完整工作流程一次性提交给 MUSA,使一些在流的逐段提交模式下难以实现的优化成为可能
优化原理
当将内核放入流中时,主机驱动程序会执行一系列操作,为 GPU 上的内核执行做准备。这些内核设置和启动所需的操作,构成了每次内核启动的固定开销。对于执行时间较短的内核而言,这部分开销可能占总执行时间的很大比例。
通过创建包含多次重复执行的工作流程的 MUSA Graph,这些开销仅在图实例化时产生一次,之后图便可反复启动,且每次启动的开销极低。