Pull Request已成功合入, 合并人@CANN-robot
(感谢 biabu 的贡献)变更摘要
此 PR 修复了在 NormalLauncher 大 case 下高并发访问全局内存(GM)中 mean/std 标量导致 MTE 挂死、host 重启的问题。核心思路是将 NormalTransform 从持有 GM 指针改为持有标量值,并在 NormalLauncher 中通过 DataCopy 将 mean 和 std 标量从 GM 预搬运到 UB(统一缓冲区)后再传递给 NormalTransform,从而避免高并发下对 GM 的直接访问。
主要改动
NormalTransform成员变量由指针改为值:meanGM_(volatile M_T*)改为meanVal_(M_T),stdevGM_(volatile S_T*)改为stdVal_(S_T),构造函数参数类型和初始化列表相应调整,不再持有 GM 指针引用。- 在
NormalLauncher中新增标量预搬运逻辑: 使用TPipe和TBuf<TPosition::VECCALC>在 UB 上分配 32 字节缓冲区,通过DataCopy分别将meanPtr和stdevPtr指向的 GM 标量拷贝到 UB,再用GetValue(0)读取为局部变量meanVal和stdVal。 NormalTransform构造方式相应变更:NormalLauncher中不再以 GM 指针构造NormalTransform,改为传递已搬运到 UB 的标量值meanVal和stdVal。


代码审查
经过全面审查,我已确认该 diff 中仅存在一个明确的问题。
审查总结
已审查文件:
random/stateless_normal/op_kernel/arch35/stateless_normal.h— 发现 1 个 P0 问题
问题统计:
- P0: 1
- P1: 0
- P2: 0
- P3: 0
整体风险评估: 🔴 高风险 — 该变更存在一个确定的编译错误(P0),将导致 stateless_normal 算子 kernel 无法编译通过。NormalTransform 结构体的成员从 GM 指针改为标量值,构造函数和调用方(NormalLauncher::operator())均已同步更新,但 NormalTransform::operator() 第 58 行被遗漏,仍引用已删除的旧成员名 meanGM_ 和 stdevGM_(且错误地使用了数组下标 [0]),必须修复后才能合并。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 1 |
| 🟡 建议 | 0 |
⛔ 需要修改


Thanks for your pull-request.
The full list of commands accepted by me can be found at here。
You can get sig-info at here
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| repo-cann/ops-math | ✅ 宋恺, wangrui_ (2/2) | ✅ 宋恺 (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
biabu111, thanks for your pull request. All authors of the commits have signed the CLA. 👍


/lgtm
/approve


描述
fix bug: stateless normal导致host重启
关联的Issue
测试
已冒烟
文档更新
不涉及
类型标签