本 RFC 提出一种编译期 Host CPU 算子融合优化方案:利用 GE 已有的符号化推导能力,将动态 shape 场景下多个 host CPU shape 计算算子(如 Gather、Slice、Concat、Reshape 等)融合为单一的 codegen 计算函数,运行时一次函数调用完成原来多个 kernel 的调度工作,消除逐算子调度开销。
在推荐网络等动态 shape 场景下,GE 通过 HostcpuEngineUpdatePass 已将小数据量(≤8 元素)的 shape 计算算子链从 device 迁移到 host CPU 执行,避免 device 调度开销。
HostcpuEngineUpdatePass
然而,迁移后每个 host CPU 算子在运行时仍然独立调度。对于典型的 shape 计算链(如 Shape → Slice → Concat → Reshape,涉及 4-6 个算子),每次推理仍需 N 次 host kernel 调度。这些算子计算量极小(纳秒级),但每次调度的框架开销(微秒级)远大于计算本身,host kernel 调度成为新的性能瓶颈。
Shape → Slice → Concat → Reshape
核心观察:这些 shape 计算算子的输入输出值在编译期可以通过符号化推导得到闭合表达式。如果能在编译期将整个计算链的端到端公式推导出来并生成一个融合的计算函数,运行时只需一次函数调用即可完成所有 shape 计算。
later
/assign@hugo111
变更/设计描述
摘要
本 RFC 提出一种编译期 Host CPU 算子融合优化方案:利用 GE 已有的符号化推导能力,将动态 shape 场景下多个 host CPU shape 计算算子(如 Gather、Slice、Concat、Reshape 等)融合为单一的 codegen 计算函数,运行时一次函数调用完成原来多个 kernel 的调度工作,消除逐算子调度开销。
动机
在推荐网络等动态 shape 场景下,GE 通过
HostcpuEngineUpdatePass已将小数据量(≤8 元素)的 shape 计算算子链从 device 迁移到 host CPU 执行,避免 device 调度开销。然而,迁移后每个 host CPU 算子在运行时仍然独立调度。对于典型的 shape 计算链(如
Shape → Slice → Concat → Reshape,涉及 4-6 个算子),每次推理仍需 N 次 host kernel 调度。这些算子计算量极小(纳秒级),但每次调度的框架开销(微秒级)远大于计算本身,host kernel 调度成为新的性能瓶颈。核心观察:这些 shape 计算算子的输入输出值在编译期可以通过符号化推导得到闭合表达式。如果能在编译期将整个计算链的端到端公式推导出来并生成一个融合的计算函数,运行时只需一次函数调用即可完成所有 shape 计算。
功能要点
目标
技术方案
later
相关文档
测试方案
later
验收标准
later
备注