已合并
feat: broadcast tiling 模板支持 PcieThrough 场景识别与 UB BRC 强制调度 #788
hahaha22创建于 21 天前
feat: broadcast tiling 模板支持 PcieThrough 场景识别与 UB BRC 强制调度 #788
已合并
hahaha22创建于 21 天前
hahaha22成员
21 天前

描述

broadcast 模板 tiling 增加 PcieThrough(PCIe 直通)场景识别,保证该场景下经 broadcast 模板调度的算子行为正确:

  1. DoTiling 新增 GetPcieThroughInfo 步骤:高版本 SDK(METADEF_VERSION_NUM >= 90200000)调用 context_->GetPcieThroughFlag() 获取标志,低版本走 #else 兜底 isPcieThrough = false,保持存量行为不变
  2. 非连续输入拦截:PcieThrough 场景下非连续模板不支持,GetPcieThroughInfo 中对 isPcieThrough && !inputAllContiguous 直接返回失败并报错
  3. OneDim 快速分支规避:PcieThrough 场景跳过 DoOneDimOpTilingAdvance/DoOneDimOpTiling 快速路径,统一走 DoBroadcastOpTiling
  4. UB BRC 强制调度:DoBroadcastOpTiling 中 PcieThrough 时置 isUbBroadcast = true,不再走 IsUbBroadcast 常规判定
  5. 构建配套:CMakeLists.txt 为 ops_base 补充 cann_version_headers 链接,解析新增的 version/metadef_version.h 头文件

配套算子侧 PR:https://gitcode.com/cann/ops-math/pull/5116(mul/select 算子 PcieThrough 适配),两者需协同合入。

关联的Issue

测试

  • 当前 SDK metadef 版本低于 90200000,GetPcieThroughFlag 真实分支未编入,兜底路径下 isPcieThrough 恒为 false,模板调度行为与合入前一致
  • CI 流水线已通过(ci-pipeline-passed)
  • METADEF >= 90200000 环境下的编译与功能验证待高版本 SDK 就绪后补充

文档更新

不涉及

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 hahaha22 的贡献)
Hhahaha22成员
21 天前 创建了 pull request,commit e700c3ca
atomgit-bot
atomgit-bot
21 天前 评论:

变更摘要

本 PR 为 broadcast 模板 tiling 增加 PcieThrough 场景识别与 UB BRC 强制调度能力。核心改动集中在 pkg_inc/op_common/atvoss/broadcast/broadcast_tiling.h:在 DoTiling 流程中新增 GetPcieThroughInfo 步骤获取 PcieThrough 标志,并新增成员变量 isPcieThrough;PcieThrough 场景下若输入非连续则直接返回失败(不支持非连续输入);在 DoBroadcastOpTiling 中 PcieThrough 时强制走 UB BRC 调度(isUbBroadcast 置为 true),而非按原有 IsUbBroadcast() 逻辑判断;GetPcieThroughInfo 通过 METADEF_VERSION_NUM 宏做版本兼容,高版本(>= 90200000)调用 context_->GetPcieThroughFlag(),低版本兜底为 false,并显式包含 version/metadef_version.h 头文件。

主要改动

  • 新增 GetPcieThroughInfo 步骤: 在 DoTiling 中插入该步骤获取 PcieThrough 标志,失败时记录日志并返回 GRAPH_FAILED
  • PcieThrough 非连续输入校验: DoTiling 中当 isPcieThrough 为 true 且 inputAllContiguous 为 false 时直接返回失败,明确不支持 PcieThrough 场景下的非连续输入。
  • 强制 UB BRC 调度: DoBroadcastOpTilingisPcieThrough 为 true 时强制 isUbBroadcast = true,跳过原有 IsUbBroadcast() 判定。
  • 版本兼容实现: GetPcieThroughInfo 使用 METADEF_VERSION_NUM >= 90200000 条件编译,高版本调用 context_->GetPcieThroughFlag(),低版本兜底 isPcieThrough = false,并新增 version/metadef_version.h 头文件包含。
  • 新增状态成员变量: 在类私有成员中新增 bool isPcieThrough = false,默认关闭该特性。
likedislike
不准确?
atomgit-bot
atomgit-bot
21 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
21 天前 添加了label:stat/needs-squash
CANN-robotCANN-robot成员
21 天前 添加了label:cann-cla/yes
此处折叠了70条消息 查看更多
CANN-robotCANN-robot成员
12 天前 添加了label:approved
RuiWang_成员
12 天前 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
12 天前 添加了label:lgtm
CANN-robotCANN-robot成员
12 天前 关闭了关联的issue
CANN-robotCANN-robot成员
12 天前 合入了pull request