| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
实现hard_swish_grad_v2、deep_norm和foreach_binary_op Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !6812 merge master into master 实现hard_swish_grad_v2、deep_norm和foreach_binary_op Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 实现hard_swish_grad_v2、deep_norm和foreach_binary_op ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/3760 ## 测试 ut/st ## 文档更新 新增算子README ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!6812 | 2 个月前 | |
foreach log fix Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !7763 merge 20260722 into master foreach log fix Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 本次 PR 对 ops-nn/foreach 目录进行日志质量整改与 License 合规修复。 **背景**:CANN 日志质量测评(2026-08-25)发现 foreach 目录存在 **580 项**日志质量问题(严重 30 / 一般 5 / 提示 545)。本次 PR 先整改生产代码与示例代码;**tests 目录内的测试相关改动本次暂不涉及**。 **改动内容**: 1. **生产代码日志整改(54 处,仅日志文案不影响功能)** - 20 处 arch35 tiling tensorNum 越限报错补打实际值 - 2 处判空条件修复:platformInfoPtr == nullptr → compileInfoPtr == nullptr(原条件重复判 platformInfoPtr,compileInfoPtr 未判空即解引用,存在空指针隐患) - 7 处语法错误(%s 改 %u、.Currently 补空格、ConcatString 漏空格、shape dim 补主语) - 2 处拼写改名(Tenor → Tensor) - 22 处中文顿号改英文逗号 2. **示例代码(test_geir)清理(3 个文件)** - 15 处 printf 删除(含 3 处「Run graph failed 却用 INFO」级别错配) - 补标准 CANN-2.0 License 头(年份 2026) > **说明**:tests 目录内的测试相关改动本次暂不涉及,测试文件保持与上游一致。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5181 ## 测试 - 生产代码 54 处问题逐条映射核对:全部解决 - pre-commit 门禁全过:trailing-whitespace / end-of-file-fixer / clang-format / ruff / codespell / OAT(52 文件合规检查) 功能全量回归冒烟PASS ## 文档更新 无(不涉及文档修改) ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:License 合规修复与示例打印清理 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!7763 | 17 天前 | |
实现hard_swish_grad_v2、deep_norm和foreach_binary_op Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !6812 merge master into master 实现hard_swish_grad_v2、deep_norm和foreach_binary_op Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 实现hard_swish_grad_v2、deep_norm和foreach_binary_op ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/3760 ## 测试 ut/st ## 文档更新 新增算子README ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!6812 | 2 个月前 | |
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 个月前 | |
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 个月前 | |
fix(scatter,foreach): 修复 ScatterMax/Min/Mul/Div 排序竞态与 Div 精度档,并整改 12 个算子 golden Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10059 merge fix/golden-third-party-precision-batch2 into master fix(scatter,foreach): 修复 ScatterMax/Min/Mul/Div 排序竞态与 Div 精度档,并整改 12 个算子 golden Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 ScatterMax/Min/Mul/Div 排序阶段的多核同步缺口与 foreach_div_list_inplace 的除法精度档, 并整改 12 个 foreach/scatter/lamb 算子 tests/assets/golden.py 的四类缺陷、补齐 2 处资料。 ### 一、内核缺陷 **1) scatter_reduce_common 并行归并排序缺少 MTE3->V / MTE3->S 同步(竞态)** SortLocalRuns() 循环尾只发 MTE3->MTE2(保护下一轮的输入搬入),未约束下一轮的 V 管道(Sort/Adds)与 S 管道(补哨兵)—— 而它们写的正是同一对 UB shiftSorted / originUb,本轮把它们搬出到 GM 的 DataCopyPad(MTE3) 尚未读完就被覆写, 导致落盘的排序键与原位置索引被污染,少数 var 行折进别行的 update。 旁证:同文件 SortMergeTree() 循环尾发的是 MTE3->S(它只用 S 写 UB,够用), 反衬出 SortLocalRuns() 漏了两条。 修复: cpp + const event_t m3v = pipe_.FetchEventID(HardEvent::MTE3_V); + const event_t m3s2 = pipe_.FetchEventID(HardEvent::MTE3_S); ... SetFlag<MTE3_MTE2>(m3m2); WaitFlag<MTE3_MTE2>(m3m2); + SetFlag<MTE3_V>(m3v); WaitFlag<MTE3_V>(m3v); + SetFlag<MTE3_S>(m3s2); WaitFlag<MTE3_S>(m3s2); **A/B 同种子对照**(var 6288948 行 / M 5375 万 / 合法索引 / 8 个固定种子,其余完全相同): | | 修复前 | 修复后 | |---|---:|---:| | PASS | 2 | **8** | | FAIL | 6 | **0** | 原触发用例连跑 3 遍 3/3 全绿(修复前每次必红)。ScatterMin 同规模复跑 3/3 全绿。 影响面:该内核为 ScatterMax/Min/Mul/Div 共享(Process() 中 MAX/MIN/MUL 走完全相同的路径, DIV 共用排序阶段),四个算子一并修复;位于 op_kernel/arch35/ 专属目录,不影响 A2。 **2) foreach_div_list_inplace 未开启 Div 的 0 ULP 精度档** Div(...) 未传 DivConfig,落到 DEFAULT_DIV_CONFIG = {DivAlgo::INTRINSIC}; 在 dav-3510 上该档是 1 ULP 保真舍入(实测 3126 万个 fp32 元素中 **8.29% 偏 1 ULP**), 而竞品 fp32 除法为 0 ULP 正确舍入。显式选 PRECISION_0ULP_FTZ_TRUE: | | 偏 0 ULP | 偏 1 ULP | 最大偏差 | |---|---:|---:|---:| | 修改前 | 91.71% | 8.29% | 1 ULP | | 修改后 | **100.0000%** | **0%** | **0 ULP** | 全泛化集 34/34 通过,性能 +4.2%(--run 12 同条件实测 209.8us -> 218.7us)。 未取仓内他处常见的 FTZ_FALSE:两档精度实测完全相同,但 FTZ_FALSE 的非规格数完整处理 同条件实测 218.7us -> 2028.1us(**9.3x**),而本算子输入域内不产生 fp32 非规格数。 ### 二、golden 整改(12 个算子) **3) Promote 撤销** —— _to_fp32 无条件把 Promote 后的 float64 砍回 fp32,等于撤销 TTK 的 Promote 能力:fp32 档的 mare 恒等于地板值 0.0019531(= 1ULP / 2^-14),无论内核对错都过, **该档等于从未被验证**。加 float64 护栏(CPU 侧不 cast,来什么算什么)。 **4) 三方腿入参绑定失效** —— _TpKernelFaithful 包装遮蔽了真实签名,TTK 按 __call__ 签名 绑定入参导致 TypeError,三方腿整条不可用。透传 __signature__ 修复。 **5) TensorList 载体还原** —— bf16 以 void 视图传入,torch 不认,按位 view 回 bf16(同宽无损)。 **6) 标量重载** —— torch 的 foreach 标量重载只接受 Number,Python 标量是 weak-typed 不会抬高 dtype,改为返回 Python 数值。 **7) scatter_list 的 uint16/uint32 崩溃** —— 走 torch index_put 会抛异常,改用等宽有符号 位视图(uint16->int16、uint32->int32)规避。 **8) scatter_div 工作 dtype** —— 由硬编码 fp32 改为跟随输入(仅保留 bf16->fp32 的载体桥接)。 **9) scatter_max/min/mul/div 的 tf 三方腿按内核算法转写** —— 内核对 fp16 是 LoadWiden 到 fp32 计算、NarrowStore 窄回,原实现只在窄类型上算,与被测内核不是同一个算法。 ### 三、资料 **10)** aclnnScatterMin.md 补齐索引取值范围约束(索引值的取值范围为[0, varRef.shape[0]))—— 该条 Max/Mul/Div 三个算子的资料原本就有,仅 Min 的约束列为空,属资料内部不一致。 **11)** aclnnScatterList.md 补充 maskOptional 取值范围(措辞与既有的 indice 取值条款对齐), 并修正参数表 mask 维度列笔误(原写 0-8,实际实现仅支持 1 维,tiling 对 maskDims != 1 直接返回 GRAPH_FAILED)。 ## 验证 | 项 | 结果 | |---|---| | ScatterMax 排序竞态 A/B(同 8 种子) | 修复前 2/8 通过 → 修复后 **8/8 通过** | | ScatterMin 同规模复跑 | **3/3 通过** | | foreach_div 全泛化集 | **34/34 通过**,3126 万元素 100% 偏 0 ULP | | 12 个算子 kernel + geir 双通路 | **1646 例,除已修复项外全部通过** | | ScatterMax/Min aclnn 通路 | **2/2、2/2 通过**(GetWorkspaceSize 与 OnXpuProfiling 均命中) | | CI 门禁 | ruff check / ruff format 全部通过 | 关联 Issue #5682 See merge request: cann/ops-nn!10059 | 5 天前 | |
实现hard_swish_grad_v2、deep_norm和foreach_binary_op Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !6812 merge master into master 实现hard_swish_grad_v2、deep_norm和foreach_binary_op Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 实现hard_swish_grad_v2、deep_norm和foreach_binary_op ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/3760 ## 测试 ut/st ## 文档更新 新增算子README ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!6812 | 2 个月前 |