| 修复gmm finalize routing prologue中shared input copyout后的同步问题
Co-authored-by: zhangzhizhuo<zhangzhizhuo1@huawei.com>
# message auto-generated for no-merge-commit merge:
!4438 merge fixgmmfr into master
修复gmm finalize routing prologue中shared input copyout后的同步问题
Created-by: zhangzhizhuo
Commit-by: zhangzhizhuo
Merged-by: cann-robot
Description: ## 描述
<!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->
本次改动只涉及 gmm/common/cgmct/prologue/block_prologue_finalize_routing.h。
改动原因:
在 finalize routing prologue 的 double buffer 处理流程中,yLocal 在执行 CopyOutShareInput(*yLocal, outOffset + offset, curCount) 后,会继续参与后续的 ping-pong 复用。这里缺少显式的 PIPE_ALL 同步,存在 copyout 和后续 buffer 复用之间时序不够严格的风险,可能导致数据搬运与后续处理重叠。
改动方法:
在以下位置补充了一条同步屏障:
CopyOutShareInput(*yLocal, outOffset + offset, curCount);
之后增加:
AscendC::PipeBarrier<PIPE_ALL>();
这样可以在当前 buffer 进入下一轮复用前,确保本轮 copyout 已完成,避免 double buffer 场景下的时序问题。
## 关联的Issue
<!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->
<!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。-->
关联issue [#2005](https://gitcode.com/cann/ops-transformer/issues/2005)
## 测试
<!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。-->
门槛验证,算子泛化验证,二级冒烟。
## 文档更新
<!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->
na
## 类型标签
<!-- [x] 表示选中 -->
- [x] 🐛 Bug 修复
- [ ] ✨ 新特性
- [ ] ⚡ 性能优化
- [ ] ♻️ 重构
- [ ] 🧪 测试
- [ ] 📦 构建/CI
- [ ] 🔧 配置变更
- [ ] 📝 文档更新
- [ ] ⬆️ 依赖升级
- [ ] 🔒 安全修复
- [ ] 🧹 代码清理
- [ ] ❓ 其他,请描述:
See merge request: cann/ops-transformer!4438 | 1 个月前 |