| pref: CombineSetup性能优化
Co-authored-by: tongzy1242<tongzeyun@huawei.com>
# message auto-generated for no-merge-commit merge:
!4411 merge combine_pref into master
pref: CombineSetup性能优化
Created-by: tongzy1242
Commit-by: tongzy1242
Merged-by: cann-robot
Description: ## 描述
<!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->
CombineStep算子AIV直驱URMA通路中,原先有每个jetty只能由一个核处理的约束,导致卡数少的情况下用不满核,性能较差。
Design(设计方案)
调整代码结构,并重新分核。
第一次分核:按卡数\*本卡专家数分核。且在本次分核中,不对除了sq队列之外的其他jetty属性做操作,只将组装好的wqe拷贝到相应jetty的指定sq队列的指定位置上。
第二次分核:按卡数分核,然后按原先方式对jetty进行初始化等操作。
两次分核中间插入全核核间同步。
## 关联的Issue
<!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->
<!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。-->
Issue [#2066](https://gitcode.com/cann/ops-transformer/issues/2066)
## 测试
<!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。-->
本地自验证
## 文档更新
<!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->
不涉及
## 类型标签
<!-- [x] 表示选中 -->
- [ ] 🐛 Bug 修复
- [ ] ✨ 新特性
- [x] ⚡ 性能优化
- [ ] ♻️ 重构
- [ ] 🧪 测试
- [ ] 📦 构建/CI
- [ ] 🔧 配置变更
- [ ] 📝 文档更新
- [ ] ⬆️ 依赖升级
- [ ] 🔒 安全修复
- [ ] 🧹 代码清理
- [ ] ❓ 其他,请描述:
## AI Review
关键问题列表
必须修复(阻塞项)
无阻塞项
建议修复
问题 严重程度 位置 修复建议
1 代码重复 🟡 中 dispatch_setup/moe_distribute_base.h 两个目录存在不同版本的 base.h,建议统一维护或使用公共头文件
2 未使用函数声明 🟢 低 arch35.h:74-78 移除未使用的 SendPerExpert 函数声明
3 注释拼写错误 🟢 低 arch35.h:157 uin32_t → uint32_t
4 文件末尾换行符缺失 🟢 低 moe_distribute_base.h:530, CMakeLists.txt 添加末尾换行符
代码重复问题详细说明
问题描述
PR 中新增了 mc2/moe_distribute_dispatch_setup/op_kernel/moe_distribute_base.h 文件,但该文件是从 moe_distribute_combine_setup 目录复制的 旧版本代码,与 PR 中优化后的版本不同步。
差异对比:
功能模块 combine_setup 版本(新) dispatch_setup 版本(旧)
GenerateCommWriteSQE 使用 uint64_t 批量写入 逐字节写入
UpdateCommonSQE 使用 uint64_t 批量写入 逐字节写入
PutCommSQE 简化接口,单 SQE 拷贝 复杂接口,支持批量拷贝
PutCommNotifySQE 简化接口,单 SQE 拷贝 复杂接口,支持批量拷贝
GetPICI/UpdatePICI 使用 MTE 批量搬运 逐元素读写 + DCCI
SendJFSDoorBell 移除未使用参数 保留未使用参数
建议
方案 A(推荐):将 moe_distribute_base.h 放到公共目录 mc2/common/op_kernel/,由两个算子共同引用。
方案 B:将 dispatch_setup 目录的 base.h 同步更新为新版本。
方案 C:如果 dispatch_setup 需要保留旧版本功能,应在注释中说明差异原因。
审查结论
最终判定:PASS WITH NOTES
判定依据:
总分 82 分 ≥ 70 分,无必须修复问题
存在建议修复项,不影响核心功能
代码重复问题需要关注维护风险
后续建议
合并前:处理代码重复问题,确保两个算子使用一致的 base.h
合并后:移除未使用的函数声明,修正注释拼写
性能验证:在 NPU 环境下运行性能对比测试,确认优化效果
See merge request: cann/ops-transformer!4411 | 1 个月前 |