| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(batch_norm): arch35 路径 VL 写死常量改为 VL 派生,移除 batch_norm_v3 本地 GetVRegSize 写死回退 Co-authored-by: HelloWord-LuXin<luxin67@h-partners.com> # message auto-generated for no-merge-commit merge: !9027 merge fix/batch_norm_vl_hardcode_arch35 into master fix(batch_norm): arch35 路径 VL 写死常量改为 VL 派生,移除 batch_norm_v3 本地 GetVRegSize 写死回退 Created-by: HelloWord-LuXin Commit-by: HelloWord-LuXin Merged-by: cann-robot Description: ## 背景 docs/batch_norm_vl_hardcode_audit.md 审计报告指出 batch_norm 系列四个算子 arch35 kernel 侧存在 VL 写死常量。本 PR 按报告 P0+P1 优先级进行整改,范围与 b1cb72bde / b55fcd4f2 一致(仅 arch35/regbase 路径,910/310 的 tiling 与 kernel 未触碰)。 ## 修改内容 ### P0: batch_norm_v3.h — 移除本地 GetVRegSize() 写死回退 - 移除 #if __CCE_AICORE__ == 310 || __NPU_ARCH == 5102 / return 256U 写死回退分支 - 改为委托 platform::GetVRegSize(),与 batch_norm / batch_norm_grad / batch_norm_grad_v3 其余三个算子统一 VL 来源 - 同时将 GetUbBlockSize() 改为委托 platform::GetUbBlockSize() - 消除 batch_norm_v3 与 norm_common 的 #if 判断不一致风险(前者含 5102 分支,后者不含,在 DAV_5102 上可能导致同编译单元内 VL 取值分叉) ### P1: batch_norm_grad_common.h / batch_norm_grad_v3_split_r1_regbase.h — 9 个 cache 常量改为 VL 派生 - CACHE_BUFF_SIZE / DGAMA_CACHE_INDEX / CACHE_LEVEL0~2_INDEX / DBETA_FOLD_CACHE_INDEX / DGAMA_FOLD_CACHE_INDEX / FOLD_CACHE_CAPACITY / ONE_LEVEL_BINARRY_ADD_CACHE_CAPACITY - 从字面量(256/768/1536/64 等)改为 VECTOR_LENGTH / VL_FP32 派生表达式 - 这些常量被 InitBuffer / 二分掩码 idx & (CAPACITY - 1) 强耦合,未来 VL 变化会导致归约语义错误 ### P1: 3 个文件的 UB_ADD_BUF / UB_ADD_LEN 改为 VL 派生 - batch_norm_grad_recompute_split_r0_regbase.h / batch_norm_grad_infer.h / batch_norm_grad_v3_recompute_split_r0_regbase.h - UB_ADD_LEN = 1024/sizeof(float) → 4 * VL_FP32 - UB_ADD_BUF = 3*1024 → 3 * UB_ADD_LEN * sizeof(float) ## 等价性验证 所有派生表达式在 950 平台(VRegSize=256B、VL_FP32=64)下与原字面量取值完全一致: | 常量 | 原值 | 派生表达式 | 派生值 | |---|---|---|---| | ONE_LEVEL_BINARRY_ADD_CACHE_CAPACITY | 256 | VECTOR_LENGTH | 256 | | FOLD_CACHE_CAPACITY | 64 | VL_FP32 | 64 | | CACHE_LEVEL1_INDEX | 256 | VECTOR_LENGTH | 256 | | DGAMA_CACHE_INDEX | 768 | 3 * VECTOR_LENGTH | 768 | | DBETA_FOLD_CACHE_INDEX | 1536 | 6 * VECTOR_LENGTH | 1536 | | CACHE_BUFF_SIZE | 6656 | 6*1024 + 2*VECTOR_LENGTH | 6656 | | UB_ADD_LEN | 256 | 4 * VL_FP32 | 256 | | UB_ADD_BUF | 3072 | 3 * UB_ADD_LEN * sizeof(float) | 3072 | ## 未涉及(后续整改) - P2: FIRST_VCADD_RESULT_MAX_NUM = 128 及非 arch35(A2/A3)路径 ELEM_PER_REP_FP32 = 64 等(base 路径需单独评估回归面) - P3: norm_common/reduce_common_regbase.h 的 ONCE_VECTOR_SIZE = 256(被约 15 个 norm 算子共用,b55fcd4f2 已标注为残留风险,待 norm_common 统一整改) --- ## 关联 issue Fixes #5048 See merge request: cann/ops-nn!9027 | 18 天前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 18 天前 | ||
| 2 个月前 |