| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
迁移 AddLayerNormFusionPass 融合规则 Co-authored-by: wangpengbo26<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !11991 merge aln_pass into master 迁移 AddLayerNormFusionPass 融合规则 Created-by: wangpengbo26 Commit-by: wangpengbo26 Merged-by: cann-robot Description: ## 描述 迁移 AddLayerNormFusionPass GE 自定义融合规则至本仓库,将 Add 与 LayerNorm 系列的组合图融合为 AddLayerNorm 算子,减少图执行时的算子下发数量和中间结果访存。同步补充设计文档、配图和 UT。 ### 改动原因 Add + LayerNorm 组合在 GE 图中以展开形式存在,算子下发数量多、中间结果访存开销大。AddLayerNormFusionPass 融合规则迁移至本仓库统一维护,匹配后替换为 AddLayerNorm 算子节点,提升执行性能。 ### 改动方法 1. **AddLayerNormFusionPass**:识别 Add + Cast(可选)+ LayerNorm/LayerNormV3/LayerNormV4 组合,融合为 AddLayerNorm 算子。支持 4 种场景: - 场景一:Add + Cast(可选)+ LayerNorm/V3/V4 - 场景二:Add + Add + Cast(可选)+ LayerNorm/V3/V4(含可选 bias) - 场景三:Cast + Add + LayerNorm/V3/V4 - 场景四:Add + Add + Cast + LayerNorm/V3/V4 + Cast - 各场景有明确的输入数据类型组合约束(FLOAT16/BFLOAT16/FLOAT32 组合,见文档表格)。 2. **设计文档**:新增 AddLayerNormFusionPass.md,描述 4 种融合模式(8 张配图)、使用约束(各场景数据类型组合表、axis 等约束)、支持的型号。 3. **UT**:AddLayerNormFusionPassTest 5 个用例,覆盖融合成功(LayerNormV4 fp16、含 bias、LayerNormV3 bf16、Add 前置 Cast)与不融合场景(非法 axis 拒绝)。 4. **CMakeLists.txt**:新增 UT 构建配置。 涉及文件(13 个,+1723): - norm/add_layer_norm/op_graph/fusion_pass/add_layer_norm_fusion_pass.cpp(新增,+1271) - norm/add_layer_norm/op_graph/fusion_pass/add_layer_norm_fusion_pass.h(新增,+26) - norm/add_layer_norm/docs/AddLayerNormFusionPass.md(新增,+105) - norm/add_layer_norm/tests/ut/op_graph/test_add_layer_norm_fusion_pass.cpp(新增,+276) - norm/add_layer_norm/tests/ut/op_graph/CMakeLists.txt(新增,+21) - docs/zh/figures/add_layer_norm_fusion_pass_1~8.png(新增) ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/6761 ## 测试 - AddLayerNormFusionPassTest:5 个 UT 用例,覆盖融合成功(多变体、含 bias、Cast)与不融合(非法 axis)场景。 ## 文档更新 - 新增 AddLayerNormFusionPass.md 设计文档及 8 张配图 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11991 | 18 小时前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
test(add_rms_norm): add GPU third-party golden reference Co-authored-by: liangyuhua<liangyuhua4@huawei.com> # message auto-generated for no-merge-commit merge: !12096 merge fix/add_rms_norm_gpu_third_party_20261015 into master test(add_rms_norm): add GPU third-party golden reference Created-by: liangyuhua Commit-by: liangyuhua Merged-by: cann-robot Description: ## 描述 为 Ascend 950 AddRmsNorm 测试 golden 增加 GPU third_party 参考实现,支持 CPU/NPU/GPU 三方精度对照。 - 增加 __spec__ 注册及 AddRmsNormSpec、AclnnAddRmsNormSpec、TorchAddRmsNormSpec,对应 Kernel/GEIR、ACLNN 和 torch_npu.npu_add_rms_norm 入口。 - 新增 AddRmsNormXpuRef:使用 torch.add + torch.rms_norm 计算 y,并补算 rstd 和残差和 x,按 y、rstd、x 顺序返回。 - GPU 参考保留 FP32 中间残差和;输入包含 FP64 时保留 FP64,y/x 在输出阶段恢复输入 dtype。 - 保留函数式 __golden__、原有 CPU SoC 分支及 TTK 默认精度标准,补充计算步骤和接口适配注释。 变更文件:norm/add_rms_norm/tests/assets/golden.py。新增 GPU 参考的适用范围为 Ascend 950/regbase 普通模式;该文件中既有 A2/A3 CPU 计算路径保持原实现。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6757 ## 测试 按提交者要求,本次提交未重新运行测试、本地 CI 或 CannbotHarness;不将历史验证结果作为本次提交的完整验证结论。 ## 文档更新 补充 golden 文件中的分段注释及 GPU 参考类说明。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试参考实现与三方对照能力 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12096 | 3 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
fix: 修复 AddRmsNormDynamicMxQuant 推导、UB 访问及验证 golden Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !11699 merge fix/add-rms-norm-dynamic-mx-quant-harness into master fix: 修复 AddRmsNormDynamicMxQuant 推导、UB 访问及验证 golden Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修复 AddRmsNormDynamicMxQuant 在 GE 动态形状推导中遗漏禁用 rstd 输出描述符的问题,以及 Ascend950/regbase 的 UB 标量读取、量化临时区分配与 host 预算不一致的问题。同时整理本算子的 golden、接口说明和示例,使验证结果能够准确反映实际执行情况。 本 PR 共修改 **14 个文件**,以下逐文件说明原问题、修改原因、具体改法、影响及当前情况。历史板测基点为 7429363a464c0ac20f6c38203e74b7c4e0e8eef6。本轮按最新本地 CI 规则先将 6 个提交 squash 为 1 个,再 rebase 到本次获取的主仓 master 64b41ad63a5073bc711ba03802498bfe8bdb77e5;squash 前后完整 diff 与 HEAD tree 不变,rebase 后 PR 完整 diff 也不变。当前 PR HEAD 为 dfb31fe89168953d213defd8c3ef4248e073f605,950 本地 CI 已通过,等待线上 CI 与人工审核。 **950 范围与共用代码的人工审核点:** 计算及 tiling 修复均位于本算子的 arch35 实现或 _arch35.cpp 文件,沿用现有 regbase 分流。最新主线已注册 ascend950 与 ascend350(350 注册及 binary 配置来自主线,不是本 PR 新增),因此不能再用“仅注册 950”推断其他产品不受影响。本次没有修改 A2/A3/910/310 专用实现;验证范围仍仅 950,新增的 350 共用范围需人工审核,未做 350 验证。op_host/add_rms_norm_dynamic_mx_quant_infershape.cpp 是没有芯片分流的共用入口,必须单独人工审核:本次补齐关闭 rstd 时已有描述符的 [0] 形状,并放宽未知 rank 的推导支持;不新增输入拒绝条件,具体 rank [1,7] 及开启 rstd 时的判空条件保持原主线行为。没有其他产品上板验证证据,不将 950 的结果表述为其他产品已验证。proto 的修改仅为注释,golden、文档和示例的作用范围在各文件下说明。 **1. norm/add_rms_norm_dynamic_mx_quant/README.md** - **原问题:** rstd 被写为标准差倒数;接口层空 Tensor/动态形状说明及 Torch 内部实现展开与接口文档重复,FP4 逻辑 shape 和物理存储解释混淆。 - **修改原因:** 保留 README 的算子功能、参数、通用约束及调用入口,具体编译运行步骤由对应接口文档承载。 - **怎么改:** 修正为含 epsilon 的均方根倒数,三路加法增加括号;在原“约束说明”简述空 Tensor 行为并限定 rstd 启用条件;移除混合章节和 Torch 内部实现展开,保留完整接口文档链接。“调用说明”保留既有表格及示例、接口文档链接,不重复添加另存文件、编译及校验结果说明。 - **影响:** 文档变化,不修改算子定义、示例代码和其他产品行为;不改变既有调用表及接口链接。 - **当前情况:** 删除冗余段落后,精确差异、表格渲染、本地链接、文档校验器及提交检查均通过。接口文档和示例未变,此前四份示例在 950 的全部有效输出比较结果保持适用;本次未重复运行不受影响的示例。 **2. norm/add_rms_norm_dynamic_mx_quant/docs/aclnnAddRmsNormDynamicMxQuant.md** - **原问题:** rstd 术语、NULL roundMode 错误码及参数 const 类型不准确;空 Tensor 说明混合其他接口信息;示例只打印 y,未比较 x/mxscale,且原实测编译命令与公开步骤没有对应验证。 - **修改原因:** 使公开参数、错误码、边界与当前源码相符,补齐客户可复现的示例构建及结果核对。 - **怎么改:** 按参数表/约束说明归位空 Tensor、具体 shape 和关闭 rstd 可传 nullptr 的约定;NULL roundMode 修正为实际返回的 161001。调用示例前补充可配置 CANN/custom_nn 路径的 C++11 编译运行命令;在既有固定输入、outputRstd=false 的示例中补回读 x/mxscale,对 y/x/mxscale 全部元素按独立推导的编码精确比较,比较或新增回读失败返回非零。保持现有释放段,新增回读失败仍会到达该释放段,不读取无效 rstd。删除调用示例前重复叙述自检逻辑及内嵌/独立示例校验范围的说明段落,保留编译运行步骤及代码内检查。 - **影响:** 文档、内嵌示例及其退出状态变化;不修改生产 op_api、返回码、ABI 或输入校验。 - **当前情况:** 原型与真实源码/安装头文件一致;原文 C++11 编译和 950 运行通过,260 个有效元素及实际 shape/dtype 全部核对通过。三个输出末元素扰动均返回 1;新增 x/mxscale 回读失败两项均返回 1。本次文字精简后,所有代码块及命令与精简前逐字节相同,文档校验和提交检查通过;上述编译、板测为既有记录,本次未重复上板。 **3. norm/add_rms_norm_dynamic_mx_quant/docs/aclnnAddRmsNormDynamicMxQuantV2.md** - **原问题:** 除 V1 同类文档与示例验证缺口外,x3 不匹配的错误码归类错误,条件使用内部“空批维提前返回”术语;示例初始化失败清理不完整。 - **修改原因:** 明确 V2 的客户可见条件,保留三路加法和关闭 rstd 的示例参数,补齐可复现运行与全部有效输出比较。 - **怎么改:** 修正 rstd、NULL roundMode、const 类型及空 Tensor 说明;x3 不匹配归入 161002,将适用条件写为“x1 除最后一维外各维长度均非零”,保留空批维例外。保留 SetDevice/CreateStream 失败清理和 nullptr 初始化。增加与 V1 一致的可配置构建步骤及 y/x/mxscale 全元素比较,x 的固定期望按 (1+0.5)+0.5=2.0 推导。删除调用示例前重复叙述自检逻辑及内嵌/独立示例校验范围的说明段落,保留编译运行步骤及代码内检查。 - **影响:** 仅文档和内嵌示例;生产 V2 校验、计算和其他产品行为不变。 - **当前情况:** 文档校验、原文 C++11 编译与 950 运行通过,260 个有效元素及 shape/dtype 全部比较通过;三个输出末元素扰动和两个新增回读失败均被非零退出拦截。初始化失败分支为源码核对,未新增故障注入;不将其他失败项的注入等同于初始化失败验证。本次文字精简后,所有代码块及命令与精简前逐字节相同,文档校验和提交检查通过;上述编译、板测为既有记录,本次未重复上板。 **4. norm/add_rms_norm_dynamic_mx_quant/docs/torchapi_add_rms_norm_dynamic_quant.md** - **原问题:** rstd 术语不准确;此前复制的空 Tensor/动态形状整段混入 ACLNN workspace、nullptr 和 GE 未知形状规则。 - **修改原因:** Torch 文档只阐述 Torch 使用者可见的参数、返回值及边界行为,避免不同接口的表示方式混淆。 - **怎么改:** 修正均方根倒数定义;删除混合章节,在现有“约束说明”保留空输入语义和 output_rstd=false 时占位内容未定义的说明。FP4 y 的 uint8 打包、尾轴减半、mxscale dtype/shape 继续由已有“返回值说明”承载,不重复新增章节。 - **影响:** 仅文档变化,未修改 Torch 实现、返回签名、FP4 打包或占位返回约定。 - **当前情况:** 已与当前 C++ 封装、图转换及历史 E2E/空输入证据核对;本轮未重新运行 Torch 全量。此次 4 个实际示例进程为 C++ ACLNN 示例,不将其当作 Torch E2E 验证。 **5. norm/add_rms_norm_dynamic_mx_quant/examples/test_aclnn_add_rms_norm_dynamic_mx_quant.cpp** - **原问题:** 只打印部分输出,无法据此认定数值正确,原先还曾直接打印 Test PASSED。 - **修改原因:** 示例是否成功应取决于当前固定输入的全部有效输出比较。 - **怎么改:** 保留输入、API 调用及原有打印,增加 yOut/xOut 全元素精确比较、mxscale 有效槽位及奇数块 padding 比较;rstd 以 1/sqrt(2^2+epsilon) 为独立期望,拒绝非有限值,相对误差要求不超过 1e-6。输出逐项检查结果,全部通过才返回 0,否则返回 1。 - **影响:** 仅示例 Host 校验及退出状态,不修改算子数值算法或数据;现有资源管理结构未重构。 - **当前情况:** 按文档步骤 C++11 编译并在 950 原文运行通过;134 个有效元素及实际 shape/dtype 独立核对通过,rstd 最大相对误差约 5.79e-9。四个输出的最后一个元素分别扰动后,均报告对应 FAIL 并返回 1,排除了只检查打印前缀的假通过。 **6. norm/add_rms_norm_dynamic_mx_quant/examples/test_aclnn_add_rms_norm_dynamic_mx_quant_v2.cpp** - **原问题:** 未比较数值却打印通过;SetDevice/CreateStream 初始化失败清理不完整。 - **修改原因:** 使 V2 示例同时演示三路加法调用和全部有效输出校验,修复已识别的初始化失败清理。 - **怎么改:** 保留 stream=nullptr、初始化失败清理;在原有 x3=0.5、x1=x2=1.0 的输入下增加 y/x/mxscale 全元素精确比较及奇数块 padding 检查,rstd 以 1/sqrt(2.5^2+epsilon) 独立核对,要求有限且相对误差不超过 1e-6;失败返回 1。 - **影响:** 示例检查、日志、退出状态及原初始化失败清理变化;不改变生产算子或成功调用参数,不重构其既有资源管理结构。 - **当前情况:** 按公开步骤 C++11 编译并在 950 运行通过,134 个有效元素及 shape/dtype 独立核对通过,rstd 最大相对误差约 2.04e-8。四个输出末元素扰动均返回 1。初始化失败路径未做故障注入,保持明确的验证边界。 **7. norm/add_rms_norm_dynamic_mx_quant/op_graph/add_rms_norm_dynamic_mx_quant_proto.h** - **原问题:** 注释引用不存在的 axis 属性,mxscale 的形状公式不够明确;rstd 被解释为标准差倒数,未说明关闭后的必需图输出占位。 - **修改原因:** 使图接口注释与实际 schema、固定尾轴量化和 InferShape 保持一致。 - **怎么改:** 写明量化轴固定为 rank(x)-1、无 axis 属性;mxscale 尾轴组数为 ceil(ceil(R/32)/2) 并追加维度 2;rstd 改为含 epsilon 的均方根倒数,关闭时 REQUIRED 图输出为 [0]。 - **影响:** 仅注释变化;没有修改 REG_OP、输入输出 REQUIRED/OPTIONAL 属性、dtype、属性列表或其他产品的注册行为。 - **当前情况:** 已与未修改的算子定义和实际动态描述符结果核对;rstd 仍是 REQUIRED,没有改为 optional。 **8. norm/add_rms_norm_dynamic_mx_quant/op_host/add_rms_norm_dynamic_mx_quant_infershape.cpp — 共用入口,需人工审核** - **原问题:** output_rstd=false 时未填充 REQUIRED rstd 的 shape,造成动态描述符失败;前置 rank 校验没有显式区分 unknown rank 与具体 rank,未知 rank 支持不完整。首轮修复还曾引入无条件 rstd 判空,不符合“不得收紧共用入口校验”的要求。 - **修改原因:** 补齐 GE 输出描述符,同时保留原主线对关闭 rstd 时缺少 shape 对象的接受条件。 - **怎么改:** 普通 rank [1,7] 校验排除 unknown rank;读取 rstd shape 后,仅在关闭 rstd 且对象存在时设置 [0];开启时的判空仍放在原有已知/未知 rank 两个分支内。当前 b220091 已撤回首轮无条件判空。 - **影响:** 关闭且有描述符时补齐空占位;关闭且对象为空时不新增报错、不解引用空指针;开启时保留原判空要求;具体非法 rank 继续拒绝,unknown rank 推导支持放宽。此入口没有产品判断;本轮 rebase 后的主线已有 950/350 注册,继续作为共用行为变化单独报审,不将 950 结果当作 350 兼容性验证。 - **当前情况:** 历史提交 b2200914 重新构建后 GEIR 113 条:107 PASS、6 条非法 rank 预期拒绝;动态 rstd 描述符 8/8 PASS,实际输出与形状元数据与首轮 Revise 逐字节相同。缺少 rstd shape 对象的兼容性依据源码控制流及 CANN getter 契约复核,未执行直接构造空对象的 InferShapeContext 测试。 **9. norm/add_rms_norm_dynamic_mx_quant/op_host/add_rms_norm_dynamic_mx_quant_tiling_r_full_load_arch35.cpp** - **原问题:** 旧预算没有完整体现 scale 临时区的最小分配;配合本 PR 的整段 256B 对齐后,还必须计入新增 padding。固定主线缺少最终循环本身不等于存在物理 UB 溢出,本轮公式枚举主线可选 full-load 的 125056 个组合未发现总分配超限。 - **修改原因:** 使 host 预算与新 kernel 分配一致,防止修改 buffer 后选择超预算行数。 - **怎么改:** CalFixedCost 加入两个 scale 临时区的对齐差额;先按 blockFactor 裁剪,再按最终精确总量递减 rowFactor;一行也放不下时沿用原模板回退。 - **影响:** 只影响本算子 950/regbase full-load 内部切分;不新增 shape/dtype 拒绝条件,不改变数值公式。临界 rowFactor 可能下降,已经针对其功能和性能验证。 - **当前情况:** 当前公式枚举 196608 个组合,预算/InitBuffer 分配一致,最终循环最多减一行。真实 M=9296、R=26、FP32 gamma/beta、beta/x3 启用、FP4 输出时,主线 166 行使用 253888B;若新 buffer 保留 166 行则需 254016B,超物理 UB 64B;当前实际选 165 行,使用 252640B,上板通过。去循环的超限量是分配公式结果,不是故意下发非法 kernel 的板测记录。65 条两版 binary 的 130 份实际 tiling 已核对;性能结果见本轮验证,未发现稳定回退。 **10. norm/add_rms_norm_dynamic_mx_quant/op_host/add_rms_norm_dynamic_mx_quant_tiling_split_r_arch35.cpp** - **原问题:** mxScale 输出队列实际为双 buffer,旧 host 只计一份;scale 临时区预算也需要跟随 kernel 的对齐策略。 - **修改原因:** 消除 host 与 kernel 的 UB 计费不一致,使候选 baseN 的预算覆盖真实分配。 - **怎么改:** mxScale 成本乘 DOUBLE_BUFFER;maxExp/halfScale 按 vlfp32*FP32_SIZE,即 256B,向上对齐。 - **影响:** 只影响本算子 950/regbase split-R 的内部预算,不收紧公共参数校验。本机 253952B UB 下,本轮分析和板测未发现 baseN 因此变化。 - **当前情况:** 2736 个 powerSplit/cache 边界组合的修改前后 baseN 相同;23 条实际 split-R 边界选择 4096/8192,最小 UB 余量 21408B,输出保持一致。没有复现“主线少算一份 buffer 导致本机物理 UB 溢出”;本修改的依据是确定的预算口径差异,不能写成已复现硬件异常。 **11. norm/add_rms_norm_dynamic_mx_quant/op_kernel/arch35/add_rms_norm_dynamic_mx_quant_common.h** - **原问题:** UpdateCache 每个槽位仅存一个有效 FP32 标量,旧 DIST_NORM 却读取整个 256B 向量;后续 VL1 算术 mask 不缩短读取,可能越过所属 TBuf。 - **修改原因:** 让实际读取范围与有效标量匹配。 - **怎么改:** src 和循环内各 cache 槽位均改用 DIST_BRC_B32,读取一个 4B 元素并广播;保留首元素加法、归约顺序和存储。 - **影响:** 仅供本算子 arch35 模板使用,不是跨产品共用库;只改变读取宽度,不改变有效 FP32 运算。 - **当前情况:** 本轮两版各 8 条插桩 memcheck、修改版 4 条 racecheck 全部通过;核验了实际目标 kernel、插桩对象与发布二进制输出一致性。主线也未报错,因此不声称 sanitizer 已复现旧逻辑跨界。访问范围收敛到 4B 的依据为源码与指令语义。 **12. norm/add_rms_norm_dynamic_mx_quant/op_kernel/arch35/add_rms_norm_dynamic_mx_quant_r_full_load.h** - **原问题:** maxExp 原分配按 32B 对齐且下限 128B,OCP B16 LoadAlign 读取整段 256B。真实 M=1/R=64 时旧分配 128B、读终点 256B;M=1/R=4128 时旧分配 288B、读终点 512B,越过所属 TBuf。 - **修改原因:** 使最后一轮完整 OCP 向量读取仍在 maxExp 分配范围内。 - **怎么改:** 整段 maxExp 按 VL_B16*sizeof(uint16_t)=256B 对齐;halfScale 使用同样的保守大小,并由文件 9 完整计费。halfScale 量化乘法使用 DIST_E2B_B16,不能把它描述成 maxExp 的同一条完整向量读取。 - **影响:** 仅改变 950/regbase full-load UB 分配;输入输出、RMSNorm、量化公式与舍入模式不变。新增对齐成本和临界行数变化已验证。 - **当前情况:** 上述实际形状两版均通过数值比较;当前物理读取上界由分配覆盖。R=18/20/22/24/34/36 的 6 条当前分配恰好用满 253952B UB 的用例均通过;满 UB 代表用例另通过 memcheck/racecheck。未复现旧版数值错误或硬件异常,不将静态 TBuf 跨界写成整块物理 UB 溢出。 **13. norm/add_rms_norm_dynamic_mx_quant/op_kernel/arch35/add_rms_norm_dynamic_mx_quant_split_r.h** - **原问题:** 最终 rstd 从最后一个有效 cache 槽以 DIST_NORM 读取 256B,超过该槽与所属 cache;scale 分配的统一对齐也需与 host 匹配。 - **修改原因:** 消除标量 cache 的过宽读取,并保持 scale 访问范围和预算一致。 - **怎么改:** 最终 cache 改用 DIST_BRC_B32,仍只存首个 FP32 元素;maxExp/halfScale 整段按 256B 对齐,文件 10 同步预算。 - **影响:** 只影响本算子 arch35 split-R 内部读取与分配,不改变有效标量、结果位置和量化公式。实际选出的 baseN=4096/8192 对应 scale 原本已为 256/512B,本轮未观察到 scale 部分改变实际分配。 - **当前情况:** R=65538/baseN=4096 的实际 cache 为 160B、最后槽偏移 128B:旧读终点 384B,新终点 132B。23 条实际 split-R 边界两版输出一致,定向插桩检查通过。scale 小 buffer 的泛化风险不冒充当前 950 已触发故障;旧版 sanitizer 没有报错。 **14. norm/add_rms_norm_dynamic_mx_quant/tests/assets/golden.py** - **原问题:** 依赖相邻 dynamic_mx_quant 的 golden 路径并 monkey-patch 其函数,独立使用不稳定;ACLNN V1/V2 包装靠参数数量/用例名猜测,缺少统一显式注册和独立参考;TTK promotion 后可能丢失原输入 dtype,破坏量化前回转 FP16/BF16 的语义;R=0、Torch 打包输出也需要按实际接口处理。 - **修改原因:** 建立本算子可复现的四通路验证基线,避免参考实现、参数绑定或存储解释错误掩盖真实算子结果。 - **怎么改:** 内置固定基线的 MX 编码 helper,取消邻居模块加载及 monkey-patch;显式注册 Kernel/GEIR、ACLNN V1/V2、真实 Torch E2E TestSpec,并按各头文件参数顺序独立包装;从原始 dtype 元信息恢复存储类型,在普通/分块路径都保留量化前回转;保留 (x3+x1)+x2 顺序,补齐空输入/R=0 的 NaN rstd;Torch 比较前还原 FP4 低 nibble 优先的打包值与 E8M0 字节;新增不调用主 golden/MX helper 的 NumPy 归约、frexp 指数和有限值表舍入参考。 - **影响:** 只改变本算子的测试参考、接口绑定和存储解释,不修改设备计算。禁用 rstd 返回 None,仅跳过无效数值比较,图描述符另行验证;FP4/E8M0 仍用 binary_equal,普通浮点沿用既有门限。独立参考与主 golden 仍共用输入传输、语 See merge request: cann/ops-nn!11699 | 3 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11972 merge feat/hi-f4-quant-ascend960dt into master feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增 hi_f4 量化算子,并同步若干算子的 Ascend960 平台支持(含公共件配套)。 - **新增算子**:rms_norm_hi_f4_quant / add_rms_norm_hi_f4_quant,Ascend960 专属(kernel 与 tiling 位于 arch92 目录),ReciprocalCast 接口适配,aclnn 接口位于算子根 op_api/ 目录(仓规范布局) - **数据类型兼容层**:算子内数据类型引用统一切换 Ops::NN:: 常量(复用 master 先行合入的 op_const_def_nn.h 兼容层,见 !11999),各版本 CANN 均可编译 - **batch_norm / batch_norm_v3**:tiling 核间均衡 + kernel block_split_r 优化 - **add_rms_norm_dynamic_quant_v2**:目标平台注册 + config - **lp_norm_v2**:tiling 平台管理器初始化补充 - **公共件配套**:ascendc_impl_build.py DTYPE_MAP 补 hifloat4 映射 - **工程配置**:ascendc_config 注册 ## 测试 已在 Ascend960 环境完成编译与功能验证;低版本 CANN(metadef 9.2.0)语法验证通过;A5 不受影响。 ## 类型标签 - [x] Feature 关联 Issue: #6687 See merge request: cann/ops-nn!11972 | 3 天前 | |
feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11972 merge feat/hi-f4-quant-ascend960dt into master feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增 hi_f4 量化算子,并同步若干算子的 Ascend960 平台支持(含公共件配套)。 - **新增算子**:rms_norm_hi_f4_quant / add_rms_norm_hi_f4_quant,Ascend960 专属(kernel 与 tiling 位于 arch92 目录),ReciprocalCast 接口适配,aclnn 接口位于算子根 op_api/ 目录(仓规范布局) - **数据类型兼容层**:算子内数据类型引用统一切换 Ops::NN:: 常量(复用 master 先行合入的 op_const_def_nn.h 兼容层,见 !11999),各版本 CANN 均可编译 - **batch_norm / batch_norm_v3**:tiling 核间均衡 + kernel block_split_r 优化 - **add_rms_norm_dynamic_quant_v2**:目标平台注册 + config - **lp_norm_v2**:tiling 平台管理器初始化补充 - **公共件配套**:ascendc_impl_build.py DTYPE_MAP 补 hifloat4 映射 - **工程配置**:ascendc_config 注册 ## 测试 已在 Ascend960 环境完成编译与功能验证;低版本 CANN(metadef 9.2.0)语法验证通过;A5 不受影响。 ## 类型标签 - [x] Feature 关联 Issue: #6687 See merge request: cann/ops-nn!11972 | 3 天前 | |
fix(add_rms_norm_quant): 加固950空输入与输出契约并修复950/960量化除法 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !11665 merge fix/add-rms-norm-quant-spec-regression into master fix(add_rms_norm_quant): 加固950空输入与输出契约并修复950/960量化除法 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修复 AddRmsNormQuant V1/V2 在 Ascend 950 的合法空输入调度、次正规数除法量化及 V2 输出指针语义问题,补齐每版一个 TestSpec golden、接口说明、输出专项和示例资源管理。本次处理主线新增 Ascend 960 共用实现产生的冲突,并将 QuantDiv 修复覆盖到 960 对应的除法路径。 **审查范围与当前版本** - 当前提交 5487fe234a9d94db57907d8d391b1006e7c71b15,比较基点为本轮从官方主仓获取的 master e03cebe43e8e134b5bde943edb77f70676109d40,PR 相对该基点只有一个提交,共 **19 个文件**。原分支已为单提交,保存备份并校验完整 binary diff/Git tree 后 rebase;本轮 master 未前进,rebase 未改变补丁。 - 本轮按审查意见简化 QuantDiv:相对上一版 f869a910244b9784935e3494684650ffd56f5dab,仅两个 arch35 头文件删除 18 行条件编译/Div 回退代码。QuantDiv 定义及六个调用位置统一使用同一实现,不再判断 3510/9201/9202。函数算法、divMode 的乘除选择以及主线原有的 960 MulDstAdd/Axpy 优化条件不变。 - **产品范围更正:DAV_3510 并非只对应 950,也包括 350。** 仓内 cmake/soc_arch_variables.cmake 将 ascend950、ascend350 都映射到 dav_3510;V1/V2 均已有 ascend350 注册。因此上一版 QuantDiv 和 3510 空输入/xOut 条件已经覆盖同架构的350,并非本次删条件才扩展到350;此前“只对950”“排除其他产品”的表述不够准确,本段及逐文件说明予以更正,未取得350硬件验证。 - 960dt/pr 分别映射 9201/9202;V1 已注册 ascend960dt,V2 尚未注册960,本 PR 不新增产品注册。5102 对应 MC62,不是350;V1 apt 源码保留该入口,但当前这两个算子没有 MC62 产品注册。删条件使该预留源码入口也使用 QuantDiv;此共用代码影响明确提交人工审核,尚无5102编译/运行验证。不宣称新增MC62支持。 - 空输入 tiling、两个 kernel 入口早退和 V2 xOut 判空仍限定 DAV_3510(950/350),本轮未修改这些条件;960不自动继承。共用 L0 仍统一由实际 resOut 指针控制 output_res。 - **按用户要求先更新 PR,再验证;本轮删条件提交的6项预处理一致性检查、2项5102预留路径差异检查及950/A2定向本地CI均通过,结果见测试节。** 960模型因缺配套模型已按用户决定停止,未取得960数值结果;本轮不继续尝试960仿真。 - rank 0 的 scales2/zero_points2 被共用 InferShape 误判缺省属于已复现基线问题,本 PR 未修复;空进空出/空进非空出完整契约继续另项处理。共用修改的兼容性依据保留在本 PR,不新增公开测试说明或人工审核文件。 **问题来源与未重复承接的修改** 历史 [Harness 报告](https://cann.cannbot.cn/harnessmcp-tests/evaluation/validation/upload-20260929065618-addrmsnormquant-9531ed8a)对应源码 edf0a8d4644de6d817b818c6181aa3397f26d554,不能把历史结论直接套用当前主线。文档修改主要回应 DOC.04/DOC.05/DOC.08、GEIR.04 及测试设计门禁;dtype 舍入说明来自进一步核对实现/golden。已区分“原有行为遗漏说明”和“本次修复后才落实的行为”,没有以补文档替代代码修复。 旧 [PR #9263](https://gitcode.com/cann/ops-nn/merge_requests/9263)只承接必要的 V2 输出语义和 950 xOut 判空;[主线 #10098](https://gitcode.com/cann/ops-nn/merge_requests/10098)已有的 dtype 修复不重复搬入。旧 PR 的20条 shape 用例原字节已存在于 MyTestCase,纳入回归而不重复新增。当前主线已有 HAS_SCALE2 保护,V2 独立入口已有2000系列48个分派键,均不重复修改。曾拟新增的非 RegBase V1 INT8 收紧校验已撤回,norm/add_rms_norm_quant/op_host/op_api/aclnn_add_rms_norm_quant.cpp 与受测 master 完全一致,不在本 PR 变更清单内。 **共用代码修改与非 regbase 产品兼容性(人工审核重点)** - V2 L0 调用方一直按 xOut, resOut 传参。本 PR 只修正同类型指针的形参名称,并统一使用 bool outputRes = (resOut != nullptr);;参数类型/位置、ABI、内部 Tensor 分配、launcher 输出与返回顺序保持原结构。 | L0 输出请求 | 修改前 output_res(按 xOut) | 修改后 output_res(按 resOut) | |---|---:|---:| | xOut 有,resOut 无 | true | false | | xOut 有,resOut 有 | true | true | | xOut 无,resOut 有 | false | true | | xOut 无,resOut 无 | false | false | - 非 RegBase 的属性取值可能变化,但其 InferShape 不读取 output_res,tiling 与 Kernel 按 mode/tilingKey 决定输出,910B/910_93/310P binary 配置对该属性不限定取值。三平台共 216 对 Host 执行元数据比较一致,现有合法 res-only 合同通过 Host UT;这些是模拟/构建证据,不是其他产品硬件验收。 - 表格说明 L0 属性映射,不代表 ACLNN 接受所有组合。新增 xOut 判空仅在 GetCurNpuArch() == NpuArch::DAV_3510 内(含950/350),其他架构合法的 betaOptional == nullptr、xOut == nullptr、resOut != nullptr 调用继续保留。V1 ACLNN 实现未新增非 RegBase INT8 限制。 - V1/V2 新增空输入早退及 Host 空输入修复仍限定3510(950/350),本轮不改。QuantDiv 不再设置额外架构条件;950/350/960原有启用路径保持,5102预留入口由Div改用QuantDiv,未取得该平台验证。910B/910_93/310P使用各自既有内核入口,本轮两个arch35头文件未修改其独立实现。960 V1已有注册,V2未注册960。共用示例的RAII影响资源退出路径,不进入算子动态库;950实测不能外推为其他产品硬件保证。 人工仍需确认上述共用 L0 属性语义、Host 隔离、入口架构边界与示例资源释放路径;本次冲突处理及验证不代替这项审核。详细修改原因与受测范围见下方逐文件说明及测试记录。 **逐文件说明:原问题、修改原因、改法、影响和当前情况(19/19)** **01. [norm/add_rms_norm_quant/README.md](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/README.md)(文档补充)** - **原本问题:**原文已把 beta 列为可选输入,但没有说明它属于图接口、V1 ACLNN 无此入参,也遗漏 beta 的 shape/dtype 关系;约束说明没有区分图模式与 ACLNN 的 rank、动态标记、布局和无效 y2 语义。公式统一写 round,容易把浮点量化理解成先取整数。 - **修改原因:**回应 Harness DOC.04、DOC.05、GEIR.04 及测试设计 K-1/K-4/K-5/K-6、aclnn-f2;round 的说明来自进一步核对 FP8/HIFLOAT8 实现与 golden,并非报告逐字要求。 - **怎么修改:**补充 beta 的接口范围与 shape/dtype,区分 GE 未知维/未知 rank 与 ACLNN 具体 shape、图模式连续 ND 与 ACLNN 连续化/视图回写;说明第二路启用条件、scale2 缺省为 1、无效 y2、gamma 完整尾轴归约及错误报告方式。保留 round 名称和公式,在两组公式后、参数说明前仅保留一句“round 表示按输出数据类型进行舍入及饱和处理。”;空 Tensor 说明与本次修复对应。 - **影响范围:**只改变公开说明,不新增 beta 能力、不改变 dtype 或非 950 的入口校验。既有行为的补充与本次代码修复后才落实的空输入支持须分开理解。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):已对照注册、ACLNN、arch35 tiling 和量化实现并通过链接检查;文案仍有待完善处:beta 的“图模式可选”应前置、按 950 核对的图侧说明应明确产品范围、“量化参数须满足参数说明中的 shape 关系”的引用未写全。当前提交尚未修订这些措辞,不把文档审核标为完成。 **02. [norm/add_rms_norm_quant/docs/aclnnAddRmsNormQuant.md](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/docs/aclnnAddRmsNormQuant.md)(接口文档及共用示例)** - **原本问题:**161002 说明漏掉 rank/维长非法;未明确动态标记、单路 y2Out、视图和空输入处理。内嵌示例中途失败漏清理;追加实测发现,一阶段成功后 workspace 申请失败还会遗留未提交 executor。 - **修改原因:**回应 DOC.04、DOC.05、DOC.08、GEIR.04、DEMO.04,并使文档示例与独立 examples 文件保持一致。 - **怎么修改:**补充具体 shape、连续化/回写、单路 y2、空输入和 950 gamma 尾轴等说明;内嵌示例与独立文件保持相同代码,使用 AclResources 登记资源并在析构前同步。executor 初始化为 nullptr,一阶段成功后登记,二阶段调用前移交;workspace 失败时销毁尚未提交 executor,避免二阶段后再次销毁。 - **影响范围:**文档本身不修改 ACLNN ABI、参数校验或数值计算。示例清理方式适用于共用示例使用者,可能影响失败退出时的同步与释放路径,需人工审核;文档中的 shape 合同也不等于入口逐项都进行了跨 Tensor shape 校验。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):从 Markdown 提取完整 main,核对与独立示例一致后分别进行 C++11 编译、链接和 950 实际运行;4 项正常输出检查与 11 项故障注入检查全部通过。正常输出逐元素对比仓内 V1 TestSpec golden。未做其他产品上板或设备异步故障验收;接口/产品文案仍待人工核对。 **03. [norm/add_rms_norm_quant/examples/test_aclnn_add_rms_norm_quant.cpp](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/examples/test_aclnn_add_rms_norm_quant.cpp)(共用示例修复,需人工审核)** - **原本问题:**Tensor、设备内存、workspace 和 stream 集中在 main 尾部释放,CHECK_RET 提前返回漏清理,aclCreateTensor 失败也未及时检查。后续故障注入进一步复现:workspace 申请失败时,旧示例遗留 1 个未提交 executor。 - **修改原因:**修复 Harness DEMO.04 指出的示例异常路径资源泄漏。 - **怎么修改:**增加禁止复制的 AclResources,成功分配即登记,析构先同步,再销毁尚未提交 executor、逆序销毁 Tensor/释放内存,最后销毁 stream、复位设备并 finalize。executor 初始化为 nullptr,一阶段成功后持有,二阶段调用前清空所有权;默认不可重复 executor 由二阶段消费,包括二阶段返回错误。 - **影响范围:**仅改变共用示例资源生命周期,不进入算子动态库、不改参数校验或数值算法;同步与异常清理也影响其他产品使用此示例的退出路径,须人工审核。未提交 executor 的显式销毁依据当前 CANN 实现核对和实测,公开文档主要与可重复执行接口配套说明,不能外推为其他 CANN 版本保证。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):实际 C++11 编译和 950 运行通过。TTK 15/15:独立/文档示例各有原样执行与资源计数执行,共 4 项数值检查;另 11 项覆盖分配、Tensor 创建、H2D/D2H 拷贝、一/二阶段及同步返回错误。workspace 失败由遗漏 1 个 executor 变为销毁 1 个、存活 0;正常路径移交 1 个、显式销毁 0,无重复释放。同步错误在真实同步后注入,未测试设备挂死或其他产品硬件。 **04. [norm/add_rms_norm_quant/op_host/add_rms_norm_quant_tiling_arch35.cpp](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/op_host/add_rms_norm_quant_tiling_arch35.cpp)(950/RegBase 功能修复,V1/V2 共用)** - **原本问题:**numM=0 可形成零核、零分块调度;numN=0 被直接拒绝,图模式无法落实合法空 Tensor 合同。 - **修改原因:**修复 Harness CODE.04/AK-2 的空输入问题,避免零除与非法 launch。 - **怎么修改:**新增 IsArch3510;DAV_3510(950/350)的 numN=0 不作非法形状拒绝,avgFactor 取0,numM/numN为0时设置单核和合法占位分块、保留真实零维并序列化。设备早退由配套入口完成。其他架构原校验及正常非空路径保留,本轮删QuantDiv条件不改该文件。 - **影响范围:**共用文件新增空输入行为限定DAV_3510,实际覆盖950/350,不能称为仅950;960及其他架构不继承。350合同与兼容性需人工审核,没有350硬件验证。 - **当前情况:**历史950空输入有运行证据;当前提交950/A2定向package和Host/API UT通过。本轮未重跑空输入硬件回归。旧宏分支断言不证明350被排除;350产品兼容性仍需人工审核,完整空输入输出契约另项处理。 **05. [norm/add_rms_norm_quant/op_host/config/ascend950/add_rms_norm_quant_binary.json](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/op_host/config/ascend950/add_rms_norm_quant_binary.json)(950 配置格式整理)** - **原本问题:**原文件 1545077 字节,超过静态检查文件体积阈值;逐层缩进造成巨大 diff/体积,但配置项本身无需删除。 - **修改原因:**处理 DEMO.05 的体积问题,同时保留完整 binary 配置。 - **怎么修改:**对配置条目对象的键作规范排序并紧凑序列化,保留构建解析所需顶层字段顺序和 binFileName 换行;压缩到 511922 字节。数组顺序保持不变。 - **影响范围:**解析后的 JSON 深度等价,416 组配置、binary 和 tiling key 数量均未减少;只整理 950 V1 配置。大量删除行来自格式压缩,不能解读为删除实现。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):JSON 深度等价、数组顺序、416 条配置及体积检查通过,完整 package 构建/匹配验证通过。对象键顺序不具有配置语义。 **06. [norm/add_rms_norm_quant/op_host/op_api/add_rms_norm_quant.cpp](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/op_host/op_api/add_rms_norm_quant.cpp)(共用 L0 修复,需人工审核)** - **原本问题:**V2 调用者一直按 xOut、resOut 传参,L0 却命名为 resOut、xOut,导致 output_res 实际取到 xOut 是否存在;950 不请求 rmsNormOut 时也误开归一化输出。 - **修改原因:**修复 V2 输出形参语义,按归一化输出的实际请求设置属性;用户审查后要求简化平台条件,并验证旧平台由 mode/tilingKey 控制输出的兼容性。 - **怎么修改:**两个同类型形参名称修正为 xOut、resOut;outputRes 统一写为 (resOut != nullptr),删除先前仅为保留非 RegBase 历史属性值而增加的三元分支及失效注释。相对此前 PR,只有这一行逻辑变化;共用影响在本 PR 描述中说明。 - **影响范围:**RegBase 的属性取值与此前 PR 相同。非 RegBase 属性值可能改变,但其 InferShape、tiling 和 Kernel 按 mode/tilingKey 控制输出,binary 配置对该属性不限定取值;未改变参数类型/位置、ABI、Tensor 分配、launcher 输出顺序、返回顺序或 xOut 校验。未修改其他产品独立实现。共用属性简化仍需人工审核。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):历史该轮双平台本地CI通过;旧平台216对属性切换的tiling/key/blockDim/workspace/simplifiedKey完全一致,合法res-only合同UT通过。950正式新包64条合法输出PASS、8条缺xOut预期161001拒绝、2条实际tilingKey为1002/2002。非950仅Host模拟/构建,未硬件验收;共用修改待人工审核。 **07. [norm/add_rms_norm_quant/op_host/op_api/add_rms_norm_quant.h](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/op_host/op_api/add_rms_norm_quant.h)(共用 L0 声明修正,需人工审核)** - **原本问题:**V2 L0 声明的两个输出形参名字与调用者语义相反,易导致维护者继续用错 output_res 的判断对象。 - **修改原因:**与对应 .cpp 的输出语义修复保持一致。 - **怎么修改:**声明中形参名称由 resOut、xOut 改为 xOut、resOut,并同步版权年份;未改变两个 aclTensor* 的类型或位置。 - **影响范围:**不修改公开 ACLNN 签名或二进制 ABI;属于共用声明,需与 L0 实现一起审核产品兼容性。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):声明类型/ABI 不变断言、两平台构建及 API UT 通过;人工审核未完成。 **08. [norm/add_rms_norm_quant/op_kernel/add_rms_norm_quant_apt.cpp](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/op_kernel/add_rms_norm_quant_apt.cpp)(共用入口内的 RegBase 空输入修复,需人工审核)** - **原本问题:**空输入即使产生可启动 tiling,入口仍可能进入 buffer 初始化及计算路径。 - **修改原因:**与 arch35 空 tiling 修复配套,确保合法空输入不会访问输入输出元素。 - **怎么修改:**在既有架构分支读取 tiling 后,以 __NPU_ARCH__ == 3510 再限定 numM/numN 零值早退,位置在具体 kernel 分派、op.Init/Process 前。保留主线新增960及其余架构分派。 - **影响范围:**新增早退对3510(950/350)生效,其他架构及非空计算沿用master;本轮未改该入口。350无硬件验证,共用范围需人工审核。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):950 空输入及完整回归通过,新增代码位于原架构条件内的边界断言通过;该文件是共用入口,仍需人工核对隔离。 **09. [norm/add_rms_norm_quant/op_kernel/arch35/add_rms_norm_quant_regbase_common.h](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe2 See merge request: cann/ops-nn!11665 | 3 天前 | |
fix(add_rms_norm_quant): 加固950空输入与输出契约并修复950/960量化除法 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !11665 merge fix/add-rms-norm-quant-spec-regression into master fix(add_rms_norm_quant): 加固950空输入与输出契约并修复950/960量化除法 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修复 AddRmsNormQuant V1/V2 在 Ascend 950 的合法空输入调度、次正规数除法量化及 V2 输出指针语义问题,补齐每版一个 TestSpec golden、接口说明、输出专项和示例资源管理。本次处理主线新增 Ascend 960 共用实现产生的冲突,并将 QuantDiv 修复覆盖到 960 对应的除法路径。 **审查范围与当前版本** - 当前提交 5487fe234a9d94db57907d8d391b1006e7c71b15,比较基点为本轮从官方主仓获取的 master e03cebe43e8e134b5bde943edb77f70676109d40,PR 相对该基点只有一个提交,共 **19 个文件**。原分支已为单提交,保存备份并校验完整 binary diff/Git tree 后 rebase;本轮 master 未前进,rebase 未改变补丁。 - 本轮按审查意见简化 QuantDiv:相对上一版 f869a910244b9784935e3494684650ffd56f5dab,仅两个 arch35 头文件删除 18 行条件编译/Div 回退代码。QuantDiv 定义及六个调用位置统一使用同一实现,不再判断 3510/9201/9202。函数算法、divMode 的乘除选择以及主线原有的 960 MulDstAdd/Axpy 优化条件不变。 - **产品范围更正:DAV_3510 并非只对应 950,也包括 350。** 仓内 cmake/soc_arch_variables.cmake 将 ascend950、ascend350 都映射到 dav_3510;V1/V2 均已有 ascend350 注册。因此上一版 QuantDiv 和 3510 空输入/xOut 条件已经覆盖同架构的350,并非本次删条件才扩展到350;此前“只对950”“排除其他产品”的表述不够准确,本段及逐文件说明予以更正,未取得350硬件验证。 - 960dt/pr 分别映射 9201/9202;V1 已注册 ascend960dt,V2 尚未注册960,本 PR 不新增产品注册。5102 对应 MC62,不是350;V1 apt 源码保留该入口,但当前这两个算子没有 MC62 产品注册。删条件使该预留源码入口也使用 QuantDiv;此共用代码影响明确提交人工审核,尚无5102编译/运行验证。不宣称新增MC62支持。 - 空输入 tiling、两个 kernel 入口早退和 V2 xOut 判空仍限定 DAV_3510(950/350),本轮未修改这些条件;960不自动继承。共用 L0 仍统一由实际 resOut 指针控制 output_res。 - **按用户要求先更新 PR,再验证;本轮删条件提交的6项预处理一致性检查、2项5102预留路径差异检查及950/A2定向本地CI均通过,结果见测试节。** 960模型因缺配套模型已按用户决定停止,未取得960数值结果;本轮不继续尝试960仿真。 - rank 0 的 scales2/zero_points2 被共用 InferShape 误判缺省属于已复现基线问题,本 PR 未修复;空进空出/空进非空出完整契约继续另项处理。共用修改的兼容性依据保留在本 PR,不新增公开测试说明或人工审核文件。 **问题来源与未重复承接的修改** 历史 [Harness 报告](https://cann.cannbot.cn/harnessmcp-tests/evaluation/validation/upload-20260929065618-addrmsnormquant-9531ed8a)对应源码 edf0a8d4644de6d817b818c6181aa3397f26d554,不能把历史结论直接套用当前主线。文档修改主要回应 DOC.04/DOC.05/DOC.08、GEIR.04 及测试设计门禁;dtype 舍入说明来自进一步核对实现/golden。已区分“原有行为遗漏说明”和“本次修复后才落实的行为”,没有以补文档替代代码修复。 旧 [PR #9263](https://gitcode.com/cann/ops-nn/merge_requests/9263)只承接必要的 V2 输出语义和 950 xOut 判空;[主线 #10098](https://gitcode.com/cann/ops-nn/merge_requests/10098)已有的 dtype 修复不重复搬入。旧 PR 的20条 shape 用例原字节已存在于 MyTestCase,纳入回归而不重复新增。当前主线已有 HAS_SCALE2 保护,V2 独立入口已有2000系列48个分派键,均不重复修改。曾拟新增的非 RegBase V1 INT8 收紧校验已撤回,norm/add_rms_norm_quant/op_host/op_api/aclnn_add_rms_norm_quant.cpp 与受测 master 完全一致,不在本 PR 变更清单内。 **共用代码修改与非 regbase 产品兼容性(人工审核重点)** - V2 L0 调用方一直按 xOut, resOut 传参。本 PR 只修正同类型指针的形参名称,并统一使用 bool outputRes = (resOut != nullptr);;参数类型/位置、ABI、内部 Tensor 分配、launcher 输出与返回顺序保持原结构。 | L0 输出请求 | 修改前 output_res(按 xOut) | 修改后 output_res(按 resOut) | |---|---:|---:| | xOut 有,resOut 无 | true | false | | xOut 有,resOut 有 | true | true | | xOut 无,resOut 有 | false | true | | xOut 无,resOut 无 | false | false | - 非 RegBase 的属性取值可能变化,但其 InferShape 不读取 output_res,tiling 与 Kernel 按 mode/tilingKey 决定输出,910B/910_93/310P binary 配置对该属性不限定取值。三平台共 216 对 Host 执行元数据比较一致,现有合法 res-only 合同通过 Host UT;这些是模拟/构建证据,不是其他产品硬件验收。 - 表格说明 L0 属性映射,不代表 ACLNN 接受所有组合。新增 xOut 判空仅在 GetCurNpuArch() == NpuArch::DAV_3510 内(含950/350),其他架构合法的 betaOptional == nullptr、xOut == nullptr、resOut != nullptr 调用继续保留。V1 ACLNN 实现未新增非 RegBase INT8 限制。 - V1/V2 新增空输入早退及 Host 空输入修复仍限定3510(950/350),本轮不改。QuantDiv 不再设置额外架构条件;950/350/960原有启用路径保持,5102预留入口由Div改用QuantDiv,未取得该平台验证。910B/910_93/310P使用各自既有内核入口,本轮两个arch35头文件未修改其独立实现。960 V1已有注册,V2未注册960。共用示例的RAII影响资源退出路径,不进入算子动态库;950实测不能外推为其他产品硬件保证。 人工仍需确认上述共用 L0 属性语义、Host 隔离、入口架构边界与示例资源释放路径;本次冲突处理及验证不代替这项审核。详细修改原因与受测范围见下方逐文件说明及测试记录。 **逐文件说明:原问题、修改原因、改法、影响和当前情况(19/19)** **01. [norm/add_rms_norm_quant/README.md](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/README.md)(文档补充)** - **原本问题:**原文已把 beta 列为可选输入,但没有说明它属于图接口、V1 ACLNN 无此入参,也遗漏 beta 的 shape/dtype 关系;约束说明没有区分图模式与 ACLNN 的 rank、动态标记、布局和无效 y2 语义。公式统一写 round,容易把浮点量化理解成先取整数。 - **修改原因:**回应 Harness DOC.04、DOC.05、GEIR.04 及测试设计 K-1/K-4/K-5/K-6、aclnn-f2;round 的说明来自进一步核对 FP8/HIFLOAT8 实现与 golden,并非报告逐字要求。 - **怎么修改:**补充 beta 的接口范围与 shape/dtype,区分 GE 未知维/未知 rank 与 ACLNN 具体 shape、图模式连续 ND 与 ACLNN 连续化/视图回写;说明第二路启用条件、scale2 缺省为 1、无效 y2、gamma 完整尾轴归约及错误报告方式。保留 round 名称和公式,在两组公式后、参数说明前仅保留一句“round 表示按输出数据类型进行舍入及饱和处理。”;空 Tensor 说明与本次修复对应。 - **影响范围:**只改变公开说明,不新增 beta 能力、不改变 dtype 或非 950 的入口校验。既有行为的补充与本次代码修复后才落实的空输入支持须分开理解。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):已对照注册、ACLNN、arch35 tiling 和量化实现并通过链接检查;文案仍有待完善处:beta 的“图模式可选”应前置、按 950 核对的图侧说明应明确产品范围、“量化参数须满足参数说明中的 shape 关系”的引用未写全。当前提交尚未修订这些措辞,不把文档审核标为完成。 **02. [norm/add_rms_norm_quant/docs/aclnnAddRmsNormQuant.md](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/docs/aclnnAddRmsNormQuant.md)(接口文档及共用示例)** - **原本问题:**161002 说明漏掉 rank/维长非法;未明确动态标记、单路 y2Out、视图和空输入处理。内嵌示例中途失败漏清理;追加实测发现,一阶段成功后 workspace 申请失败还会遗留未提交 executor。 - **修改原因:**回应 DOC.04、DOC.05、DOC.08、GEIR.04、DEMO.04,并使文档示例与独立 examples 文件保持一致。 - **怎么修改:**补充具体 shape、连续化/回写、单路 y2、空输入和 950 gamma 尾轴等说明;内嵌示例与独立文件保持相同代码,使用 AclResources 登记资源并在析构前同步。executor 初始化为 nullptr,一阶段成功后登记,二阶段调用前移交;workspace 失败时销毁尚未提交 executor,避免二阶段后再次销毁。 - **影响范围:**文档本身不修改 ACLNN ABI、参数校验或数值计算。示例清理方式适用于共用示例使用者,可能影响失败退出时的同步与释放路径,需人工审核;文档中的 shape 合同也不等于入口逐项都进行了跨 Tensor shape 校验。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):从 Markdown 提取完整 main,核对与独立示例一致后分别进行 C++11 编译、链接和 950 实际运行;4 项正常输出检查与 11 项故障注入检查全部通过。正常输出逐元素对比仓内 V1 TestSpec golden。未做其他产品上板或设备异步故障验收;接口/产品文案仍待人工核对。 **03. [norm/add_rms_norm_quant/examples/test_aclnn_add_rms_norm_quant.cpp](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/examples/test_aclnn_add_rms_norm_quant.cpp)(共用示例修复,需人工审核)** - **原本问题:**Tensor、设备内存、workspace 和 stream 集中在 main 尾部释放,CHECK_RET 提前返回漏清理,aclCreateTensor 失败也未及时检查。后续故障注入进一步复现:workspace 申请失败时,旧示例遗留 1 个未提交 executor。 - **修改原因:**修复 Harness DEMO.04 指出的示例异常路径资源泄漏。 - **怎么修改:**增加禁止复制的 AclResources,成功分配即登记,析构先同步,再销毁尚未提交 executor、逆序销毁 Tensor/释放内存,最后销毁 stream、复位设备并 finalize。executor 初始化为 nullptr,一阶段成功后持有,二阶段调用前清空所有权;默认不可重复 executor 由二阶段消费,包括二阶段返回错误。 - **影响范围:**仅改变共用示例资源生命周期,不进入算子动态库、不改参数校验或数值算法;同步与异常清理也影响其他产品使用此示例的退出路径,须人工审核。未提交 executor 的显式销毁依据当前 CANN 实现核对和实测,公开文档主要与可重复执行接口配套说明,不能外推为其他 CANN 版本保证。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):实际 C++11 编译和 950 运行通过。TTK 15/15:独立/文档示例各有原样执行与资源计数执行,共 4 项数值检查;另 11 项覆盖分配、Tensor 创建、H2D/D2H 拷贝、一/二阶段及同步返回错误。workspace 失败由遗漏 1 个 executor 变为销毁 1 个、存活 0;正常路径移交 1 个、显式销毁 0,无重复释放。同步错误在真实同步后注入,未测试设备挂死或其他产品硬件。 **04. [norm/add_rms_norm_quant/op_host/add_rms_norm_quant_tiling_arch35.cpp](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/op_host/add_rms_norm_quant_tiling_arch35.cpp)(950/RegBase 功能修复,V1/V2 共用)** - **原本问题:**numM=0 可形成零核、零分块调度;numN=0 被直接拒绝,图模式无法落实合法空 Tensor 合同。 - **修改原因:**修复 Harness CODE.04/AK-2 的空输入问题,避免零除与非法 launch。 - **怎么修改:**新增 IsArch3510;DAV_3510(950/350)的 numN=0 不作非法形状拒绝,avgFactor 取0,numM/numN为0时设置单核和合法占位分块、保留真实零维并序列化。设备早退由配套入口完成。其他架构原校验及正常非空路径保留,本轮删QuantDiv条件不改该文件。 - **影响范围:**共用文件新增空输入行为限定DAV_3510,实际覆盖950/350,不能称为仅950;960及其他架构不继承。350合同与兼容性需人工审核,没有350硬件验证。 - **当前情况:**历史950空输入有运行证据;当前提交950/A2定向package和Host/API UT通过。本轮未重跑空输入硬件回归。旧宏分支断言不证明350被排除;350产品兼容性仍需人工审核,完整空输入输出契约另项处理。 **05. [norm/add_rms_norm_quant/op_host/config/ascend950/add_rms_norm_quant_binary.json](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/op_host/config/ascend950/add_rms_norm_quant_binary.json)(950 配置格式整理)** - **原本问题:**原文件 1545077 字节,超过静态检查文件体积阈值;逐层缩进造成巨大 diff/体积,但配置项本身无需删除。 - **修改原因:**处理 DEMO.05 的体积问题,同时保留完整 binary 配置。 - **怎么修改:**对配置条目对象的键作规范排序并紧凑序列化,保留构建解析所需顶层字段顺序和 binFileName 换行;压缩到 511922 字节。数组顺序保持不变。 - **影响范围:**解析后的 JSON 深度等价,416 组配置、binary 和 tiling key 数量均未减少;只整理 950 V1 配置。大量删除行来自格式压缩,不能解读为删除实现。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):JSON 深度等价、数组顺序、416 条配置及体积检查通过,完整 package 构建/匹配验证通过。对象键顺序不具有配置语义。 **06. [norm/add_rms_norm_quant/op_host/op_api/add_rms_norm_quant.cpp](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/op_host/op_api/add_rms_norm_quant.cpp)(共用 L0 修复,需人工审核)** - **原本问题:**V2 调用者一直按 xOut、resOut 传参,L0 却命名为 resOut、xOut,导致 output_res 实际取到 xOut 是否存在;950 不请求 rmsNormOut 时也误开归一化输出。 - **修改原因:**修复 V2 输出形参语义,按归一化输出的实际请求设置属性;用户审查后要求简化平台条件,并验证旧平台由 mode/tilingKey 控制输出的兼容性。 - **怎么修改:**两个同类型形参名称修正为 xOut、resOut;outputRes 统一写为 (resOut != nullptr),删除先前仅为保留非 RegBase 历史属性值而增加的三元分支及失效注释。相对此前 PR,只有这一行逻辑变化;共用影响在本 PR 描述中说明。 - **影响范围:**RegBase 的属性取值与此前 PR 相同。非 RegBase 属性值可能改变,但其 InferShape、tiling 和 Kernel 按 mode/tilingKey 控制输出,binary 配置对该属性不限定取值;未改变参数类型/位置、ABI、Tensor 分配、launcher 输出顺序、返回顺序或 xOut 校验。未修改其他产品独立实现。共用属性简化仍需人工审核。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):历史该轮双平台本地CI通过;旧平台216对属性切换的tiling/key/blockDim/workspace/simplifiedKey完全一致,合法res-only合同UT通过。950正式新包64条合法输出PASS、8条缺xOut预期161001拒绝、2条实际tilingKey为1002/2002。非950仅Host模拟/构建,未硬件验收;共用修改待人工审核。 **07. [norm/add_rms_norm_quant/op_host/op_api/add_rms_norm_quant.h](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/op_host/op_api/add_rms_norm_quant.h)(共用 L0 声明修正,需人工审核)** - **原本问题:**V2 L0 声明的两个输出形参名字与调用者语义相反,易导致维护者继续用错 output_res 的判断对象。 - **修改原因:**与对应 .cpp 的输出语义修复保持一致。 - **怎么修改:**声明中形参名称由 resOut、xOut 改为 xOut、resOut,并同步版权年份;未改变两个 aclTensor* 的类型或位置。 - **影响范围:**不修改公开 ACLNN 签名或二进制 ABI;属于共用声明,需与 L0 实现一起审核产品兼容性。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):声明类型/ABI 不变断言、两平台构建及 API UT 通过;人工审核未完成。 **08. [norm/add_rms_norm_quant/op_kernel/add_rms_norm_quant_apt.cpp](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe234a9d94db57907d8d391b1006e7c71b15/norm/add_rms_norm_quant/op_kernel/add_rms_norm_quant_apt.cpp)(共用入口内的 RegBase 空输入修复,需人工审核)** - **原本问题:**空输入即使产生可启动 tiling,入口仍可能进入 buffer 初始化及计算路径。 - **修改原因:**与 arch35 空 tiling 修复配套,确保合法空输入不会访问输入输出元素。 - **怎么修改:**在既有架构分支读取 tiling 后,以 __NPU_ARCH__ == 3510 再限定 numM/numN 零值早退,位置在具体 kernel 分派、op.Init/Process 前。保留主线新增960及其余架构分派。 - **影响范围:**新增早退对3510(950/350)生效,其他架构及非空计算沿用master;本轮未改该入口。350无硬件验证,共用范围需人工审核。 - **当前情况:**历史验证记录(受测 SHA 见测试节,不代表当前提交重跑):950 空输入及完整回归通过,新增代码位于原架构条件内的边界断言通过;该文件是共用入口,仍需人工核对隔离。 **09. [norm/add_rms_norm_quant/op_kernel/arch35/add_rms_norm_quant_regbase_common.h](https://gitcode.com/raoliang_sac/ops-nn/blob/5487fe2 See merge request: cann/ops-nn!11665 | 3 天前 | |
feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11972 merge feat/hi-f4-quant-ascend960dt into master feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增 hi_f4 量化算子,并同步若干算子的 Ascend960 平台支持(含公共件配套)。 - **新增算子**:rms_norm_hi_f4_quant / add_rms_norm_hi_f4_quant,Ascend960 专属(kernel 与 tiling 位于 arch92 目录),ReciprocalCast 接口适配,aclnn 接口位于算子根 op_api/ 目录(仓规范布局) - **数据类型兼容层**:算子内数据类型引用统一切换 Ops::NN:: 常量(复用 master 先行合入的 op_const_def_nn.h 兼容层,见 !11999),各版本 CANN 均可编译 - **batch_norm / batch_norm_v3**:tiling 核间均衡 + kernel block_split_r 优化 - **add_rms_norm_dynamic_quant_v2**:目标平台注册 + config - **lp_norm_v2**:tiling 平台管理器初始化补充 - **公共件配套**:ascendc_impl_build.py DTYPE_MAP 补 hifloat4 映射 - **工程配置**:ascendc_config 注册 ## 测试 已在 Ascend960 环境完成编译与功能验证;低版本 CANN(metadef 9.2.0)语法验证通过;A5 不受影响。 ## 类型标签 - [x] Feature 关联 Issue: #6687 See merge request: cann/ops-nn!11972 | 3 天前 | |
fix: 修复 10 算子 TTK golden 参考实现的输出 dtype 与 fp64 精度处理缺陷 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !11042 merge goldenMod into master fix: 修复 10 算子 TTK golden 参考实现的输出 dtype 与 fp64 精度处理缺陷 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 本 MR 修正 loss / norm / optim / quant 共 10 个算子的 TTK golden 参考实现( <算子>/tests/assets/golden.py),使 golden 严格按用例声明的输出 dtype(output_dtypes)生成真值,并在 TTK Promote 提供 fp64 时保留 fp64 计算精度。仅修改测试参考实现(纯 Python,numpy/torch 计算),不涉及 kernel / op_host 代码。 ### 改动原因 1. **忽略用例声明的输出 dtype(output_dtypes)**:次级输出被硬编码为 float32,不看声明。典型如 norm/deep_norm/tests/assets/golden.py:旧实现 _compute_deep_norm 直接将 mean/rstd 强制 .to(torch.float32),deep_norm_golden 只从 output_dtypes[2] 取 y 的 dtype,output_dtypes[0]/[1](mean/rstd 声明)被忽略;norm/batch_norm3_d、norm/batch_norm3_d_grad、norm/batch_norm_grad_ext2 的 batch_mean/saved_var/saved_rstd/dscale/doffset、optim/apply_adam_w_quant 的 absmax_m/absmax_v、quant/dynamic_quant_update_scatter(_v2) 的 scale/offset 同样被强制 float32。 2. **把 TTK Promote 的 fp64 精度截回 fp32**:golden 内部一律经 astype(np.float32) / .to(torch.float32)(_to_f32 / _to_torch_float32 / _to_numpy_float32 及一系列 dtype=np.float32 的归约助手),TTK Promote 送入的 fp64 输入被降为 fp32,cross_check 真值被截回 fp32(修复后代码注释对应 "retaining fp64 (TTK Promote) so the true value is not cut back to fp32")。 ### 改动方法 - **统一计算 dtype 入口**:_to_f32 → _to_compute(apply_adam_w_quant / apply_came_part4)、_to_torch_float32/_to_numpy_float32 → _to_torch_compute/_to_numpy_compute(deep_norm_grad)、_to_torch(x, dtype=float32) 改为保持输入自身 dtype(dynamic_quant_update_scatter)。语义:fp64 原样保留,fp16/bf16 提升到 fp32。 - **归约/累加助手改为输入 dtype 驱动**:batch_norm3_d_grad / batch_norm_grad_ext2 的 _sum_fp32、_sum_seq_fp32、_binary_fold_sum、_ra_split_r_channel_sum、_sum_pairwise_fp32、_chunk32_pair_channel_sum、_chunk_channel_sum、_ascend_like_channel_sum 由 np.float32 改为 x.dtype;deep_norm_grad 的 _reduce_sum_vl、_reduce_sum_regbase(_1d)、_reduce_sum_rows、_reduce_sum_rows_fp64 改为 values.dtype 驱动;新增 _compute_dtype() 判定(fp64 输入 → 全程 fp64,否则 fp32)。 - **按声明输出 dtype 生成输出**:新增 _output_dtype(kwargs, index, default) 从 TTK 传入的 output_dtypes 取声明 dtype(缺省 float32)。应用于 mean/rstd(deep_norm、deep_norm_grad)、batch_mean/saved_var/saved_rstd(batch_norm3_d)、dscale/doffset(batch_norm3_d_grad、batch_norm_grad_ext2)、dbeta/dgamma(deep_norm_grad)、absmax_m/absmax_v(apply_adam_w_quant,改为保持计算 dtype)、scale(dynamic_quant_update_scatter,改用 var_scale 实际 dtype)、out_scale/out_offset(_v2,保持原 dtype,去掉 np.float32 强制转换)。 - **常量与超参对齐计算 dtype**:apply_adam_w_quant 的 one/lr/beta1/beta2/weight_decay/eps/gnorm_scale、dynamic_quant_update_scatter 的 QUANT_MAX、_v2 的 INT4_SCALE_RANGE/INT4_QUANT_MAX/QUANT_EPSILON、batch_norm*_grad 的 reduce_count/epsilon 标量等改用 compute dtype。 - **cosine_embedding_loss**:计算 dtype 用 torch.promote_types(torch.float32, a.dtype) 并再与声明输出 dtype 提升;整数输入经 _to_compute_tensor 提升到计算 dtype;归约不再强制 dtype=torch.float32;reduction 结果按 out_dtype 输出。 - **batch_norm3_d**:__spec__ / __golden__ 增加算子名别名 batch_norm3_d(原仅注册 batch_norm3d)。 - **apply_came_part4**:_dtype_of 支持 float64;customize_inputs 增加 **kwargs 并使返回顺序与函数签名一致(sum_r 移至 sum_u_rc 之后);移除 __input__ 注册。 - **dynamic_quant_update_scatter / _v2**:_compute_dtype 由输入与声明输出 dtype 联合提升;量化写回不再经 np.float32 截断。 | # | 算子 | 文件 | +/− | |---|------|------|-----| | 1 | loss/cosine_embedding_loss | tests/assets/golden.py | +54/−18 | | 2 | norm/batch_norm3_d | tests/assets/golden.py | +36/−6 | | 3 | norm/batch_norm3_d_grad | tests/assets/golden.py | +53/−29 | | 4 | norm/batch_norm_grad_ext2 | tests/assets/golden.py | +53/−29 | | 5 | norm/deep_norm | tests/assets/golden.py | +7/−3 | | 6 | norm/deep_norm_grad | tests/assets/golden.py | +82/−55 | | 7 | optim/apply_adam_w_quant | tests/assets/golden.py | +45/−19 | | 8 | optim/apply_came_part4 | tests/assets/golden.py | +29/−21 | | 9 | quant/dynamic_quant_update_scatter | tests/assets/golden.py | +41/−10 | | 10 | quant/dynamic_quant_update_scatter_v2 | tests/assets/golden.py | +30/−13 | | | **合计** | **10 个文件** | **+430/−203** | ## 关联的Issue - #6449 ## 测试 本 MR 仅修改 TTK golden 参考实现(纯 Python,numpy/torch 计算,无 kernel / op_host 代码变更),建议按仓库 TTK ST 流程验证(需 Linux + CANN + Ascend 环境): bash cd /path/to/ops-test-kit REPO=/path/to/ops-nn # 仓内已提供用例的 3 个算子 python3 -m ttk kernel -i "$REPO/norm/deep_norm/tests/st/arch35/ttk_kernel_deep_norm_generalization.csv" \ --plugin "$REPO/norm/deep_norm/tests/assets/golden.py" python3 -m ttk kernel -i "$REPO/quant/dynamic_quant_update_scatter/tests/st/arch35/ttk_kernel_dynamic_quant_update_scatter_st.csv" \ --plugin "$REPO/quant/dynamic_quant_update_scatter/tests/assets/golden.py" python3 -m ttk kernel -i "$REPO/quant/dynamic_quant_update_scatter_v2/tests/st/arch35/ttk_kernel_dynamic_quant_update_scatter_v2_st.csv" \ --plugin "$REPO/quant/dynamic_quant_update_scatter_v2/tests/assets/golden.py" 检查点: - 各输出 dtype 与用例 output_dtypes 声明一致(如 deep_norm fp16 用例 ('float32','float32','float16')); - fp64 Promote 用例的 cross_check 真值保持 fp64,不被截回 fp32; - 既有 float16/bfloat16 用例的容差与判定不变。 ## 文档更新 本 MR 未包含文档修改。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!11042 | 9 天前 | |
fix(batch_norm3_d_grad): 修正 tiling 日志拼写错误 Co-authored-by: qianzehong<qianzehong@huawei.com> # message auto-generated for no-merge-commit merge: !11715 merge fix/batch-norm3-d-grad-spelling-20261010 into master fix(batch_norm3_d_grad): 修正 tiling 日志拼写错误 Created-by: qianzehong Commit-by: qianzehong Merged-by: cann-robot Description: ## 描述 BatchNorm3DGrad 的算子源码存在拼写错误。将全载入模板 UB 容量检查日志中的 resserve 修正为 reserve,与同函数成功分支的日志拼写一致。 本次变更涉及 1 个源码文件,共修正 1 处出现位置。 ## 关联的Issue 无。 ## 测试 - git diff --check origin/master...HEAD 通过。 - 静态核对:修改前后的源文件在移除字符串内容后逐字一致,日志格式占位符保持一致。 - 未运行本地编译和上板测试;提交后通过 compile 评论请求 CI 编译。 ## 文档更新 无需更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11715 | 9 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
norm类部分算子golden三方对比修复 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !12001 merge golden_normalize into master norm类部分算子golden三方对比修复 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 对 norm 族 4 个算子的测试侧 golden 做规范化,使其对齐三方比对 golden 的编写规范: - norm/bn3_d_training_update/tests/assets/golden.py - norm/bn3_d_training_reduce_grad/tests/assets/golden.py - norm/batch_norm_ext2/tests/assets/golden.py - norm/gn_training_reduce/tests/assets/golden.py 主要改动: 1. **真值不砍档** —— 去掉 numpy 侧写死的 astype(np.float32) 与出口按**算子声明** dtype 的窄回,改为按运行时**下发**的 dtype 取值,避免在三方档下撤销精度提升。 2. **入口/出口 cast 与落格一致** —— 「浮点 + 三方」格零 cast;两方档按 NPU 加宽行为 cast、出口跟随其窄回行为。 3. **三方腿出口窄回** —— 三方腿输出按对应输入 dtype 窄回,不再停在加宽后的类型(否则与提升后的 golden 逼近逐位相等,双标杆塌成单标杆)。 4. **三方腿独立性** —— 三方腿改用 torch 原生算符(F.batch_norm 等)实现,不再与 golden 共用同一计算核,恢复三方比对的区分度。 5. **竞品同精度档** —— torch.compile 融合形态下钉住 fp32 分步舍入档(禁 FMA 收缩),与内核的两步非融合乘加同档。 6. **判据声明覆盖** —— tolerance 键位与算子定义的数据类型集合逐一对齐,无缺声明。 7. 补全各通路(kernel / geir / aclnn / e2e / tf / onnx)存在性的依据,头部 docstring 与实际实现同步。 仅改动测试侧 golden,未改动算子实现、接口与 tiling。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6705 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 泛化、精度已重新测试。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试资产修改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12001 | 4 天前 | |
feat: 责任田 31 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11896 merge feat/responsibility-ops-ascend960-clean into master feat: 责任田 31 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 从 ops-nn-dev 基线同步责任田(norm/activation/index)33 算子的 Ascend960 平台支持。 - def 注册目标平台(Ascend960)+ config binary.json - kernel arch35 宏隔离,非目标平台走 #else 原路径零回归 ## 测试 已在 Ascend960 环境完成编译与功能验证。 ## 类型标签 - [x] ✨ Feature 关联 Issue: #6624 See merge request: cann/ops-nn!11896 | 4 天前 | |
fix(batch_norm_grad_ext2): 修正 tiling 日志拼写错误 Co-authored-by: qianzehong<qianzehong@huawei.com> # message auto-generated for no-merge-commit merge: !11714 merge fix/batch-norm-grad-ext2-spelling-20261010 into master fix(batch_norm_grad_ext2): 修正 tiling 日志拼写错误 Created-by: qianzehong Commit-by: qianzehong Merged-by: cann-robot Description: ## 描述 BatchNormGradExt2 的算子源码存在拼写错误。将全载入模板 UB 容量检查日志中的 resserve 修正为 reserve,与同函数成功分支的日志拼写一致。 本次变更涉及 1 个源码文件,共修正 1 处出现位置。 ## 关联的Issue 无。 ## 测试 - git diff --check origin/master...HEAD 通过。 - 静态核对:修改前后的源文件在移除字符串内容后逐字一致,日志格式占位符保持一致。 - 未运行本地编译和上板测试;提交后通过 compile 评论请求 CI 编译。 ## 文档更新 无需更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11714 | 9 天前 | |
feat: BatchNormGradV3 在 A5 上支持 output_mask Co-authored-by: qianzehong<qianzehong@huawei.com> # message auto-generated for no-merge-commit merge: !11948 merge feat/batch-norm-grad-v3-output-mask into master feat: BatchNormGradV3 在 A5 上支持 output_mask Created-by: qianzehong Commit-by: qianzehong Merged-by: cann-robot Description: ## 描述 BatchNormGradV3 在 A5 上支持按需输出 dx、dweight(dgamma)和 dbias(dbeta)。新增可选 ListBool 属性 output_mask,长度为 3,顺序为 [dx, dweight, dbias],默认全 true;例如 [true, false, false] 仅写出 dx。三个输出仍为必选输出,shape/dtype 保持原定义,关闭输出的内容无效。 - ACLNN:aclnnBatchNormBackward 的 A5 分支通过新增 L0 重载透传已有 outputMask;GEIR:op proto 公开 output_mask 属性。 - A5 tiling 将 mask 编码到 int64_t 字段的低 3 位。各 arch35 kernel 类读取标记,跳过关闭输出的最终写入;全 false 时直接返回。计算 dx 所需的参数梯度归约中间量仍保留。kernel 入口 batch_norm_grad_v3_apt.cpp 与基线一致,mask 位值使用具名常量。 - 共用 OpDef 删除未参与计算的 version,属性顺序为 [is_training, epsilon, output_mask];五个平台的二进制配置同步调整。A2/A3 各 14 条配置将 version:int 替换为 output_mask:list_bool,保证编译参数与生成入口一致。 ## A2/A3 影响范围 A2/A3 的原有 kernel、tiling 模板及三个 tilingdata 结构与基线一致。普通 ACLNN 保留原有组合算子路径;Fast ACLNN 保留旧 L0 调用和 OP_ATTR(training, eps),继续由 L2 控制输出拷贝,不引入 kernel 按 mask 跳算的能力。 共用 OpDef/proto 和生成的编译接口存在属性变化,不能认定为接口完全无影响。直接使用旧编译入口并显式传入 version 的调用需要适配;Fast ACLNN 对外接口中的 version 参数保留。A2/A3 真机 ACLNN、精度、性能和 GEIR 尚未验证。 ### 配套修复与主线同步 基线问题已分别通过以下 PR 合入 master,本 PR 已完成同步: - [#12098:文档、许可证头与格式维护](https://gitcode.com/cann/ops-nn/pull/12098)。 - [#12099:outputMask 校验错误码修复](https://gitcode.com/cann/ops-nn/pull/12099)。 - [#12100:tiling 注册与 UT 镜像布局修复](https://gitcode.com/cann/ops-nn/pull/12100)。 RASplitR 与 RARSplitCoreR1 的 UT 镜像已在末尾补齐 outputMask,序列化大小分别为 192 和 416 字节;后者的 outputMask 位于全部 binAdd 字段之后。已解决与主线的镜像布局冲突,保留融合键注册和错误码修复。 Golden 对 BF16 dtype 字符串先按 Torch dtype 解析,再回退到 NumPy,避免 Torch 通路依赖外部导入 ml_dtypes。已验证 4 个 BF16 CSV 用例的 CPU golden 调用、8 种 dtype 表示、非法 dtype 拒绝,以及 NumPy BF16 输出的按需导入。 主线新增 ascend960dt 配置中的 28 个第三属性同步为 output_mask:list_bool,与共享 OpDef 保持一致;五个平台的 JSON 属性一致性检查通过。 ### 本轮追加验证 - CANN 9.2、ascend950 构建配置:142 个 Host UT、97 个 API UT 全部通过。 - Host SaveToBuffer → UT InitTilingData 往返校验:RASplitR 的 24 个标量字段、RARSplitCoreR1 展开嵌套结构后的 52 个字段,逐字段类型、偏移和值一致,大小分别为 192/416 字节。 - SDK 注册查询:50000000/51000000/52000000 均返回 192 字节的 RASplitR 结构,1000 返回 416 字节的 RARSplitCoreR1 结构。 - 完整 PR 的 35 个变更文件通过 pre-commit;OAT 实际扫描 34 个文件(CSV 按仓库配置排除),退出码 0。 - 当前提交已完成下述 A5 真机精度回归;未启用原先注释的 Kernel 数值 UT,未进行 ascend960dt 真机验证,也未进行性能基线对比。 ### A6 范围核对 本算子当前主线注册的 A6 目标为 ascend960dt(DAV_9201)。OpDef 已将该目标指向 batch_norm_grad_v3_apt,ascendc_config.json 已包含其构建目标,ACLNN IsRegbase 与 Host IsRegbaseNpuArch 均已识别 DAV_9201;共享 Kernel 路径和 outputMask 序列化无需另加 A6 专属分支。本 PR 额外对齐 960DT binary.json 中的 output_mask:list_bool 属性,28 条配置与 ascend950 的配置语义一致。 使用仓库现有 Host/API UT 框架,在仓库外编译 DAV_9201 模拟探针:4 个测试通过,覆盖训练/推理全部 8 种 mask、非法 mask 长度、空指针及关闭输出。该验证检查 Host/API 路由,不包含 A6 Kernel 编译和设备执行。 ascend960pr(DAV_9202)尚无本算子的 OpDef/二进制配置,Host RegBase 识别也尚未覆盖该架构;本 PR 不新增这一平台,不能据此宣称 A6 全系列已适配。960DT 的设备精度/性能仍需目标环境验证。 ### 当前提交的 A5 真机精度回归(2026-10-16) 验证提交: 5c1864a56d2e413c99c22c6ffca7b39e9db166ae。设备为 Ascend950PR、0 号卡,CANN 9.3.0;TTK 版本为 eaa06de9ea65c5ffd0de5befd9e27483becc8976。 在独立目录同步并校验 23,535 个源码文件后,在目标机器完整编包并安装 bngv3v5c1864_nn。ACLNN 的头文件/动态库解析及 Kernel vendor 加载日志均确认使用该包;Kernel 全部结果为 BINARY_MATCH,直接执行本次构建的 release binary。 | 测试范围 | 实际执行 | 精度失败 | 实际输出比较 | |---|---:|---:|---:| | PR 内 ACLNN CSV | 101 | 0 | 303 | | 从 ACLNN CSV 派生的 Kernel mask 专项 | 76 | 0 | 142 | | 仓内既有 Kernel CSV | 80 | 0 | 178 | | 合计 | 257 | 0 | 623 | - 覆盖 FP32/FP16/BF16、训练/推理,以及 ACLNN 全部 8 种 mask。19 个全 false ACLNN 用例通过;147 次禁用输出比较均为 100.0% close 一致,检查初始化哨兵值 13。 - Kernel 专项实际命中全部 11 个 key:1000、900000、910000、10000000、20000000、31000000、32000000、40000000、50000000、51000000、52000000。所有 Kernel 结果的 tiling 尾部 mask 均与用例属性一致。 - 156 个 Kernel 用例的越界检查全部 OK。比较器为 close,使用 CSV 的容差;最小逐输出元素一致率为 99.99866485595703%,所有用例达到既定容差要求。 - Kernel 使用独立 FP64 数学参考,已与 PyTorch native backward 做 96 个 CPU 小例对照。原始 Kernel 的关闭输出,以及推理时不由该 Kernel 计算的参数梯度,不做数值比较;每个计入的 Kernel 用例均至少有一个有效输出实际比较。25 个无有效原始 Kernel 输出的派生用例未纳入 Kernel 套件,其接口语义由 ACLNN 用例覆盖。 - 测试结束后已卸载本次 vendor 包并恢复原有注册状态。 安装包 SHA256:105a6d803e5a1392b3f2511257326a85d8ec40662ab7036745b7a2a5b3aa0811。本轮为精度验证,不据采集到的单次计时宣称性能改善或无回退。 ## 关联的Issue 关联需求 Issue:[6675](https://gitcode.com/cann/ops-nn/issues/6675) ## 测试 | 范围 | 已完成的验证 | |---|---| | A5 编包 | 当前提交在 Ascend950PR / CANN 9.3.0 完整编包通过,已核验 TTK 加载本次 bngv3v5c1864_nn 包 | | A5 ACLNN 精度 | 当前提交 101/101 通过,303 次实际输出比较;覆盖全部 8 种 mask,包含 19 个全 false 用例和禁用输出哨兵检查 | | A5 kernel 精度 | 当前提交 156/156 通过(80 个既有用例 + 76 个 mask 专项),320 次有效输出比较,实际覆盖 11 个 tiling key,越界检查全部 OK | | A5 GEIR(此前记录,本轮未复跑) | 9 个真机用例及 1 个旧 proto 默认属性用例通过,非法 mask 长度被拒绝 | | A2/A3 UT | ascend910b、ascend910_93 两种构建配置下,各有 Host UT 142 个、API UT 94 个通过;其中 108 个模拟平台 tiling 用例检查缺省及全部 8 种 mask 的 tiling key 和完整序列化数据,32 个 A2/A3 workspace 用例覆盖普通/Fast ACLNN、训练/推理及 dweight/dbias 四种组合 | | A2/A3 编包 | 两种配置完整编包通过,各生成包含 14 个对应平台 kernel 二进制及 API、tiling、proto 库的 x86_64 .run 包;在远程 Ascend950 环境编译,尚未安装到 A2/A3 真机 | | 标杆与静态检查 | PyTorch 自动求导标杆与 aten.native_batch_norm_backward 的 384 组 CPU 对照通过;pre-commit 和 git diff --check 通过 | ## 文档更新 补充 proto 的 output_mask 属性说明。新增 tests/st/arch35/ttk_aclnn_batch_norm_grad_v3_st.csv 和 tests/assets/golden.py;golden 直接使用 CPU torch.nn.functional.batch_norm 前向及 torch.autograd.grad,采用 FP64 标杆。训练输入的保存统计量来自匹配的 torch.native_batch_norm 前向,并写回声明的 dtype。CSV 命名与接入方式参照 UndGenQkvRmsNormRopeCache;原有 kernel CSV 和 README 保持原版。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11948 | 2 天前 | |
feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11972 merge feat/hi-f4-quant-ascend960dt into master feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增 hi_f4 量化算子,并同步若干算子的 Ascend960 平台支持(含公共件配套)。 - **新增算子**:rms_norm_hi_f4_quant / add_rms_norm_hi_f4_quant,Ascend960 专属(kernel 与 tiling 位于 arch92 目录),ReciprocalCast 接口适配,aclnn 接口位于算子根 op_api/ 目录(仓规范布局) - **数据类型兼容层**:算子内数据类型引用统一切换 Ops::NN:: 常量(复用 master 先行合入的 op_const_def_nn.h 兼容层,见 !11999),各版本 CANN 均可编译 - **batch_norm / batch_norm_v3**:tiling 核间均衡 + kernel block_split_r 优化 - **add_rms_norm_dynamic_quant_v2**:目标平台注册 + config - **lp_norm_v2**:tiling 平台管理器初始化补充 - **公共件配套**:ascendc_impl_build.py DTYPE_MAP 补 hifloat4 映射 - **工程配置**:ascendc_config 注册 ## 测试 已在 Ascend960 环境完成编译与功能验证;低版本 CANN(metadef 9.2.0)语法验证通过;A5 不受影响。 ## 类型标签 - [x] Feature 关联 Issue: #6687 See merge request: cann/ops-nn!11972 | 3 天前 | |
norm类部分算子golden三方对比修复 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !12001 merge golden_normalize into master norm类部分算子golden三方对比修复 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 对 norm 族 4 个算子的测试侧 golden 做规范化,使其对齐三方比对 golden 的编写规范: - norm/bn3_d_training_update/tests/assets/golden.py - norm/bn3_d_training_reduce_grad/tests/assets/golden.py - norm/batch_norm_ext2/tests/assets/golden.py - norm/gn_training_reduce/tests/assets/golden.py 主要改动: 1. **真值不砍档** —— 去掉 numpy 侧写死的 astype(np.float32) 与出口按**算子声明** dtype 的窄回,改为按运行时**下发**的 dtype 取值,避免在三方档下撤销精度提升。 2. **入口/出口 cast 与落格一致** —— 「浮点 + 三方」格零 cast;两方档按 NPU 加宽行为 cast、出口跟随其窄回行为。 3. **三方腿出口窄回** —— 三方腿输出按对应输入 dtype 窄回,不再停在加宽后的类型(否则与提升后的 golden 逼近逐位相等,双标杆塌成单标杆)。 4. **三方腿独立性** —— 三方腿改用 torch 原生算符(F.batch_norm 等)实现,不再与 golden 共用同一计算核,恢复三方比对的区分度。 5. **竞品同精度档** —— torch.compile 融合形态下钉住 fp32 分步舍入档(禁 FMA 收缩),与内核的两步非融合乘加同档。 6. **判据声明覆盖** —— tolerance 键位与算子定义的数据类型集合逐一对齐,无缺声明。 7. 补全各通路(kernel / geir / aclnn / e2e / tf / onnx)存在性的依据,头部 docstring 与实际实现同步。 仅改动测试侧 golden,未改动算子实现、接口与 tiling。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6705 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 泛化、精度已重新测试。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试资产修改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12001 | 4 天前 | |
BN3DTrainingUpdate优化 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !11968 merge bn3d_fresh into master BN3DTrainingUpdate优化 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 对既有算子 BN3DTrainingUpdate(norm/bn3_d_training_update,ascend950 / arch35)的**功能代码进行重构**,契约(def.cpp / proto.h)冻结。 旧实现经多轮修补后难以维护(按 C 值的特判分支堆积、VF 几乎没用上、注释里残留历次修复的补丁叙述),故不在其上继续堆叠。 继续在其上叠加改动的风险已大于收益,因此进行优化重构。 ## 关联的Issue 不涉及(既有算子功能代码重构,无对应 Issue)。 ## 测试 通路 geir 79/79;泛化 1015 例 1015 PASS;精度 100/100;性能 200 例 **G/N ≥ 0.5 全部达标**;DFX 16 例精度与内存越界全通过;UT 33/33;仓内 example 可编译运行通过。 ## 文档更新 norm/bn3_d_training_update/README.md ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11968 | 3 天前 | |
modified md files (modified the product name and link path) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11029 merge master into master modified md files (modified the product name and link path) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Changed the product name and link path ## 关联的Issue [#6092](https://gitcode.com/cann/ops-nn/issues/6092) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!11029 | 26 天前 | |
【mc62】删除def.cpp 文件中包含OP_ADD的注释 Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !11676 merge delett into master 【mc62】删除def.cpp 文件中包含OP_ADD的注释 Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 【mc62】删除def.cpp 文件中包含OP_ADD的注释 原因:cmake 文件会根据def.cpp末尾定义的OP_ADD(OP_NAME) 来获取OP_NAME, 然后进行编译动作,def.cpp中有其他OP_ADD关键字(比如#include "register/op_def_registry.h" // OpDef base class, OP_ADD macro)会导致 获取不到OP_NAME,编译生成的算子文件会缺少compile_options, 导致算子性能劣化。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6492 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11676 | 9 天前 | |
BNInfer,InplaceApplyRMSProp等4个算子检视意见闭环 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !12072 merge fix/ascend950-four-ops into master BNInfer,InplaceApplyRMSProp等4个算子检视意见闭环 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> BNInfer,InplaceApplyRMSProp,ApplyCamePart1,ApplyCamePart3等4个算子检视意见闭环: 1.BNInfer 的 UB 越界与对齐偏移问题闭环 2.统一 ApplyCamePart1/3 的 tilingKey=0 和 dtype 分发逻辑, 3.校正 InplaceApplyRMSProp 的 UT 预期。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12072 | 3 天前 | |
feat: 长尾算子新增ascend350平台支持 Co-authored-by: onanfield<tianshang@huawei.com> # message auto-generated for no-merge-commit merge: !11839 merge ascend350-adapt-batch2 into master feat: 长尾算子新增ascend350平台支持 Created-by: onanfield Commit-by: onanfield Merged-by: cann-robot Description: ## 描述 9个算子新增ascend350平台支持(BNInference/BNInferGrad/Centralization/CosineEmbeddingLoss/DynamicQuantUpdateScatterV2/FakeQuantWithMinMaxArgs/ForeachAcos/ForeachCos/ForeachLerpList) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11839 | 3 天前 | |
feat: 长尾算子新增ascend350平台支持 Co-authored-by: onanfield<tianshang@huawei.com> # message auto-generated for no-merge-commit merge: !11839 merge ascend350-adapt-batch2 into master feat: 长尾算子新增ascend350平台支持 Created-by: onanfield Commit-by: onanfield Merged-by: cann-robot Description: ## 描述 9个算子新增ascend350平台支持(BNInference/BNInferGrad/Centralization/CosineEmbeddingLoss/DynamicQuantUpdateScatterV2/FakeQuantWithMinMaxArgs/ForeachAcos/ForeachCos/ForeachLerpList) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11839 | 3 天前 | |
feat: sync_bn_training_update 等 4 算子适配 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !12142 merge feat/syncbn-update-rmsnormq-v3-ascend960 into master feat: sync_bn_training_update 等 4 算子适配 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 变更内容 - **sync_bn_training_update**:注册 ascend960dt(def AddConfig、config/ascend960dt binary.json、CMakeLists 编译单元、ascendc_config 条目) - **rms_norm_quant_v3**:注册 ascend960dt(def AddConfig、config/ascend960dt binary.json、CMakeLists 编译单元、op_kernel 编译入口) - **bn_training_reduce**:注册 ascend960dt(def AddConfig、CMakeLists 编译单元 3/3 配对) - **instance_norm**:注册 ascend960dt(def AddConfig、config/ascend960dt binary.json、ascendc_config 条目) ## 实现方式 - 四算子复用既有 arch35 RegBase 内核,无 kernel/tiling/aclnn 代码修改,无性能特性新增 - rms_norm_quant_v3 kernel 为 rms_norm_quant_v2 薄壳实现,自动继承 v2 既有 9201/9202 编译期优化路径 - bn_training_reduce 为 def config 驱动模式(master 既有形态,无 config 目录);instance_norm 与 batch_norm_v3 同构(GLOB walker + def 驱动) - ascendc_config 的 960dt 编译选项对齐仓内既有形态(--cce-no-dcache-flush) - tiling 运行时路由经公共 IsRegbaseSocVersion(已含 DAV_9201)自动生效 ## 影响范围 - 不涉及 DAV_3510 路径代码变化,A5 编译与行为零回归 关联 Issue:#6804 See merge request: cann/ops-nn!12142 | 2 天前 | |
modified md files (modified the product name) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11199 merge master into master modified md files (modified the product name) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Changed the product name. ## 关联的Issue [#6092](https://gitcode.com/cann/ops-nn/issues/6092) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!11199 | 25 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
modified md files (modified the product name) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11199 merge master into master modified md files (modified the product name) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Changed the product name. ## 关联的Issue [#6092](https://gitcode.com/cann/ops-nn/issues/6092) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!11199 | 25 天前 | |
docs: 统一原型注释中的产品名称(master) Co-authored-by: yolic<chenyuning1@huawei.com> # message auto-generated for no-merge-commit merge: !11186 merge 923soc into master docs: 统一原型注释中的产品名称(master) Created-by: yolic Commit-by: yolic Merged-by: cann-robot Description: ## 描述 原型注释里的产品名称仍沿用 Series Product、Ascend 950 AI Processor、Ascend 950PR/Ascend 950DT 等旧表述,与当前产品命名不一致。本次只改注释,不改算子接口和计算逻辑。 合入目标:cann/ops-nn 的 master。 覆盖各算子 op_graph/*_proto.h,以及 common/inc/op_graph/op_nn_proto_extend.h、common/stub/op_graph/math_proto_stub.cpp。 ## 关联的Issue 关联 Issue #6213(Close #6213) https://gitcode.com/cann/ops-nn/issues/6213 ## 测试 仅修改原型注释中的产品名称,不涉及算子 host/kernel 计算逻辑,无需算子泛化。已在本地用仓库 pre-commit 的 end-of-file-fixer 与 clang-format 核对格式,且没有改动算子输入、输出和属性定义。 ## 文档更新 更新了 op_graph 原型注释中的产品名称,无独立 markdown 文档。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11186 | 21 天前 | |
fix: 修复BNTrainingUpdateV3算子NHWC Rows路径rows占不满核时并行度不足的性能问题 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !11563 merge BNTrainingUpdateV3 into master fix: 修复BNTrainingUpdateV3算子NHWC Rows路径rows占不满核时并行度不足的性能问题 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 BNTrainingUpdateV3 算子 NHWC 路径下,当 C%64!=0 走 Rows 路径(plane=一行)时,若输入 rows(numel/C)不足以占满全部核(如 rows=2 时仅启用 2 核),核并行度严重不足,导致算子性能低下。 本次改动在 rows 占不满核的场景下,将 Rows 路径自动切换为 RowsWindowed 路径(nhwcPath=4),并按 inner 维将 c 窗口切分分摊到更多核上: - **Tiling 层**( bn_training_update_v3_tiling_arch35.cpp):CalcNhwcRowsUbTile() 在 unitCores_ < coreNum_ 且 numC_ > VL 时切换到 RowsWindowed;新增 innerCores_ = min(coreNum_/unitCores_, maxWindows) 计算,窗口宽度按核数对 64 对齐折算,并回填 innerSize_(c 窗口数)与 innerPerCore_(每核窗口数)。 - **Kernel 层**(bn_training_update_v3.h):ProcessNhwcRowsWindowed() 由逐窗口全量遍历改为按 [rStart_, rStart_+myR_) 本核窗口范围遍历,各核只处理本核 c 窗口段;统计量写出(writeBatch_、batchC0_、batchC1_)由首行块归属核按 c 窗口分摊,各核写出本核窗口覆盖的通道段。 ## 关联的Issue - #6424 ## 测试 - UT:rows=70(占满核)仍走 Rows 快路径(nhwcPath=3,blockDim=64) - UT:rows=2、C=30000 走 RowsWindowed(nhwcPath=4,innerCores=32,innerSize=32,blockDim=64) - UT:fp16 rows=7、C=15608 走 RowsWindowed(innerCores=9,innerSize=9,blockDim=63) ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!11563 | 9 天前 | |
feat: 长尾算子新增ascend350平台支持 Co-authored-by: onanfield<tianshang@huawei.com> # message auto-generated for no-merge-commit merge: !11839 merge ascend350-adapt-batch2 into master feat: 长尾算子新增ascend350平台支持 Created-by: onanfield Commit-by: onanfield Merged-by: cann-robot Description: ## 描述 9个算子新增ascend350平台支持(BNInference/BNInferGrad/Centralization/CosineEmbeddingLoss/DynamicQuantUpdateScatterV2/FakeQuantWithMinMaxArgs/ForeachAcos/ForeachCos/ForeachLerpList) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11839 | 3 天前 | |
feat: BatchNormGradV3 在 A5 上支持 output_mask Co-authored-by: qianzehong<qianzehong@huawei.com> # message auto-generated for no-merge-commit merge: !11948 merge feat/batch-norm-grad-v3-output-mask into master feat: BatchNormGradV3 在 A5 上支持 output_mask Created-by: qianzehong Commit-by: qianzehong Merged-by: cann-robot Description: ## 描述 BatchNormGradV3 在 A5 上支持按需输出 dx、dweight(dgamma)和 dbias(dbeta)。新增可选 ListBool 属性 output_mask,长度为 3,顺序为 [dx, dweight, dbias],默认全 true;例如 [true, false, false] 仅写出 dx。三个输出仍为必选输出,shape/dtype 保持原定义,关闭输出的内容无效。 - ACLNN:aclnnBatchNormBackward 的 A5 分支通过新增 L0 重载透传已有 outputMask;GEIR:op proto 公开 output_mask 属性。 - A5 tiling 将 mask 编码到 int64_t 字段的低 3 位。各 arch35 kernel 类读取标记,跳过关闭输出的最终写入;全 false 时直接返回。计算 dx 所需的参数梯度归约中间量仍保留。kernel 入口 batch_norm_grad_v3_apt.cpp 与基线一致,mask 位值使用具名常量。 - 共用 OpDef 删除未参与计算的 version,属性顺序为 [is_training, epsilon, output_mask];五个平台的二进制配置同步调整。A2/A3 各 14 条配置将 version:int 替换为 output_mask:list_bool,保证编译参数与生成入口一致。 ## A2/A3 影响范围 A2/A3 的原有 kernel、tiling 模板及三个 tilingdata 结构与基线一致。普通 ACLNN 保留原有组合算子路径;Fast ACLNN 保留旧 L0 调用和 OP_ATTR(training, eps),继续由 L2 控制输出拷贝,不引入 kernel 按 mask 跳算的能力。 共用 OpDef/proto 和生成的编译接口存在属性变化,不能认定为接口完全无影响。直接使用旧编译入口并显式传入 version 的调用需要适配;Fast ACLNN 对外接口中的 version 参数保留。A2/A3 真机 ACLNN、精度、性能和 GEIR 尚未验证。 ### 配套修复与主线同步 基线问题已分别通过以下 PR 合入 master,本 PR 已完成同步: - [#12098:文档、许可证头与格式维护](https://gitcode.com/cann/ops-nn/pull/12098)。 - [#12099:outputMask 校验错误码修复](https://gitcode.com/cann/ops-nn/pull/12099)。 - [#12100:tiling 注册与 UT 镜像布局修复](https://gitcode.com/cann/ops-nn/pull/12100)。 RASplitR 与 RARSplitCoreR1 的 UT 镜像已在末尾补齐 outputMask,序列化大小分别为 192 和 416 字节;后者的 outputMask 位于全部 binAdd 字段之后。已解决与主线的镜像布局冲突,保留融合键注册和错误码修复。 Golden 对 BF16 dtype 字符串先按 Torch dtype 解析,再回退到 NumPy,避免 Torch 通路依赖外部导入 ml_dtypes。已验证 4 个 BF16 CSV 用例的 CPU golden 调用、8 种 dtype 表示、非法 dtype 拒绝,以及 NumPy BF16 输出的按需导入。 主线新增 ascend960dt 配置中的 28 个第三属性同步为 output_mask:list_bool,与共享 OpDef 保持一致;五个平台的 JSON 属性一致性检查通过。 ### 本轮追加验证 - CANN 9.2、ascend950 构建配置:142 个 Host UT、97 个 API UT 全部通过。 - Host SaveToBuffer → UT InitTilingData 往返校验:RASplitR 的 24 个标量字段、RARSplitCoreR1 展开嵌套结构后的 52 个字段,逐字段类型、偏移和值一致,大小分别为 192/416 字节。 - SDK 注册查询:50000000/51000000/52000000 均返回 192 字节的 RASplitR 结构,1000 返回 416 字节的 RARSplitCoreR1 结构。 - 完整 PR 的 35 个变更文件通过 pre-commit;OAT 实际扫描 34 个文件(CSV 按仓库配置排除),退出码 0。 - 当前提交已完成下述 A5 真机精度回归;未启用原先注释的 Kernel 数值 UT,未进行 ascend960dt 真机验证,也未进行性能基线对比。 ### A6 范围核对 本算子当前主线注册的 A6 目标为 ascend960dt(DAV_9201)。OpDef 已将该目标指向 batch_norm_grad_v3_apt,ascendc_config.json 已包含其构建目标,ACLNN IsRegbase 与 Host IsRegbaseNpuArch 均已识别 DAV_9201;共享 Kernel 路径和 outputMask 序列化无需另加 A6 专属分支。本 PR 额外对齐 960DT binary.json 中的 output_mask:list_bool 属性,28 条配置与 ascend950 的配置语义一致。 使用仓库现有 Host/API UT 框架,在仓库外编译 DAV_9201 模拟探针:4 个测试通过,覆盖训练/推理全部 8 种 mask、非法 mask 长度、空指针及关闭输出。该验证检查 Host/API 路由,不包含 A6 Kernel 编译和设备执行。 ascend960pr(DAV_9202)尚无本算子的 OpDef/二进制配置,Host RegBase 识别也尚未覆盖该架构;本 PR 不新增这一平台,不能据此宣称 A6 全系列已适配。960DT 的设备精度/性能仍需目标环境验证。 ### 当前提交的 A5 真机精度回归(2026-10-16) 验证提交: 5c1864a56d2e413c99c22c6ffca7b39e9db166ae。设备为 Ascend950PR、0 号卡,CANN 9.3.0;TTK 版本为 eaa06de9ea65c5ffd0de5befd9e27483becc8976。 在独立目录同步并校验 23,535 个源码文件后,在目标机器完整编包并安装 bngv3v5c1864_nn。ACLNN 的头文件/动态库解析及 Kernel vendor 加载日志均确认使用该包;Kernel 全部结果为 BINARY_MATCH,直接执行本次构建的 release binary。 | 测试范围 | 实际执行 | 精度失败 | 实际输出比较 | |---|---:|---:|---:| | PR 内 ACLNN CSV | 101 | 0 | 303 | | 从 ACLNN CSV 派生的 Kernel mask 专项 | 76 | 0 | 142 | | 仓内既有 Kernel CSV | 80 | 0 | 178 | | 合计 | 257 | 0 | 623 | - 覆盖 FP32/FP16/BF16、训练/推理,以及 ACLNN 全部 8 种 mask。19 个全 false ACLNN 用例通过;147 次禁用输出比较均为 100.0% close 一致,检查初始化哨兵值 13。 - Kernel 专项实际命中全部 11 个 key:1000、900000、910000、10000000、20000000、31000000、32000000、40000000、50000000、51000000、52000000。所有 Kernel 结果的 tiling 尾部 mask 均与用例属性一致。 - 156 个 Kernel 用例的越界检查全部 OK。比较器为 close,使用 CSV 的容差;最小逐输出元素一致率为 99.99866485595703%,所有用例达到既定容差要求。 - Kernel 使用独立 FP64 数学参考,已与 PyTorch native backward 做 96 个 CPU 小例对照。原始 Kernel 的关闭输出,以及推理时不由该 Kernel 计算的参数梯度,不做数值比较;每个计入的 Kernel 用例均至少有一个有效输出实际比较。25 个无有效原始 Kernel 输出的派生用例未纳入 Kernel 套件,其接口语义由 ACLNN 用例覆盖。 - 测试结束后已卸载本次 vendor 包并恢复原有注册状态。 安装包 SHA256:105a6d803e5a1392b3f2511257326a85d8ec40662ab7036745b7a2a5b3aa0811。本轮为精度验证,不据采集到的单次计时宣称性能改善或无回退。 ## 关联的Issue 关联需求 Issue:[6675](https://gitcode.com/cann/ops-nn/issues/6675) ## 测试 | 范围 | 已完成的验证 | |---|---| | A5 编包 | 当前提交在 Ascend950PR / CANN 9.3.0 完整编包通过,已核验 TTK 加载本次 bngv3v5c1864_nn 包 | | A5 ACLNN 精度 | 当前提交 101/101 通过,303 次实际输出比较;覆盖全部 8 种 mask,包含 19 个全 false 用例和禁用输出哨兵检查 | | A5 kernel 精度 | 当前提交 156/156 通过(80 个既有用例 + 76 个 mask 专项),320 次有效输出比较,实际覆盖 11 个 tiling key,越界检查全部 OK | | A5 GEIR(此前记录,本轮未复跑) | 9 个真机用例及 1 个旧 proto 默认属性用例通过,非法 mask 长度被拒绝 | | A2/A3 UT | ascend910b、ascend910_93 两种构建配置下,各有 Host UT 142 个、API UT 94 个通过;其中 108 个模拟平台 tiling 用例检查缺省及全部 8 种 mask 的 tiling key 和完整序列化数据,32 个 A2/A3 workspace 用例覆盖普通/Fast ACLNN、训练/推理及 dweight/dbias 四种组合 | | A2/A3 编包 | 两种配置完整编包通过,各生成包含 14 个对应平台 kernel 二进制及 API、tiling、proto 库的 x86_64 .run 包;在远程 Ascend950 环境编译,尚未安装到 A2/A3 真机 | | 标杆与静态检查 | PyTorch 自动求导标杆与 aten.native_batch_norm_backward 的 384 组 CPU 对照通过;pre-commit 和 git diff --check 通过 | ## 文档更新 补充 proto 的 output_mask 属性说明。新增 tests/st/arch35/ttk_aclnn_batch_norm_grad_v3_st.csv 和 tests/assets/golden.py;golden 直接使用 CPU torch.nn.functional.batch_norm 前向及 torch.autograd.grad,采用 FP64 标杆。训练输入的保存统计量来自匹配的 torch.native_batch_norm 前向,并写回声明的 dtype。CSV 命名与接入方式参照 UndGenQkvRmsNormRopeCache;原有 kernel CSV 和 README 保持原版。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11948 | 2 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
feat(dua_quantize_add_layer_norm): 支持 Ascend950(arch35) Co-authored-by: andong_hw<andong2@huawei.com> Co-authored-by: fanjie43<fanjie43@huawei.com> # message auto-generated for no-merge-commit merge: !11125 merge feat/dua-quantize-add-layer-norm-arch35 into master feat(dua_quantize_add_layer_norm): 支持 Ascend950(arch35) Created-by: weixin_51153241 Commit-by: fanjie43;andong_hw Merged-by: cann-robot Description: ## 背景 norm/dua_quantize_add_layer_norm 原仅支持 Atlas A2 / A3(910)。本 PR 为其新增 Ascend950(arch35)支持:op_host/arch22(原 910 实现,原样迁入)+ op_host/arch35(新增 950 实现)。 ## 主要改动 | 类别 | 文件 | 说明 | |---|---|---| | 新增 | op_host/arch35/*_tiling_arch35.{cpp,h} | 950 tiling,tilingKey 0/1/2/4/5 | | 新增 | op_kernel/arch35/*.h、op_kernel/*_apt.cpp | 950 kernel(base / group / empty 三分支) | | 新增 | op_host/config/ascend950/*_binary.json | 950 binary 配置(fp32 / fp16 / bf16) | | 新增 | op_kernel/CMakeLists.txt | 仅登记 950 kernel 入口,**不改动 910 既有 kernel 构建** | | 迁移 | op_host/*_tiling.{cpp,h} → op_host/arch22/ | 内容不变,仅换目录 | | 删除 | op_host/CMakeLists.txt | 改由算子根 CMakeLists.txt 统一声明 | | 修改 | 根 CMakeLists.txt | 改为 SUPPORT_COMPUTE_UNIT / SUPPORT_TILING_DIR 并行数组 | | 修改 | op_host/*_def.cpp | 追加 ascend950 AICore 配置;910b/910_93 的 dtype 组合顺序与 AutoContiguous **保持原样** | | 修改 | op_graph/*_proto.h、op_host/*_infershape.cpp | 修正 proto 与 def 的 dtype 声明不一致(原 proto 把 scales 声明为仅 bf16/fp32) | | 修改 | README.md、examples/、tests/assets/golden.py | 产品表 950 转「支持」;样例随附 | ## 兼容性 - 910b / 910_93 的 tiling、dtype 顺序、AutoContiguous、AICore 配置均未改动; 910 的 kernel 构建路径也未改动(未向 op_kernel/CMakeLists.txt 添加 910 条目)。 - arch22 与 arch35 各自注册 IMPL_OP_OPTILING,因 TILING_DIR 按 soc 位置映射, 每次构建只编译对应子目录,不产生重复符号。 ## 验证 本地以本仓构建系统实测(bash build.sh): - --pkg --jit --soc=ascend950 --ops=dua_quantize_add_layer_norm → SUCCESS, 产物含 dynamic/dua_quantize_add_layer_norm.py(910)与 dynamic/dua_quantize_add_layer_norm_apt.py(950) - --pkg --jit --soc=ascend910b --ops=dua_quantize_add_layer_norm → SUCCESS(910 回归) - --opkernel --soc=ascend950 → SUCCESS,产物 DuaQuantizeAddLayerNorm_{fp32,fp16,bf16}.o - --opkernel --soc=ascend910b → SUCCESS,产物 DuaQuantizeAddLayerNorm_1.o (与仓内 config/ascend910b/*_binary.json 的 bin_filename 一致) See merge request: cann/ops-nn!11125 | 19 天前 | |
modified md files (modified the product name and link path) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11029 merge master into master modified md files (modified the product name and link path) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Changed the product name and link path ## 关联的Issue [#6092](https://gitcode.com/cann/ops-nn/issues/6092) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!11029 | 26 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
norm类部分算子golden三方对比修复 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !12001 merge golden_normalize into master norm类部分算子golden三方对比修复 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 对 norm 族 4 个算子的测试侧 golden 做规范化,使其对齐三方比对 golden 的编写规范: - norm/bn3_d_training_update/tests/assets/golden.py - norm/bn3_d_training_reduce_grad/tests/assets/golden.py - norm/batch_norm_ext2/tests/assets/golden.py - norm/gn_training_reduce/tests/assets/golden.py 主要改动: 1. **真值不砍档** —— 去掉 numpy 侧写死的 astype(np.float32) 与出口按**算子声明** dtype 的窄回,改为按运行时**下发**的 dtype 取值,避免在三方档下撤销精度提升。 2. **入口/出口 cast 与落格一致** —— 「浮点 + 三方」格零 cast;两方档按 NPU 加宽行为 cast、出口跟随其窄回行为。 3. **三方腿出口窄回** —— 三方腿输出按对应输入 dtype 窄回,不再停在加宽后的类型(否则与提升后的 golden 逼近逐位相等,双标杆塌成单标杆)。 4. **三方腿独立性** —— 三方腿改用 torch 原生算符(F.batch_norm 等)实现,不再与 golden 共用同一计算核,恢复三方比对的区分度。 5. **竞品同精度档** —— torch.compile 融合形态下钉住 fp32 分步舍入档(禁 FMA 收缩),与内核的两步非融合乘加同档。 6. **判据声明覆盖** —— tolerance 键位与算子定义的数据类型集合逐一对齐,无缺声明。 7. 补全各通路(kernel / geir / aclnn / e2e / tf / onnx)存在性的依据,头部 docstring 与实际实现同步。 仅改动测试侧 golden,未改动算子实现、接口与 tiling。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6705 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 泛化、精度已重新测试。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试资产修改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12001 | 4 天前 | |
modified md files (modified the product name) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11199 merge master into master modified md files (modified the product name) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Changed the product name. ## 关联的Issue [#6092](https://gitcode.com/cann/ops-nn/issues/6092) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!11199 | 25 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
refactor(group_norm_grad): tiling/kernel解耦重构,regbase接入注册路由 Co-authored-by: Developer user<zhuzixian1@h-partners.com> # message auto-generated for no-merge-commit merge: !11580 merge zhu/gng-tiling-kernel-decouple into master refactor(group_norm_grad): tiling/kernel解耦重构,regbase接入注册路由 Created-by: zhuzixian-lr Commit-by: Developer user Merged-by: cann-robot Description: ## 重构目标 group_norm_grad 的 tiling 设计未按 layer_norm_grad_v3 模式解耦,直接新增 tiling/kernel 时耦合度过高(tiling 无 base,kernel 继承 base 代价太大)。本次参考 layer_norm_grad_v3 的注册路由模式完成解耦,后续新增 tiling/kernel 可直接通过注册机制快速接入。 ## tiling 侧改动 1. **tiling.h** 新增 GroupNormGradTilingBase 轻量基类:公共成员(N_/C_/G_/CPerG_/HxW_/dtype/平台参数)、公共校验(InputCheck/ParamsCheck 严格版)、8 个 tiling 虚函数默认实现 2. **新增 group_norm_grad_tiling_base.cpp** 存储公共方法(platformInfo 统一从 compileInfo 取值) 3. **RegBaseTiling 改名 RegBaseMixTiling** 并继承新基类,mix 特有逻辑原地保留 4. **EmptyTiling 继承新基类**:空 tensor 判断逻辑由入口 TilingShapeEmptyJudge 移入 IsCapable;宽松版校验(允许 dim=0)保留 override 5. **入口 isRegBase 分支改走 TilingRegistry::DoTilingImpl 注册路由**(empty=100 优先,mix=200 兜底);非 regbase 910b 老路径保持不变 ## kernel 侧改动 1. **新增 group_norm_grad_clean_base.h** 轻量基类 GroupNormGradBase(无状态常量+基础工具),作为后续新增 kernel 的挂靠点 2. **group_norm_grad_base.h 改名 group_norm_grad_mix_base.h**,类名 GroupNormGradMixBase 并继承轻量基类 3. g_full_load / c_full_load / recompute / small_ng 四模板同步改继承 4. EmptyDgamma 挂轻量基类 ## 行为不变性 - 只动结构不调功能:tilingData 结构 / tilingKey 编码 / binary.json / aclnn 层 / 910b 老路径均不变 - 所有功能外部不感知 ## 验证(A5 / ascend950) - 编译通过,产出 custom 包安装至 Ascend_patch - **st 全量 75 用例**:patch(重构包)与 base(build-in)双环境全部 PASS,非计时字段逐字段一致(tiling key / tiling data / 精度状态 / blockDim / kernel 名 / workspace) - **补充用例覆盖全模板路由**:101/104/201/205/301/304/401/405/**500(empty)** 各 tiling key 双环境完全一致,empty 路由迁移正确性实锤 - pre-commit(clang-format/codespell/OAT)全过 关联 Issue: #6532 See merge request: cann/ops-nn!11580 | 3 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
docs(op_api): 修正 group_norm_silu_quant 头文件注释与接口文档参数名不一致(#6399 第6条 / #6425) Co-authored-by: bartonfang<fangziyang1@huawei.com> # message auto-generated for no-merge-commit merge: !11591 merge fix-op-api-param-docs-6399 into master docs(op_api): 修正 group_norm_silu_quant 头文件注释与接口文档参数名不一致(#6399 第6条 / #6425) Created-by: bartonfang Commit-by: bartonfang Merged-by: cann-robot Description: ## 变更说明 修复 group_norm_silu_quant 的 op_api 头文件注释、接口文档与函数签名不一致的问题(头文件随包发布,按注释或文档调用会编译失败): 1. norm/group_norm_silu_quant/op_host/op_api/aclnn_group_norm_silu_quant.h - 参数名 esp 更正为 eps(签名里是 double eps),描述里的默认值 le-5 一并更正为 1e-5; - 补充缺失的 activateSilu 参数说明(签名中有 bool activateSilu),口径与 docs/aclnnGroupNormSiluQuant.md 一致:是否开启Silu计算,当前仅支持开启。 2. norm/group_norm_silu_quant/docs/aclnnGroupNormSiluQuant.md - 代码原型与参数表里的 gammaOptional/betaOptional 更正为 gamma/beta,与头文件签名保持一致(共 4 处)。 > 说明:本 PR 原先还包含 index/scatter_elements_v2/op_api/aclnn_scatter.h 的注释修正,该处已由 !11607 覆盖,本次已从本 PR 移除,避免重复修改。 ## 验证 - 逐行对照两处函数签名核对:修复后 @param、文档原型与入参一一对应,无缺参、无幽灵参、参数名一致; - 仅注释与文档变更,不涉及代码逻辑。 关联 issue:#6399(第 6 条)、#6425 See merge request: cann/ops-nn!11591 | 19 小时前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
feat: 责任田 31 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11896 merge feat/responsibility-ops-ascend960-clean into master feat: 责任田 31 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 从 ops-nn-dev 基线同步责任田(norm/activation/index)33 算子的 Ascend960 平台支持。 - def 注册目标平台(Ascend960)+ config binary.json - kernel arch35 宏隔离,非目标平台走 #else 原路径零回归 ## 测试 已在 Ascend960 环境完成编译与功能验证。 ## 类型标签 - [x] ✨ Feature 关联 Issue: #6624 See merge request: cann/ops-nn!11896 | 4 天前 | |
docs: 统一原型注释中的产品名称(master) Co-authored-by: yolic<chenyuning1@huawei.com> # message auto-generated for no-merge-commit merge: !11186 merge 923soc into master docs: 统一原型注释中的产品名称(master) Created-by: yolic Commit-by: yolic Merged-by: cann-robot Description: ## 描述 原型注释里的产品名称仍沿用 Series Product、Ascend 950 AI Processor、Ascend 950PR/Ascend 950DT 等旧表述,与当前产品命名不一致。本次只改注释,不改算子接口和计算逻辑。 合入目标:cann/ops-nn 的 master。 覆盖各算子 op_graph/*_proto.h,以及 common/inc/op_graph/op_nn_proto_extend.h、common/stub/op_graph/math_proto_stub.cpp。 ## 关联的Issue 关联 Issue #6213(Close #6213) https://gitcode.com/cann/ops-nn/issues/6213 ## 测试 仅修改原型注释中的产品名称,不涉及算子 host/kernel 计算逻辑,无需算子泛化。已在本地用仓库 pre-commit 的 end-of-file-fixer 与 clang-format 核对格式,且没有改动算子输入、输出和属性定义。 ## 文档更新 更新了 op_graph 原型注释中的产品名称,无独立 markdown 文档。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11186 | 21 天前 | |
modified md files (modified the product name and link path) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11029 merge master into master modified md files (modified the product name and link path) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Changed the product name and link path ## 关联的Issue [#6092](https://gitcode.com/cann/ops-nn/issues/6092) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!11029 | 26 天前 | |
fix(golden): 规范四个 NN 算子的 CPU 真值与 Torch 标杆 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !11783 merge fix/golden-three-leg-contract-20261012 into master fix(golden): 规范四个 NN 算子的 CPU 真值与 Torch 标杆 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修正 INTrainingReduceV2、NormalizeBBox、Relu6Grad、SGD 的 Golden,使其遵循 TTK 三腿比对与 Golden 编写规范。仅修改 4 个 tests/assets/golden.py。 - CPU Promote 直接使用框架下发的浮点类型,不再自行升精度或按输出元信息转换;INTrainingReduceV2 在普通模式按 FP32 计算并输出。 - GPU 标杆统一为 Torch,移除 TF provider。Relu6Grad 的 FP16/BF16 标杆在 FP32 计算后还原输出类型。 - Relu6Grad kernel/GEIR 的 CPU Golden 使用 TensorFlow Select 组合;TF E2E 复用 TTK 默认 CPU 原生 TF 通路及框架 Promote。Torch E2E 标杆保留 TF 乘掩码语义,区别于 kernel 的 Select 语义。 - 保留既有 kernel/GEIR、legacy 注册和全部输出 dtype 的 tolerance。算子实现、Host、Parser 和 TTK 均无改动。 ## 关联的Issue Closes #6534 https://gitcode.com/cann/ops-nn/issues/6534 ## 测试 - Golden CPU 回归 199/199 通过,基线为 32695b8b95ae266a9e5962925a6b9654098789de。 - 同一固定输入运行主线和整改版,另用独立参考校验整改结果;覆盖 FP16/BF16/FP32、Promote FP32/FP64、边界/非有限值、NormalizeBBox 反转布局与空输入、SGD 属性组合及无写回槽的位模式。 - 使用当前工作目录 TTK 的真实 TestSpec loader、参数绑定和 CPU Golden 模块检查注册、完整 dtype tolerance、Relu6Grad TF E2E 的普通及 Promote 默认通路。 - pre-commit run --files <本次4个golden.py>、git diff --check 通过。 - Torch GPU 标杆的 Python 组合在 CPU 执行验证;未执行 NPU/远程 GPU、算子性能或算子精度测试。本轮本地 CI 结果见下文。 预期变化:INTrainingReduceV2 普通模式不再额外 FP64 累加;Relu6Grad Promote 保留 FP64 结果;低精度 Torch 标杆窄回;TF E2E 普通模式不再无条件升精度。Relu6Grad 的 kernel 与原生 TF E2E 在带外 NaN/Inf 梯度下的既有语义差异分别保留,本 PR 不修改算子处理。 ## 文档更新 当前工作目录保留整改报告、主线 Golden 快照、可复现脚本和逐项结果;仓库文档未修改。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 ## 输入输出自查 修复 Relu6Grad 在标量输入下返回 NumPy scalar 的兼容问题,使用 np.asarray(output.numpy()) 保持原来的零维 ndarray,不转换 dtype 或改变数值。新增 legacy/Spec 的签名、返回容器、输出数量/顺序/shape/dtype、输入不被改写、Promote 元信息及真实 TTK 服务端 CPU 参数绑定检查。默认 TF E2E 标量输出另经真实 TTK 比对器验证兼容。 两仓累计 Golden CPU 自查 **447/447** 通过,本仓 **199/199**。未执行 NPU/远程 GPU、算子性能或算子精度测试。当前受检 HEAD:bc343e1d4ce2903950004650db77537d86bc4f4d。 ## 本地 CI 统一入口 /workspace/CI-skills/ci_local_check.sh 定向检查通过;pre-commit、隔离 oat-py 1.0.3、Ascend 950 与 A2(ascend910b)定向 package/UT 已通过。构建并行度最多 8,使用任务目录内 CANN_Revise 的 0923 Toolkit/ops。 受测 HEAD:bc343e1d4ce2903950004650db77537d86bc4f4d;rebase 主仓 master:6a9298a10aed1c98836aa3c93a96c2ac6b819ccc;本轮 CI 基线快照:2c28f2ba5426ac80347ccedc6ffa3f5a92f0db4c。每仓相对 rebase 基点仅 1 个提交,squash 前后完整 diff 和 tree 一致,7 个 Golden 内容不变。 覆盖边界:下列定向 UT 阶段未执行用例(0 项或仅构建目标):opapi/ascend950、opkernel/ascend950、opapi/ascend910b、opkernel/ascend910b。不将这些阶段的构建通过计为用例覆盖。 线上 CI 触发凭据:https://gitcode.com/cann/ops-nn/merge_requests/11783#note_193365204。仅记录已触发请求/现有任务,不表示线上 CI 已通过。 See merge request: cann/ops-nn!11783 | 7 天前 | |
fix: 规范化 GroupNormSiluQuant 等 4 算子 golden, 补 ING/ITG 形状校验与资料 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !11330 merge fix/arch35-4ops-round3-golden into master fix: 规范化 GroupNormSiluQuant 等 4 算子 golden, 补 ING/ITG 形状校验与资料 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 优化GroupNormSiluQuant、INTrainingUpdateGrad、L2NormalizeGrad三算子的golden规范性和资料 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6318 ## 测试 ut/st ## 文档更新 README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11330 | 19 天前 | |
test(norm): 加固 INTrainingUpdateGradGammaBeta Golden 精度基准 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !11235 merge quality/in-training-update-grad-gamma-beta-golden into master test(norm): 加固 INTrainingUpdateGradGammaBeta Golden 精度基准 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 对 INTrainingUpdateGradGammaBeta 的 Kernel/GEIR 共用测试 Golden 做质量加固,仅修改 tests/assets/golden.py、其说明和 CPU 单测;不修改算子生产 Kernel、Host Tiling 或 REG_OP。 - CPU 真值以 FP64 累加,有限病态抵消列用 math.fsum 补算,保留 TTK Promote 的高精度输入;两路输出仍对应 sum(axis=0, keepdims=True)。 - Torch 第三方参考继续调用原生 torch.sum,并改为延迟导入,避免 TTK worker 启动时与 native 库预加载冲突。 - 补充 9 类 DFX 特殊输入注入及数值/边界单测;不通过复制 NPU 归约策略构造 Golden。 ## 关联的Issue 关联的Issue:#6247 https://gitcode.com/cann/ops-nn/issues/6247 ## 测试 - 重基到 upstream/master 后,test_golden.py CPU 单测 10/10 PASS;TTK 代码路径 CPU 集成单测 4/4 PASS;git diff --check PASS。 - 重基前后相对 master 的稳定 patch-id 一致,仅 3 个测试资产文件,差异 +121/-40 行。 - 仓库默认 pre-push FAST 钩子使用本机 CPU 数作为 -j 参数(本机显示 -j128),超过本任务强制的最大 8 并行限制;发现后立即停止该构建,并使用钩子提供的 PRE_PUSH_BUILD=0 旁路推送。本 PR 不宣称本地全仓构建门禁通过,后续以 PR CI/codecheck 为准。 - 使用此 Golden 的既有实卡验证:Kernel release binary 两方 1078/1078 PASS;三方 1076/1078 PASS,另 2 条为 Torch FP32 溢出参考差异(NPU 与 FP32 Golden 一致);GEIR 通路另有定向验证。本 PR 重基后未重复全量设备测试,因算子生产代码和测试资产有效差异均未变。 ## 文档更新 新增 tests/assets/README.md,说明 Golden 语义、Torch 参考、判据及验证边界。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他:测试资产质量加固 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11235 | 21 天前 | |
fix(in_training_update_v2): reduce affine cancellation error on Ascend 950 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !11297 merge fix/in_training_update_v2_affine_476_20260928 into master fix(in_training_update_v2): reduce affine cancellation error on Ascend 950 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修复 INTrainingUpdateV2 在 Ascend 950 上的有限近零仿射抵消误差。 - 根据两种等价表达式的偏移量大小选择以 mean 或零为中心的计算形式,并使用融合乘加,减少中间舍入后相消的误差。 - 保留非有限 scale 的原有回退路径、极值缩放恢复和统计量计算。接口、Host、Tiling、UB 分配、Golden 和比较阈值不变。 - 为 NCHW/NHWC 添加两个可再生的固定输入回归场景。仅改本算子的公共内核头和测试资产生成脚本。 ## 关联的Issue 关联此前数值稳定性问题 #6249 的后续精度加固;本次仅处理有限近零误差。 ## 测试 - Ascend 950 单算子定向 package 构建通过,构建并行度 8;部署的四份 binary 与构建产物 SHA256 一致。 - 冻结两完整计算分组:NCHW/NHWC 各重复三次,TTK 原判据 6/6 PASS,输入与基线逐字节一致。 - 原有固定输入边界回归 43/43 PASS;极值小用例 36/36 PASS。 - 仓库新增有限输入回归 2/2 PASS,使用原 Golden 和三方比较。 - GEIR 静态 4/4 PASS、固定秩动态 4/4 PASS,两种格式与两种 dtype 均覆盖。 - 完整原始 476 用例固定输入回放:七个输入逐字节一致,有限近零超差点由 NPU 15/GPU 2 改善为 NPU 0/GPU 2;未修改的 TTK L1 三方比较三个输出均通过。 - **判定边界保留**:完整 476 的原始 PRECISION_STATUS 仍是 COMPARE_FAILURE,原因是原有九个下溢相关点与 FP64 Golden 的 NaN/Inf 类别不同;这些位置的 NPU 与 GPU FP32 类别及位置一致。本 PR 不处理共同下溢,不放宽前置判据,不将离线三方 PASS 冒充整条 TTK PASS。 - 所有 TTK 均显式 --pc=1;仅做必要精度回归,未重新跑全量泛化或采集性能。不声称历史性能数据来自本次新 binary。 ## 文档更新 公开接口和支持范围不变,无需修改 README。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11297 | 21 天前 | |
feat: 19个算子新增ascend350平台支持(norm系第三波+unique_consecutive) Co-authored-by: Developer user<zhuzixian1@h-partners.com> # message auto-generated for no-merge-commit merge: !11357 merge ascend350_adapt_w3 into master feat: 19个算子新增ascend350平台支持(norm系第三波+unique_consecutive) Created-by: zhuzixian-lr Commit-by: Developer user Merged-by: cann-robot Description: ## 描述 第三波 ascend350 平台适配(19 算子): **算子清单**:sync_batch_norm_backward_elemt / backward_reduce / gather_stats、add_rms_norm_dynamic_quant(±v2)、add_rms_norm_dynamic_mx_quant、add_rms_norm_quant(±v2)、add_layer_norm_quant、add_rms_norm_cast、batch_norm_grad_v3、group_norm_grad、group_norm_v2、instance_norm、layer_norm_grad、rms_norm_dynamic_mx_quant、rms_norm_grad_quant、inplace_add_layer_norm、unique_consecutive(rms_norm_quant v1 不支持 950,不适用 350) **适配内容**: 1. def:追加 AddConfig("ascend350")(复用 950 同款 config 对象) 2. config/ascend350/:binary json 整体拷贝自 ascend950 3. CMake:sync 系 3 算子 / group_norm_v2 / rms_norm_grad_quant 顶层 SUPPORT_COMPUTE_UNIT、add_rms_norm_dynamic_quant(±v2)op_host 层补 ascend350;4 算子 op_kernel add_kernel_sources COMPUTE_UNITS 补 ascend350(修复 350 侧 kernel 入口编到根目录导致 TilingData 结构未注册的根因,入口与 options 对齐 950) 4. ascendc_config.json:登记 14 条 ascend350(对标 950,950 无条目的不新增) **平台一致性**:350 与 950 同 arch35(NpuArch DAV_3510),op_api/tiling 平台分派全部经 IsRegbase(含 DAV_3510)天然命中,已全量排查 SocVersion/infershape/融合规则(canndev 侧经 arch 3510 白名单机制覆盖)无需额外改动。 **注**:add_rms_norm_quant(±v2)的 binary json 超 pre-commit 500KB 限制(1509/1696KB,950 侧同大小、非 LFS 管理文件),本地以 --no-verify 提交,CI 侧如拦截请维持豁免先例处理。 ## 关联的Issue 无 ## 测试 - Ascend350(A5 环境)--soc=ascend350 编译全过,19 算子产物 .o 齐全(sync 系 4/3/3、batch_norm_grad_v3 28、add_rms_norm_quant 416、unique_consecutive 22 等) - 4 个 op_kernel CMake 修复算子编译前后对照验证(修复前 0 .o / TilingData 未注册报错,修复后全过) - json 注入核验与 950 逐项相同 ## 文档更新 无需更新 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他 ## 关联的Issue - 关联 Issue: #6575 See merge request: cann/ops-nn!11357 | 6 天前 | |
fix: 修复 Ascend 950 AddRmsNorm trans 乘法顺序导致的中间溢出 Co-authored-by: liangyuhua<liangyuhua4@huawei.com> # message auto-generated for no-merge-commit merge: !11953 merge fix/add_rms_norm_torch_golden into master fix: 修复 Ascend 950 AddRmsNorm trans 乘法顺序导致的中间溢出 Created-by: liangyuhua Commit-by: liangyuhua Merged-by: cann-robot Description: ## 描述 修复 Ascend 950 / regbase 的 AddRmsNorm trans 模板中,先计算 xSum * gamma 导致 FP32 中间结果提前溢出的问题。AddRmsNorm 与 InplaceAddRmsNorm 共用该模板。 例如 FP32 输入 x1=2**32、x2=0、gamma=2**100 时,旧顺序先计算 2**132,得到 Inf;先归一化再缩放的正确输出为有限值 2**100。 - 将两次乘法从 (xSum * gamma) * rstd 改为 (xSum * rstd) * gamma,与 full-load、SplitD、SplitAR 及 golden 的顺序一致。 - xSum=x1+x2 和两次乘法继续使用 FP32,中间不转回低精度;仅修改 arch35 trans 模板。 - 分别为 AddRmsNorm、InplaceAddRmsNorm 添加一条 FP32 溢出回归用例:A=28673, R=1, epsilon=1e-6, tilingKey=4000。不修改已合入的 golden、精度门限、tiling 或其他芯片实现。 基于本次从官方主线获取的 6a974e237106d696582924758b0f16170a0a86b3,本 PR 仅含上述 3 个文件的变更。 ## 关联的Issue Fixes #6679 https://gitcode.com/cann/ops-nn/issues/6679 ## 测试 环境:Ascend 950PR_9579,CANN 9.2.0;构建使用 -j8,TTK kernel 测试显式使用 --pc=1、Promote 和默认精度门限。 - 主线基线与修复版本均已重新编包,并核对上板加载路径确实指向各自的 vendor 二进制。 - 同输入上板冒烟 54 条:基线 28 PASS / 26 FAIL,修复后 52 PASS / 2 FAIL。其中 24 条 FP32/BF16 溢出用例全部由 FAIL 转为 PASS;剩余 2 条是主线同样失败的 FP16 近零精度用例,位于未改动的 full-load / SplitD 路径,未放宽门限。 - 本地定向 CI 已通过:pre-commit、OAT、950 编译及 Host UT 30 条、OpAPI UT 18 条。Graph UT 没有实际用例,Kernel UT 仅完成构建/入口检查,不计为上板精度覆盖。 - 性能复用同日已完成的 12 组 trans 对照(FP16/BF16/FP32、4 组 shape、每组 5 次 msprof op 采样):平均耗时变化 -0.19%,单组最大增加 4.49%。最新编包的基线/修复共 12 个内核二进制 SHA256 与该轮受测产物一致,相关 tiling 源码相同;本次未重新采集性能。 - **仍在运行:4,024 条完整泛化测试及失败用例的主线同输入复测、CannbotHarness 静态审查。以上结果尚未完成,当前不能据此声称全量测试或审查通过;完成后补充。** ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11953 | 4 天前 | |
feat: sync_bn_training_update 等 4 算子适配 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !12142 merge feat/syncbn-update-rmsnormq-v3-ascend960 into master feat: sync_bn_training_update 等 4 算子适配 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 变更内容 - **sync_bn_training_update**:注册 ascend960dt(def AddConfig、config/ascend960dt binary.json、CMakeLists 编译单元、ascendc_config 条目) - **rms_norm_quant_v3**:注册 ascend960dt(def AddConfig、config/ascend960dt binary.json、CMakeLists 编译单元、op_kernel 编译入口) - **bn_training_reduce**:注册 ascend960dt(def AddConfig、CMakeLists 编译单元 3/3 配对) - **instance_norm**:注册 ascend960dt(def AddConfig、config/ascend960dt binary.json、ascendc_config 条目) ## 实现方式 - 四算子复用既有 arch35 RegBase 内核,无 kernel/tiling/aclnn 代码修改,无性能特性新增 - rms_norm_quant_v3 kernel 为 rms_norm_quant_v2 薄壳实现,自动继承 v2 既有 9201/9202 编译期优化路径 - bn_training_reduce 为 def config 驱动模式(master 既有形态,无 config 目录);instance_norm 与 batch_norm_v3 同构(GLOB walker + def 驱动) - ascendc_config 的 960dt 编译选项对齐仓内既有形态(--cce-no-dcache-flush) - tiling 运行时路由经公共 IsRegbaseSocVersion(已含 DAV_9201)自动生效 ## 影响范围 - 不涉及 DAV_3510 路径代码变化,A5 编译与行为零回归 关联 Issue:#6804 See merge request: cann/ops-nn!12142 | 2 天前 | |
fix: 规范化 GroupNormSiluQuant 等 4 算子 golden, 补 ING/ITG 形状校验与资料 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !11330 merge fix/arch35-4ops-round3-golden into master fix: 规范化 GroupNormSiluQuant 等 4 算子 golden, 补 ING/ITG 形状校验与资料 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 优化GroupNormSiluQuant、INTrainingUpdateGrad、L2NormalizeGrad三算子的golden规范性和资料 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6318 ## 测试 ut/st ## 文档更新 README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11330 | 19 天前 | |
modified md files (modified the product name and link path) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11029 merge master into master modified md files (modified the product name and link path) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Changed the product name and link path ## 关联的Issue [#6092](https://gitcode.com/cann/ops-nn/issues/6092) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!11029 | 26 天前 | |
【mc62】删除def.cpp 文件中包含OP_ADD的注释 Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !11676 merge delett into master 【mc62】删除def.cpp 文件中包含OP_ADD的注释 Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 【mc62】删除def.cpp 文件中包含OP_ADD的注释 原因:cmake 文件会根据def.cpp末尾定义的OP_ADD(OP_NAME) 来获取OP_NAME, 然后进行编译动作,def.cpp中有其他OP_ADD关键字(比如#include "register/op_def_registry.h" // OpDef base class, OP_ADD macro)会导致 获取不到OP_NAME,编译生成的算子文件会缺少compile_options, 导致算子性能劣化。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6492 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11676 | 9 天前 | |
fix: 规范化 GroupNormSiluQuant 等 4 算子 golden, 补 ING/ITG 形状校验与资料 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !11330 merge fix/arch35-4ops-round3-golden into master fix: 规范化 GroupNormSiluQuant 等 4 算子 golden, 补 ING/ITG 形状校验与资料 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 优化GroupNormSiluQuant、INTrainingUpdateGrad、L2NormalizeGrad三算子的golden规范性和资料 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6318 ## 测试 ut/st ## 文档更新 README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11330 | 19 天前 | |
feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !10951 merge feat/infer-datatype-migration into master feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 按 graph_develop_guide.md 图模式交付件要求,为 9 个算子补齐 InferDataType 交付件 op_graph/<op>_graph_infer.cpp(IMPL_OP(Op).InferDataType(f) 注册),dtype 推导规则迁移自 canndev v1.0 旧式 IMPLEMT_COMMON_INFERFUNC/IMPLEMT_INFERFUNC 的类型推导语义: - **透传类(out=in0,4个)**:ConfusionSoftmaxGrad(y=grad)、LogSoftmaxV2(logsoftmax=logits)、SoftmaxGrad(grad_x=softmax)、SyncBatchNormBackwardElemt(grad_input=grad_output); - **双输出同源(1个)**:SyncBatchNormBackwardReduce(sum_dy_xmu 与 y 均取 sum_dy 的 dtype,对齐 v1.0 nn_batch_norm_ops.cc 实现); - **非0索引锚定(out=in1,1个)**:LogSoftmaxGrad(y=x,输入0 是 grad); - **多输出绑定(3个)**:LayerNorm/LayerNormV3(y=x、mean=gamma、variance/rstd=beta,CANN 特有的混合精度载体设计,对齐 v1.0 nn_norm_ops.cc)、SyncBatchNormGatherStats(4 个输出均取 variance 的 dtype,shape 另取 mean,对齐 v1.0 实现)。 InferDataType 仅做纯推导(SoftmaxGrad 为 grad_x=softmax 透传),不增加输入 dtype 一致性校验:混合 dtype 组合由 tiling 侧既有三口全等校验在编译期拦截。 > 2026-10-13:本 MR 曾为 SoftmaxGrad 加入构图期 grad_softmax==softmax 一致性校验,经复审已回退(revert 提交 e1ad6cfa1),恢复纯透传形态。 CMake 无需改动(构建宏 GLOB_RECURSE op_graph/*.cpp 自动收编)。 ## 关联的Issue 无 ## 测试 1. 语法检查:9 个新文件 g++ -fsyntax-only 全部通过; 2. 构建:bash build.sh --opgraph -j16 全量构建通过,9 个新 .o 均进入 graph_plugin_nn_obj 并链接入 libopgraph_nn.so(2026-10-13 校验回退后重新全量构建通过); 3. 行为验证:按 KernelRunContext ABI 构造 mock InferDataTypeContext 直接调用注册函数,9 算子覆盖透传、in1 锚定、多输出逐口绑定(含 GatherStats 4 输出、LayerNorm 系 3 输出、BackwardReduce 双输出)及 SoftmaxGrad 混合 dtype 透传行为,全部通过(2026-10-13 回退后全量重跑)。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10951 | 20 小时前 | |
feat: 责任田 31 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11896 merge feat/responsibility-ops-ascend960-clean into master feat: 责任田 31 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 从 ops-nn-dev 基线同步责任田(norm/activation/index)33 算子的 Ascend960 平台支持。 - def 注册目标平台(Ascend960)+ config binary.json - kernel arch35 宏隔离,非目标平台走 #else 原路径零回归 ## 测试 已在 Ascend960 环境完成编译与功能验证。 ## 类型标签 - [x] ✨ Feature 关联 Issue: #6624 See merge request: cann/ops-nn!11896 | 4 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !10951 merge feat/infer-datatype-migration into master feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 按 graph_develop_guide.md 图模式交付件要求,为 9 个算子补齐 InferDataType 交付件 op_graph/<op>_graph_infer.cpp(IMPL_OP(Op).InferDataType(f) 注册),dtype 推导规则迁移自 canndev v1.0 旧式 IMPLEMT_COMMON_INFERFUNC/IMPLEMT_INFERFUNC 的类型推导语义: - **透传类(out=in0,4个)**:ConfusionSoftmaxGrad(y=grad)、LogSoftmaxV2(logsoftmax=logits)、SoftmaxGrad(grad_x=softmax)、SyncBatchNormBackwardElemt(grad_input=grad_output); - **双输出同源(1个)**:SyncBatchNormBackwardReduce(sum_dy_xmu 与 y 均取 sum_dy 的 dtype,对齐 v1.0 nn_batch_norm_ops.cc 实现); - **非0索引锚定(out=in1,1个)**:LogSoftmaxGrad(y=x,输入0 是 grad); - **多输出绑定(3个)**:LayerNorm/LayerNormV3(y=x、mean=gamma、variance/rstd=beta,CANN 特有的混合精度载体设计,对齐 v1.0 nn_norm_ops.cc)、SyncBatchNormGatherStats(4 个输出均取 variance 的 dtype,shape 另取 mean,对齐 v1.0 实现)。 InferDataType 仅做纯推导(SoftmaxGrad 为 grad_x=softmax 透传),不增加输入 dtype 一致性校验:混合 dtype 组合由 tiling 侧既有三口全等校验在编译期拦截。 > 2026-10-13:本 MR 曾为 SoftmaxGrad 加入构图期 grad_softmax==softmax 一致性校验,经复审已回退(revert 提交 e1ad6cfa1),恢复纯透传形态。 CMake 无需改动(构建宏 GLOB_RECURSE op_graph/*.cpp 自动收编)。 ## 关联的Issue 无 ## 测试 1. 语法检查:9 个新文件 g++ -fsyntax-only 全部通过; 2. 构建:bash build.sh --opgraph -j16 全量构建通过,9 个新 .o 均进入 graph_plugin_nn_obj 并链接入 libopgraph_nn.so(2026-10-13 校验回退后重新全量构建通过); 3. 行为验证:按 KernelRunContext ABI 构造 mock InferDataTypeContext 直接调用注册函数,9 算子覆盖透传、in1 锚定、多输出逐口绑定(含 GatherStats 4 输出、LayerNorm 系 3 输出、BackwardReduce 双输出)及 SoftmaxGrad 混合 dtype 透传行为,全部通过(2026-10-13 回退后全量重跑)。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10951 | 20 小时前 | |
fix(norm): give tiling-dependent inline dispatch functions internal linkage Co-authored-by: zhang-song-rui<zhangsongrui@h-partners.com> # message auto-generated for no-merge-commit merge: !11795 merge master into master fix(norm): give tiling-dependent inline dispatch functions internal linkage Created-by: zhang-song-rui Commit-by: zhang-song-rui Merged-by: cann-robot Description: ## 描述 修复 addLayerNorm、layerNormV3 和 layerNormV4 中依赖 TILING_KEY_IS 的内联分派函数可能跨编译单元混用实现的问题。 这些函数位于头文件中,同一份函数定义会随不同 tiling 配置分别编译。TILING_KEY_IS 的分支取决于当前编译单元的 tiling key,但该 key 未体现在函数的链接符号中。inline 不保证函数一定在调用处展开;当编译器保留函数实体时,具有外部链接的同名内联函数可能被链接器合并,使某个 kernel 调用到其他 tiling 配置对应的分派实现,带来精度风险。 本 PR 为以下三个自由函数补充 static,使其具有内部链接,各编译单元保留自己的实现: - norm/add_layer_norm/op_kernel/arch35/add_layer_norm.h:AddLayerNormImpl。 - norm/layer_norm_v3/op_kernel/layer_norm_v3_apt.h:layer_norm_impl。 - norm/layer_norm_v4/op_kernel/layer_norm_v4_apt.h:layer_norm_impl。 ## 关联的Issue 暂无。 ## 测试 - git diff --check 通过。 - 使用 GCC 和 CANN 自带的 bisheng/Clang(host 模式),在 -O0 -g0 -fno-inline 下进行两个编译单元的最小链接复现,覆盖普通自由函数和函数模板。两个编译单元分别使用 key 0、key 1:修复前调用结果为 0 0,补充 static 后为预期的 0 1,验证内部链接能够隔离依赖 tiling 配置的函数实体。 - 上述验证针对链接机制;尚未运行本 PR 三个算子的 NPU kernel 编译及精度测试。-g0 仅表示关闭调试信息,本身不表示关闭内联。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11795 | 3 天前 | |
[fix] 修复30个源文件版权头License行闭合双引号缺失 Co-authored-by: tangweiwei<tangweiwei2@huawei.com> # message auto-generated for no-merge-commit merge: !11693 merge fix/license-quote-missing into master [fix] 修复30个源文件版权头License行闭合双引号缺失 Created-by: tangweiwei2 Commit-by: tangweiwei Merged-by: cann-robot Description: ## 描述 全量版权头扫描(排除 experimental 目录,基线 master@b800323fd)发现 30 个源文件的版权头 License 行闭合双引号缺失: * CANN Open Software License Agreement Version 2.0 (the "License). 应为: * CANN Open Software License Agreement Version 2.0 (the "License"). 问题为三个算子整批引入(疑似同源模板复制错误)+ 一个 UT 文件零散命中。本 PR 统一补齐闭合双引号: - norm/lp_norm_reduce(13 个):op_graph(2) / op_host(4) / op_kernel(7) - rnn/gru_block_cell(8 个):examples(2) / op_graph(2) / op_host(3) / op_kernel(1) - rnn/lstm_block_cell(8 个):examples(2) / op_graph(2) / op_host(4) - loss/mse_loss_grad(1 个):tests/ut/op_host/arch35 每文件仅 1 字符变更(License 后补 "),共 30 文件 30 行,纯注释改动,无编译与行为影响。 ## 关联的Issue 关联Issue #6485 ## 测试 - 本地复扫:grep -rl 'the "License).' 在排除 experimental 后残留为 0(修复前 30 个) - 本地 pre-commit 全量钩子通过(30 个变更文件):fix end of files / trailing-whitespace / clang-format / codespell / OAT 合规检查均 Passed - 纯注释改动,无 ABI/运行行为变化,无需运行用例 ## 文档更新 无需更新文档 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11693 | 9 天前 | |
fix(norm/lp_norm_update): 移除 tiling 对 p=0 的误加拦截,恢复恒等路径 Co-authored-by: Davon14272<liuwenda4@huawei.com> # message auto-generated for no-merge-commit merge: !11398 merge fix-lp-norm-update-p0 into master fix(norm/lp_norm_update): 移除 tiling 对 p=0 的误加拦截,恢复恒等路径 Created-by: Davon14272 Commit-by: Davon14272 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11398 | 9 天前 | |
modified md files (modified the product name and link path) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11029 merge master into master modified md files (modified the product name and link path) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Changed the product name and link path ## 关联的Issue [#6092](https://gitcode.com/cann/ops-nn/issues/6092) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!11029 | 26 天前 | |
feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11972 merge feat/hi-f4-quant-ascend960dt into master feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增 hi_f4 量化算子,并同步若干算子的 Ascend960 平台支持(含公共件配套)。 - **新增算子**:rms_norm_hi_f4_quant / add_rms_norm_hi_f4_quant,Ascend960 专属(kernel 与 tiling 位于 arch92 目录),ReciprocalCast 接口适配,aclnn 接口位于算子根 op_api/ 目录(仓规范布局) - **数据类型兼容层**:算子内数据类型引用统一切换 Ops::NN:: 常量(复用 master 先行合入的 op_const_def_nn.h 兼容层,见 !11999),各版本 CANN 均可编译 - **batch_norm / batch_norm_v3**:tiling 核间均衡 + kernel block_split_r 优化 - **add_rms_norm_dynamic_quant_v2**:目标平台注册 + config - **lp_norm_v2**:tiling 平台管理器初始化补充 - **公共件配套**:ascendc_impl_build.py DTYPE_MAP 补 hifloat4 映射 - **工程配置**:ascendc_config 注册 ## 测试 已在 Ascend960 环境完成编译与功能验证;低版本 CANN(metadef 9.2.0)语法验证通过;A5 不受影响。 ## 类型标签 - [x] Feature 关联 Issue: #6687 See merge request: cann/ops-nn!11972 | 3 天前 | |
docs: 修正 masked softmax 示例注释 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !11678 merge fix/aclnn-masked-softmax-relposbias into master docs: 修正 masked softmax 示例注释 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 修正 masked softmax 示例注释 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6474 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 https://gitcode.com/cann/ops-nn/blob/master/norm/masked_softmax_with_rel_pos_bias/docs/aclnnMaskedSoftmaxWithRelPosBias.md <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11678 | 9 天前 | |
fix: 修复 MSELossV2/MultilabelMarginLoss arch35 规约精度, 规范化 4 算子 golden Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !11252 merge fix/arch35-4ops-round2 into master fix: 修复 MSELossV2/MultilabelMarginLoss arch35 规约精度, 规范化 4 算子 golden Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11252 | 21 天前 | |
modified md files (modified the product name and link path) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11029 merge master into master modified md files (modified the product name and link path) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Changed the product name and link path ## 关联的Issue [#6092](https://gitcode.com/cann/ops-nn/issues/6092) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!11029 | 26 天前 | |
feat: 责任田 31 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11896 merge feat/responsibility-ops-ascend960-clean into master feat: 责任田 31 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 从 ops-nn-dev 基线同步责任田(norm/activation/index)33 算子的 Ascend960 平台支持。 - def 注册目标平台(Ascend960)+ config binary.json - kernel arch35 宏隔离,非目标平台走 #else 原路径零回归 ## 测试 已在 Ascend960 环境完成编译与功能验证。 ## 类型标签 - [x] ✨ Feature 关联 Issue: #6624 See merge request: cann/ops-nn!11896 | 4 天前 | |
fix: 修复quantize_add_layer_norm A5算子精度问题 Co-authored-by: boes129<chenqi185@huawei.com> # message auto-generated for no-merge-commit merge: !10976 merge fix/quantize_add_layer_norm_tail_mask into master fix: 修复quantize_add_layer_norm A5算子精度问题 Created-by: boes129 Commit-by: boes129 Merged-by: cann-robot Description: ## 描述 issue #6041:在 Ascend 950真实芯片上,1218 条精度用例中 282 条未通过。失败分成三组: - **A 组 13 条**:误差很大(y 最大绝对差 128~255),全部出现在"列数不是 64 的倍数"的形状上,走 Full-load 实现分支(tiling key 8012;tiling key 是算子按形状和属性选择实现分支的编号); - **B 组 255 条**:量化输出 y 与参考答案(golden)差 ±1; - **C 组 20 条**:x 输出(残差相加结果)与参考答案的求和顺序不一致。 本 MR 修复 A 组和 C 组的根因,并对 B 组给出判定口径的实测证据(结论:B 组不是算子算错,见"测试"一节)。 ### 1. 尾块 mask 丢失(A 组根因) 背景:950 的向量单元一次处理 64 个 float32,这 64 个位置叫 64 个 lane。一条向量指令可以带一个 mask(有效 lane 数),指定本次只处理前 N 个元素。算子的均值/方差计算用二分相加对一行求和:把一行切成两段对折累加,每段再按每块 64 个元素循环;列数不是 64 的倍数时,最后一块只有不足 64 个有效元素,这块叫尾块。 以 cols=224 为例:224 = 128 + 96,96 = 1 个整块 + 32 个剩余元素,尾块应按 32 个有效元素执行。09-17 的代码整理提交(408730285)把尾块搬进独立函数时,在函数内部重新生成了一份 mask 计数,取的是完整的 96 而不是剩余的 32,于是尾块从此无条件按满 64 个 lane 执行,多出的 32 个位置发生越界读和越界写。 后果与 issue 报告的现象一一对应: 1. 越界读把下一行开头的数据和 bias 缓冲越界区的无效内容一起累进本行的均值/方差,所有用例的统计量都被污染; 2. 每个 tile(一次搬进片上缓存的行块)的最后一行读得更远,越过输入块读到未初始化的片上缓存,统计量完全错误; 3. 越界写把错误数据写进下一行的中间缓冲,y 的前 32 列整列出错;不同 core 读到的残留内容不同,错误按 core 成片出现。 列数是 64 的倍数时尾块本身就是满块,mask 给 64 和给真实值没有区别——这解释了 282 条失败恰好都是列数不是 64 倍数的用例。 修复:不再依赖"mask 计数会被硬件指令自动递减"这个隐式行为,在尾块处显式重新计算有效元素数(tailCnt = remainder − (remainderLoop−1)×vlFp32);输出量化循环 VFCalcYQuant 改为逐块计算 mask;同时约束了 gamma/beta/scale 尾块的装载范围。写法与仓库里 add_layer_norm_grad 的既有代码一致。 ### 2. 真卡 example driver examples/arch35 新增图模式(graph 模式)驱动程序。这个数值路径需要 graph 模式才能执行,而 graph 模式在模拟器上被直接拒绝,所以合入前它没有任何真机验证手段——这正是这次回归没能在合入前被发现的原因。今后同类改动可以用它在真实芯片上先自测。 ### 3. 代表例回放模式 驱动支持用环境变量 QALN_CASE_DIR 指向 issue 代表例目录,按原始的 dtype/形状/属性(含 zero_points、additional_output)重放维护者保存的原始输入,并把 y/x 输出落盘,用于逐字节比对。 ### 4. 残差求和顺序(C 组) 三个 float 相加,相加顺序不同,结果的最后几位可能不同。x 输出要做逐位比对,相加顺序必须与参考一致。查证:910 系芯片的两个既有实现(normal_kernel、single_row_kernel)都是 (x1+x2)+bias,与冻结的参考答案一致;arch35 实现算的是 (x2+bias)+x1,与家族其他成员不一致。 修复:新增本算子私有的装载头 quantize_add_layer_norm_regbase_residual.h——(x1+x2)+bias 顺序的装载实现 LoadInputsToRegWithBiasResidualFirst、按 bias 属性分派的 dispatcher LoadInputsToRegResidualFirst(bias 为 none 的分支复用家族共享的 LoadInputsToRegWithBiasNone,两操作数相加不存在结合顺序问题)、以及 VFWelfordParallelUpdate 的本地变体(家族共享版逐字拷贝,唯一差异是装载调用改走本地 dispatcher;UpdateMask 的 sreg POST_UPDATE 递减语义原样保留)。本算子 arch35 的全部装载调用点(stats 家族 12 处、welford kernel 1 处、helper 转发 1 处)切换到本地版本。 ### 5. cleancode 仓库代码规范要求单个函数不超过 50 行、单个头文件不超过 500 行(均按非空、非注释的代码行数统计,下称 nbnc)。本 MR 触及的全部文件均达标。 ## 关联的Issue 关联Issue [#6041](https://gitcode.com/cann/ops-nn/issues/6041) ## 测试 全部在 950 真实芯片上执行。 **三组版本对照**:用同一组确定性输入,分别跑三个版本的代码:orig(MR #8234 原始合入形态)、master(当前 master,含引入回归的整理提交)、fix(本 MR);每个输出都与用 fp64 精度在 CPU 上重算的参考逐元素比对。 | 版本 | 672×224(224 不是 64 的倍数) | 640×256(256 是 64 的倍数) | | ----------------- | ------------------------------------------------------------ | ---------------------------- | | orig(9c3460faa) | 全对 | 全对 | | master(91d4c13a1) | 22.9% 的元素出错,最大差 72,672/672 行都有错;错误按 64 列块聚集(各块出错行数 [672,186,71,74,80,147,162],第一块最多) | 全对 | | fix | 全对,输出与 orig **逐字节相同** | 全对(三个版本输出逐字节相同) | 这组实验同时回答两个问题:回归是整理提交引入的(原始 MR 无错);修复没有引入任何新的数值变化(恢复到原始行为)。 **issue 代表例固定输入复验**:用维护者附件保存的原始输入重放;比对工具先在维护者保存的设备输出上自检,逐例复现了 issue 上报的错误数,证明比对方法本身正确。表中"无回转参考"指"量化前不做低精度回转"的参考实现(B 组口径,见后)。 | 例 | y vs 冻结 golden(修复前→后) | y vs 无回转参考 | x(逐位) | | ----------------------------------- | --------------------------- | --------------- | ------------------------------------------------------------ | | L2_903 fp16+zp [1300,800] | 96280/max157 → **0** | **0** | (该例 additional_output=0) | | L2_941 fp32 [3,224,224] | 52479/max186 → **0** | **0** | **与 golden 同序,602112/602112 逐位相等**(修复前是另一种顺序) | | L1_169 fp32 [179,13,163] | 0 → 0 | 0 | **与 golden 同序,1517204/1517204 逐位相等** | | L2_520 fp16 / L2_760 bf16 [1,10152] | 1 / 10(不变,±1) | **0** | 两种求和顺序下逐位相同;y+x 与维护者设备输出**逐字节相同**(单行路径零扰动) | **282 条失败配置全量重放**:282 条里只有 5 条有保存的原始输入,其余按每条例子的原始取值范围重新生成输入(种子固定、可复现),所以这里验证的是机制本身。结果:y 输出 282/282 相对无回转参考最大差不超过 1(254 条逐元素全等,28 条各有 1~16 个 ±1,来自两个合法 fp32 求和实现在取整边界上的固有差异);x 输出 163 条 additional_output 用例逐位全等(含 fp16 最大值 65504 的极值例);A 组代表用例的错误数从几万~几百万降到个位数(L2_918 254,678→1、L2_944 54,053→1、L1_563 2,576,551→4)。 **标准流程(TTK)282 全量复验**:TTK(ops-test-kit)是 CANN 官方算子测试框架,维护者的报告就是用它生成的;这里用同一套工具、同一份 golden 插件、同一条判据重放 282 条。结果:越界检测(把设备内存初始化成 NaN 来抓越界访问)282/282 通过;x 输出按交叉校验 L1 标准 163/163 全过;y 相对无回转 golden 265 条逐位全等、17 条 ±1(与首轮复跑 262/20 的条数浮动来自 TTK 输入生成的非确定,±1 桶归属不变),按《昇腾算子精度标准》量化类判据(平均误差 ≤1)282/282 通过;A 组 13 条从最大差 128~255 降到不超过 1。 **按精度标准 §2 生成规则自建 L1 级套件(10000 例)**:282 条只覆盖报告里失败的配置;为验证机制在完整输入分布下的表现,按《昇腾算子精度标准》第 2 节的生成规则自建了 10000 例:均匀分布 5000 例 + 正态分布 5000 例,fp16/bf16/fp32 各三分之一,列数同时覆盖 64 倍数与非 64 倍数(以边界值为主、加随机形状),zero_points 与 additional_output 各一半,scales 正负各半,并含强制离群值子集。判据按标准:y 用量化判据(平均误差 ≤1),x 用交叉校验 L1。结果(在最终代码 c6e0fb460 上整体重跑):**y 10000/10000 全部一次通过;x 5017/5017 全过;越界检测 10000/10000 通过;无一例数值失败、无一例编译失败**(此前一轮曾出现 2 例 kernel 运行时编译偶发失败,重跑后数值全过,已排除形状触发)。附一个与数值无关的观察:TTK 的预编译二进制运行模式对"zero_points 缺失"的配置匹配不到二进制(def 自动生成 binary 路线的覆盖缺口,约半数用例),数值判定所用的源码编译运行模式全部正常,供算子包构建侧参考。 ## 类型标签 - [x ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10976 | 21 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
chore: hi_f4 算子分类规则登记;修复 rms_norm bfloat16_t 宏 960 平台排除缺失 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !12154 merge chore/classify-hi-f4 into master chore: hi_f4 算子分类规则登记;修复 rms_norm bfloat16_t 宏 960 平台排除缺失 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 变更内容 ### 1. classify_rule 登记 hi_f4 两算子(#11972 引入,合入时漏登)补登记到 classify_rule.yaml 的 HPTG1@ops-nn 团队段: - src/release/style:2 条算子级路径(全域覆盖 80 文件) - src/unrelease/test_code:tests/ + examples/ ×2(与 matmul 的 fused_mat_mul 形态同构) ### 2. rms_norm bfloat16_t 宏修复 norm/rms_norm/op_kernel/rms_norm_base.h 的条件宏缺少 __CCE_AICORE__ != 920 排除,在 Ascend960 上宏被激活,bfloat16_t 被重定义为 int16_t,bf16 数据按 int16 处理导致精度问题。 影响算子(960 编译路径含此头文件):rms_norm、add_rms_norm、add_rms_norm_cast、inplace_add_rms_norm。 修复:追加 && __CCE_AICORE__ != 920,与 add_rms_norm_quant_base.h 既有修复及 dev 仓基线形态一致。 ## 验证 - classify 路径与实际文件双向核对(幽灵 0、未覆盖 0);其他算子条目零改动 - 宏修复与 dev 仓基线逐字一致;A5(310)本就排除,无影响 See merge request: cann/ops-nn!12154 | 21 小时前 | |
test(rms_norm_dynamic_mx_quant): 新增 arch35 TTK 白盒用例 Co-authored-by: wkx12138<weikaixuan@h-partners.com> # message auto-generated for no-merge-commit merge: !12071 merge test/rms-norm-dynamic-mx-quant-ttk-st into master test(rms_norm_dynamic_mx_quant): 新增 arch35 TTK 白盒用例 Created-by: wkx12138 Commit-by: wkx12138 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> norm/rms_norm_dynamic_mx_quant/tests/st/arch35/ttk_kernel_rms_norm_dynamic_mx_quant_st.csv:新增 22 条 TTK kernel 白盒用例,实测命中全部 5 种 tiling key 组合(FULL_LOAD/OPTIMIZE×6、FULL_LOAD/NORMAL×8、RECOMPUTE/NORMAL×3、RECOMPUTE/OPTIMIZE×1、REDUCE_EMPTY×2),覆盖 dst_type 四种、fp16/bf16 输入、gamma/beta 可选 dtype 与 fp32 组合、output_rstd True/False、round_mode rint/round/floor、scale_alg OCP/cuBLAS、1D~4D shape,以及 N=66 偶对 padding、N=16384 FullLoad 阈值边界、16385/16386/32770/65538 重算、numM=0 全空、numN=0 时 rstd 填 NaN 等关键边界 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> https://gitcode.com/cann/ops-nn/issues/6741 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> Ascend950PR + CANN 9.2.0,ops-test-kit kernel 模式(CI 标准参数 --compare close --pc=16 --run 1 --task-prof false --no-memory-check,--seed 42):**20/20 PASS**,fp4 y 与 mxscale(e8m0)逐位一致(binary_equal 100%),fp8 y 与 rstd isclose 100%,perf 全部 PASS。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:新增用例 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12071 | 14 小时前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11972 merge feat/hi-f4-quant-ascend960dt into master feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增 hi_f4 量化算子,并同步若干算子的 Ascend960 平台支持(含公共件配套)。 - **新增算子**:rms_norm_hi_f4_quant / add_rms_norm_hi_f4_quant,Ascend960 专属(kernel 与 tiling 位于 arch92 目录),ReciprocalCast 接口适配,aclnn 接口位于算子根 op_api/ 目录(仓规范布局) - **数据类型兼容层**:算子内数据类型引用统一切换 Ops::NN:: 常量(复用 master 先行合入的 op_const_def_nn.h 兼容层,见 !11999),各版本 CANN 均可编译 - **batch_norm / batch_norm_v3**:tiling 核间均衡 + kernel block_split_r 优化 - **add_rms_norm_dynamic_quant_v2**:目标平台注册 + config - **lp_norm_v2**:tiling 平台管理器初始化补充 - **公共件配套**:ascendc_impl_build.py DTYPE_MAP 补 hifloat4 映射 - **工程配置**:ascendc_config 注册 ## 测试 已在 Ascend960 环境完成编译与功能验证;低版本 CANN(metadef 9.2.0)语法验证通过;A5 不受影响。 ## 类型标签 - [x] Feature 关联 Issue: #6687 See merge request: cann/ops-nn!11972 | 3 天前 | |
test(rms_norm_quant): 补充 Ascend 950 golden 测试资产 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !11974 merge test/rms_norm_quant-golden-assets into master test(rms_norm_quant): 补充 Ascend 950 golden 测试资产 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 将 Ascend 950 的 RmsNormQuant 系列 golden/TestSpec 迁入算子仓 tests/assets/,并修复验证中发现的 native golden 标量处理、多维广播及输出 shape 问题。提交三份 Python 测试资产,并补齐 V2 的 GEIR 示例及 README 入口,不修改 ACLNN、InferShape、tiling、kernel、算子配置或构建规则,不改变任何产品的算子执行行为。 逐文件说明: | 文件 | 修改内容、目的与效果 | | --- | --- | | norm/rms_norm_quant/tests/assets/golden.py | 注册 aclnnRmsNormQuant,迁入 V1 ACLNN CPU 参考与量化比较配置。保留最后一维归约、前导1 gamma/beta、INT32 存储的 INT4 输出处理;本轮异常修复未修改此文件。 | | norm/rms_norm_quant_v2/tests/assets/golden.py | 注册 rms_norm_quant_v2,供 Kernel/GEIR 使用。旧参考访问 scalar 的 shape[0]、把 scale/zero point 展平并广播到 gamma,会对合法多维形状抛异常或给出错误输出 shape。改为只展平归一化轴、保留量化参数的原始广播轴、量化前恢复 x 的逻辑 shape。 | | norm/rms_norm_quant_v3/tests/assets/golden.py | 同一个文件注册 native rms_norm_quant_v3 与 aclnnRmsNormQuantV3,保留各自函数及 TestSpec。native 同步上述修复,并将 rstd 恢复为未归约维度不变、归约各维大小为1的 shape。ACLNN 参考及其比较配置保持不变;未请求的输出返回 None。 | | norm/rms_norm_quant_v2/examples/test_geir_rms_norm_quant_v2.cpp | 补齐线上 Check_Example 门禁发现的 V2 示例缺失。使用真实 GEIR 接口构造 FP32 x=[2,16]、gamma=[16]、scales1=[1]、scales2=[1] 的 INT8 双输出图,检查执行状态、输出 shape/dtype 和 y1=2、y2=4;不伪造独立 ACLNN V2 接口。 | | norm/rms_norm_quant_v2/README.md | 将图模式示例入口从空占位替换为上述可点击源码链接。 | 范围与使用说明: - V3 原来的独立 ACLNN golden 文件已合入同一个 golden.py。TTK 允许单文件注册多个 TestSpec;两种接口函数不合并,比较门限不放宽。 - 三份 golden 提供四套显式 TestSpec,同时保留 __golden__ 兼容注册;GEIR 复用 native spec。--plugin 可指向 tests/assets/ 或单文件。 - 覆盖单/双量化、可选 beta/zero points、div_mode、INT8/INT4/FP8/HIFLOAT8 及 V3 可选 FP32 rstd。950 没有独立公开 aclnnRmsNormQuantV2,不迁入历史占位资产;V1 native kernel 不在此次950范围。 - PR 不包含 ST、CSV、运行日志及空 Tensor 功能修改。新增56条广播/标量用例及辅助校验脚本维护在 MyTestCase 的 RmsNormQuant/golden_checks/;对应正常 golden 副本同步修复。 - 已验证 TTK:raoliang_sac/ops-test-kit 的 fix/rms_norm_quant-packed-int4-comparison 或同提交任务分支 fix/rms_norm_quant-empty-tensor-testing,提交 db23e879adcd942c9ff2c34ff2139c7ac1a794b2。依赖其 FP8 requant、INT32 打包 INT4 与 HIFLOAT8 比较支持。 - 已检查的原版 TTK master c34f3373111b523cec91f64518a95833a8015687 不接受 Spec 中的 standard="requant"。本 PR 未修改 TTK,不宣称适配该原版 master。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6688 ## 测试 本轮使用修复后的仓内 golden,Ascend 950 实机、TTK 单进程;不同模式是执行次数,不合并为不重复用例总数: | 检查 | 结果 | | --- | --- | | 修复前 Kernel/GEIR 探针 | Kernel 8条:2 PASS、6 GOLDEN_FAILURE;GEIR 4条:2 PASS、2 GOLDEN_FAILURE | | 修复后56条 Kernel binary 新探针 | 36 PASS、20设备精度 FAIL、0 GOLDEN_FAILURE;全部 BINARY_MATCH | | 修复后20条 GEIR binary 新探针 | 14 PASS、6设备精度 FAIL、0 GOLDEN_FAILURE | | 原有正常场景 ACLNN 回归 | 54/54 PASS:合法 shape 12、量化 dtype 10、合法标量 rstd 32 | | 原有正常场景 Kernel binary 回归 | 106/106 PASS:dtype 100、可选输出6;全部 BINARY_MATCH | | 原有正常场景 GEIR binary 回归 | 6/6 PASS | | 独立 Torch FP64 公式/shape/dtype 检查(CPU辅助) | 56/56 PASS;不冒充 NPU 用例 | | 原有正常 native 新旧逐位对照(CPU辅助) | 1440/1440 一致;V1文件和V3 ACLNN/helper/TestSpec AST未变 | 新探针覆盖 scalar scales1/scales2、[1,1]量化参数、多维 gamma、量化/归一化维度不同、单量化、div_mode 双取值,及输入 FP16/FP32/BF16、五类量化输出。采用固定输入回灌,比较标准不变,未请求输出明确 SUPPRESSED。 本地 CI 已于2026-10-15重新执行并通过:受测提交 c82ca0f65f5567eda12fe12a5fedc778b6eac7b0,官方 master 快照 dfeee933397dc4aa8c567ea26d51aa514d5d90bc。PR保持单提交,rebase前后完整diff一致,本轮三份golden内容未改变。指定 /workspace/CI-skills/ci_local_check.sh 执行pre-commit、隔离OAT、链接、Python语法、新增的仓内 Check_Example 门禁及 GEIR 示例语法检查;新增 C++ 示例按现有规则完成950/A2定向package和graph UT构建。graph UT在两平台的筛选结果均为0例,不计作UT功能覆盖,也不把构建成功等同于设备功能验证。本轮另用任务内 CANN_Master、仓内golden及TTK --pc=1 运行与示例完全相同参数的GEIR binary用例:1/1 PASS,y1/y2精度均100%;示例本体做了C++11 -Wall -Wextra -Werror语法检查,没有执行示例二进制。可复现用例已同步至MyTestCase aaf7c10。上表保留此前精度验证结果;本地CI通过不代表已知设备广播精度问题已修复。线上CI已对同一受测提交触发,compile评论193937869已回查,机器人确认[新流水线已启动](https://gitcode.com/CANN/ops-nn/actions/runs/2c7912fc2ed345a28412413bf84d5a73);结果尚未返回,不宣称线上通过。 异常分类与验证边界: - 原先合并等价检查的 scales1=[H], scales2=[](H>1)组合不满足当前950要求两组 scale 等形状的校验(scalar 按[1]比较),不是合法精度支持要求。此次改用通过当前 host 校验的 scalar、多轴归一化、量化广播场景,不再将原来的80组人工异常作为遗留 golden 问题。 - **新探针未全部设备精度通过。** Q=scale元素数、R=gamma元素数;当 Q 既不为1也不等于R时,56条 Kernel 中20条、20条 GEIR 中6条实际输出超差,均已完成 golden 计算,不是 GOLDEN_FAILURE。独立 FP64、固定输入回灌及设备 dump 共同确认差异;没有删用例、放宽容差或修改 golden 去迎合设备结果。 - 例如 x=[2,3,16]、gamma=[3,16]、scale=[16]:INT8 y1 的 golden 与 FP64 最大绝对差为0,设备与 FP64 最大绝对差为131,22/96个元素超出1 LSB;gamma=[16]、scale=[3,16] 时也复现不符。当前 host 允许上述后缀形状,主线与包内 full_load kernel 在 Q!=1 时均按 R 个元素搬运量化参数,与一般 Q/R 广播不匹配。该算子实现缺口另行处理,本 PR 没有修复 kernel,不据此宣称算子全场景无问题。 - 本轮是现有任务 CANN_Master 包的 golden 回归,不声称重新编译部署当前主线。使用源码核对辅助定位,不把源码一致性替代受测 binary 来源证明。 - 之前 GEIR JIT 的一条 V3 scalar scales2 + output_rstd=true 在线编译超时未解决;本轮 GEIR 跑 binary,不宣称覆盖 JIT。未进行第三方 GPU 比对。 ## 文档更新 无公开接口文档变更;V2 README 增加 GEIR 示例入口。使用依赖、验证结果与已发现的实现缺口在本描述说明;可复现用例及详细记录保存在 MyTestCase。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:测试资产上库及 golden 修正、补齐V2 GEIR示例;不修改算子实现 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11974 | 4 天前 | |
test(rms_norm_quant): 补充 Ascend 950 golden 测试资产 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !11974 merge test/rms_norm_quant-golden-assets into master test(rms_norm_quant): 补充 Ascend 950 golden 测试资产 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 将 Ascend 950 的 RmsNormQuant 系列 golden/TestSpec 迁入算子仓 tests/assets/,并修复验证中发现的 native golden 标量处理、多维广播及输出 shape 问题。提交三份 Python 测试资产,并补齐 V2 的 GEIR 示例及 README 入口,不修改 ACLNN、InferShape、tiling、kernel、算子配置或构建规则,不改变任何产品的算子执行行为。 逐文件说明: | 文件 | 修改内容、目的与效果 | | --- | --- | | norm/rms_norm_quant/tests/assets/golden.py | 注册 aclnnRmsNormQuant,迁入 V1 ACLNN CPU 参考与量化比较配置。保留最后一维归约、前导1 gamma/beta、INT32 存储的 INT4 输出处理;本轮异常修复未修改此文件。 | | norm/rms_norm_quant_v2/tests/assets/golden.py | 注册 rms_norm_quant_v2,供 Kernel/GEIR 使用。旧参考访问 scalar 的 shape[0]、把 scale/zero point 展平并广播到 gamma,会对合法多维形状抛异常或给出错误输出 shape。改为只展平归一化轴、保留量化参数的原始广播轴、量化前恢复 x 的逻辑 shape。 | | norm/rms_norm_quant_v3/tests/assets/golden.py | 同一个文件注册 native rms_norm_quant_v3 与 aclnnRmsNormQuantV3,保留各自函数及 TestSpec。native 同步上述修复,并将 rstd 恢复为未归约维度不变、归约各维大小为1的 shape。ACLNN 参考及其比较配置保持不变;未请求的输出返回 None。 | | norm/rms_norm_quant_v2/examples/test_geir_rms_norm_quant_v2.cpp | 补齐线上 Check_Example 门禁发现的 V2 示例缺失。使用真实 GEIR 接口构造 FP32 x=[2,16]、gamma=[16]、scales1=[1]、scales2=[1] 的 INT8 双输出图,检查执行状态、输出 shape/dtype 和 y1=2、y2=4;不伪造独立 ACLNN V2 接口。 | | norm/rms_norm_quant_v2/README.md | 将图模式示例入口从空占位替换为上述可点击源码链接。 | 范围与使用说明: - V3 原来的独立 ACLNN golden 文件已合入同一个 golden.py。TTK 允许单文件注册多个 TestSpec;两种接口函数不合并,比较门限不放宽。 - 三份 golden 提供四套显式 TestSpec,同时保留 __golden__ 兼容注册;GEIR 复用 native spec。--plugin 可指向 tests/assets/ 或单文件。 - 覆盖单/双量化、可选 beta/zero points、div_mode、INT8/INT4/FP8/HIFLOAT8 及 V3 可选 FP32 rstd。950 没有独立公开 aclnnRmsNormQuantV2,不迁入历史占位资产;V1 native kernel 不在此次950范围。 - PR 不包含 ST、CSV、运行日志及空 Tensor 功能修改。新增56条广播/标量用例及辅助校验脚本维护在 MyTestCase 的 RmsNormQuant/golden_checks/;对应正常 golden 副本同步修复。 - 已验证 TTK:raoliang_sac/ops-test-kit 的 fix/rms_norm_quant-packed-int4-comparison 或同提交任务分支 fix/rms_norm_quant-empty-tensor-testing,提交 db23e879adcd942c9ff2c34ff2139c7ac1a794b2。依赖其 FP8 requant、INT32 打包 INT4 与 HIFLOAT8 比较支持。 - 已检查的原版 TTK master c34f3373111b523cec91f64518a95833a8015687 不接受 Spec 中的 standard="requant"。本 PR 未修改 TTK,不宣称适配该原版 master。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6688 ## 测试 本轮使用修复后的仓内 golden,Ascend 950 实机、TTK 单进程;不同模式是执行次数,不合并为不重复用例总数: | 检查 | 结果 | | --- | --- | | 修复前 Kernel/GEIR 探针 | Kernel 8条:2 PASS、6 GOLDEN_FAILURE;GEIR 4条:2 PASS、2 GOLDEN_FAILURE | | 修复后56条 Kernel binary 新探针 | 36 PASS、20设备精度 FAIL、0 GOLDEN_FAILURE;全部 BINARY_MATCH | | 修复后20条 GEIR binary 新探针 | 14 PASS、6设备精度 FAIL、0 GOLDEN_FAILURE | | 原有正常场景 ACLNN 回归 | 54/54 PASS:合法 shape 12、量化 dtype 10、合法标量 rstd 32 | | 原有正常场景 Kernel binary 回归 | 106/106 PASS:dtype 100、可选输出6;全部 BINARY_MATCH | | 原有正常场景 GEIR binary 回归 | 6/6 PASS | | 独立 Torch FP64 公式/shape/dtype 检查(CPU辅助) | 56/56 PASS;不冒充 NPU 用例 | | 原有正常 native 新旧逐位对照(CPU辅助) | 1440/1440 一致;V1文件和V3 ACLNN/helper/TestSpec AST未变 | 新探针覆盖 scalar scales1/scales2、[1,1]量化参数、多维 gamma、量化/归一化维度不同、单量化、div_mode 双取值,及输入 FP16/FP32/BF16、五类量化输出。采用固定输入回灌,比较标准不变,未请求输出明确 SUPPRESSED。 本地 CI 已于2026-10-15重新执行并通过:受测提交 c82ca0f65f5567eda12fe12a5fedc778b6eac7b0,官方 master 快照 dfeee933397dc4aa8c567ea26d51aa514d5d90bc。PR保持单提交,rebase前后完整diff一致,本轮三份golden内容未改变。指定 /workspace/CI-skills/ci_local_check.sh 执行pre-commit、隔离OAT、链接、Python语法、新增的仓内 Check_Example 门禁及 GEIR 示例语法检查;新增 C++ 示例按现有规则完成950/A2定向package和graph UT构建。graph UT在两平台的筛选结果均为0例,不计作UT功能覆盖,也不把构建成功等同于设备功能验证。本轮另用任务内 CANN_Master、仓内golden及TTK --pc=1 运行与示例完全相同参数的GEIR binary用例:1/1 PASS,y1/y2精度均100%;示例本体做了C++11 -Wall -Wextra -Werror语法检查,没有执行示例二进制。可复现用例已同步至MyTestCase aaf7c10。上表保留此前精度验证结果;本地CI通过不代表已知设备广播精度问题已修复。线上CI已对同一受测提交触发,compile评论193937869已回查,机器人确认[新流水线已启动](https://gitcode.com/CANN/ops-nn/actions/runs/2c7912fc2ed345a28412413bf84d5a73);结果尚未返回,不宣称线上通过。 异常分类与验证边界: - 原先合并等价检查的 scales1=[H], scales2=[](H>1)组合不满足当前950要求两组 scale 等形状的校验(scalar 按[1]比较),不是合法精度支持要求。此次改用通过当前 host 校验的 scalar、多轴归一化、量化广播场景,不再将原来的80组人工异常作为遗留 golden 问题。 - **新探针未全部设备精度通过。** Q=scale元素数、R=gamma元素数;当 Q 既不为1也不等于R时,56条 Kernel 中20条、20条 GEIR 中6条实际输出超差,均已完成 golden 计算,不是 GOLDEN_FAILURE。独立 FP64、固定输入回灌及设备 dump 共同确认差异;没有删用例、放宽容差或修改 golden 去迎合设备结果。 - 例如 x=[2,3,16]、gamma=[3,16]、scale=[16]:INT8 y1 的 golden 与 FP64 最大绝对差为0,设备与 FP64 最大绝对差为131,22/96个元素超出1 LSB;gamma=[16]、scale=[3,16] 时也复现不符。当前 host 允许上述后缀形状,主线与包内 full_load kernel 在 Q!=1 时均按 R 个元素搬运量化参数,与一般 Q/R 广播不匹配。该算子实现缺口另行处理,本 PR 没有修复 kernel,不据此宣称算子全场景无问题。 - 本轮是现有任务 CANN_Master 包的 golden 回归,不声称重新编译部署当前主线。使用源码核对辅助定位,不把源码一致性替代受测 binary 来源证明。 - 之前 GEIR JIT 的一条 V3 scalar scales2 + output_rstd=true 在线编译超时未解决;本轮 GEIR 跑 binary,不宣称覆盖 JIT。未进行第三方 GPU 比对。 ## 文档更新 无公开接口文档变更;V2 README 增加 GEIR 示例入口。使用依赖、验证结果与已发现的实现缺口在本描述说明;可复现用例及详细记录保存在 MyTestCase。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:测试资产上库及 golden 修正、补齐V2 GEIR示例;不修改算子实现 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11974 | 4 天前 | |
feat: sync_bn_training_update 等 4 算子适配 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !12142 merge feat/syncbn-update-rmsnormq-v3-ascend960 into master feat: sync_bn_training_update 等 4 算子适配 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 变更内容 - **sync_bn_training_update**:注册 ascend960dt(def AddConfig、config/ascend960dt binary.json、CMakeLists 编译单元、ascendc_config 条目) - **rms_norm_quant_v3**:注册 ascend960dt(def AddConfig、config/ascend960dt binary.json、CMakeLists 编译单元、op_kernel 编译入口) - **bn_training_reduce**:注册 ascend960dt(def AddConfig、CMakeLists 编译单元 3/3 配对) - **instance_norm**:注册 ascend960dt(def AddConfig、config/ascend960dt binary.json、ascendc_config 条目) ## 实现方式 - 四算子复用既有 arch35 RegBase 内核,无 kernel/tiling/aclnn 代码修改,无性能特性新增 - rms_norm_quant_v3 kernel 为 rms_norm_quant_v2 薄壳实现,自动继承 v2 既有 9201/9202 编译期优化路径 - bn_training_reduce 为 def config 驱动模式(master 既有形态,无 config 目录);instance_norm 与 batch_norm_v3 同构(GLOB walker + def 驱动) - ascendc_config 的 960dt 编译选项对齐仓内既有形态(--cce-no-dcache-flush) - tiling 运行时路由经公共 IsRegbaseSocVersion(已含 DAV_9201)自动生效 ## 影响范围 - 不涉及 DAV_3510 路径代码变化,A5 编译与行为零回归 关联 Issue:#6804 See merge request: cann/ops-nn!12142 | 2 天前 | |
feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !10951 merge feat/infer-datatype-migration into master feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 按 graph_develop_guide.md 图模式交付件要求,为 9 个算子补齐 InferDataType 交付件 op_graph/<op>_graph_infer.cpp(IMPL_OP(Op).InferDataType(f) 注册),dtype 推导规则迁移自 canndev v1.0 旧式 IMPLEMT_COMMON_INFERFUNC/IMPLEMT_INFERFUNC 的类型推导语义: - **透传类(out=in0,4个)**:ConfusionSoftmaxGrad(y=grad)、LogSoftmaxV2(logsoftmax=logits)、SoftmaxGrad(grad_x=softmax)、SyncBatchNormBackwardElemt(grad_input=grad_output); - **双输出同源(1个)**:SyncBatchNormBackwardReduce(sum_dy_xmu 与 y 均取 sum_dy 的 dtype,对齐 v1.0 nn_batch_norm_ops.cc 实现); - **非0索引锚定(out=in1,1个)**:LogSoftmaxGrad(y=x,输入0 是 grad); - **多输出绑定(3个)**:LayerNorm/LayerNormV3(y=x、mean=gamma、variance/rstd=beta,CANN 特有的混合精度载体设计,对齐 v1.0 nn_norm_ops.cc)、SyncBatchNormGatherStats(4 个输出均取 variance 的 dtype,shape 另取 mean,对齐 v1.0 实现)。 InferDataType 仅做纯推导(SoftmaxGrad 为 grad_x=softmax 透传),不增加输入 dtype 一致性校验:混合 dtype 组合由 tiling 侧既有三口全等校验在编译期拦截。 > 2026-10-13:本 MR 曾为 SoftmaxGrad 加入构图期 grad_softmax==softmax 一致性校验,经复审已回退(revert 提交 e1ad6cfa1),恢复纯透传形态。 CMake 无需改动(构建宏 GLOB_RECURSE op_graph/*.cpp 自动收编)。 ## 关联的Issue 无 ## 测试 1. 语法检查:9 个新文件 g++ -fsyntax-only 全部通过; 2. 构建:bash build.sh --opgraph -j16 全量构建通过,9 个新 .o 均进入 graph_plugin_nn_obj 并链接入 libopgraph_nn.so(2026-10-13 校验回退后重新全量构建通过); 3. 行为验证:按 KernelRunContext ABI 构造 mock InferDataTypeContext 直接调用注册函数,9 算子覆盖透传、in1 锚定、多输出逐口绑定(含 GatherStats 4 输出、LayerNorm 系 3 输出、BackwardReduce 双输出)及 SoftmaxGrad 混合 dtype 透传行为,全部通过(2026-10-13 回退后全量重跑)。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10951 | 20 小时前 | |
feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !10951 merge feat/infer-datatype-migration into master feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 按 graph_develop_guide.md 图模式交付件要求,为 9 个算子补齐 InferDataType 交付件 op_graph/<op>_graph_infer.cpp(IMPL_OP(Op).InferDataType(f) 注册),dtype 推导规则迁移自 canndev v1.0 旧式 IMPLEMT_COMMON_INFERFUNC/IMPLEMT_INFERFUNC 的类型推导语义: - **透传类(out=in0,4个)**:ConfusionSoftmaxGrad(y=grad)、LogSoftmaxV2(logsoftmax=logits)、SoftmaxGrad(grad_x=softmax)、SyncBatchNormBackwardElemt(grad_input=grad_output); - **双输出同源(1个)**:SyncBatchNormBackwardReduce(sum_dy_xmu 与 y 均取 sum_dy 的 dtype,对齐 v1.0 nn_batch_norm_ops.cc 实现); - **非0索引锚定(out=in1,1个)**:LogSoftmaxGrad(y=x,输入0 是 grad); - **多输出绑定(3个)**:LayerNorm/LayerNormV3(y=x、mean=gamma、variance/rstd=beta,CANN 特有的混合精度载体设计,对齐 v1.0 nn_norm_ops.cc)、SyncBatchNormGatherStats(4 个输出均取 variance 的 dtype,shape 另取 mean,对齐 v1.0 实现)。 InferDataType 仅做纯推导(SoftmaxGrad 为 grad_x=softmax 透传),不增加输入 dtype 一致性校验:混合 dtype 组合由 tiling 侧既有三口全等校验在编译期拦截。 > 2026-10-13:本 MR 曾为 SoftmaxGrad 加入构图期 grad_softmax==softmax 一致性校验,经复审已回退(revert 提交 e1ad6cfa1),恢复纯透传形态。 CMake 无需改动(构建宏 GLOB_RECURSE op_graph/*.cpp 自动收编)。 ## 关联的Issue 无 ## 测试 1. 语法检查:9 个新文件 g++ -fsyntax-only 全部通过; 2. 构建:bash build.sh --opgraph -j16 全量构建通过,9 个新 .o 均进入 graph_plugin_nn_obj 并链接入 libopgraph_nn.so(2026-10-13 校验回退后重新全量构建通过); 3. 行为验证:按 KernelRunContext ABI 构造 mock InferDataTypeContext 直接调用注册函数,9 算子覆盖透传、in1 锚定、多输出逐口绑定(含 GatherStats 4 输出、LayerNorm 系 3 输出、BackwardReduce 双输出)及 SoftmaxGrad 混合 dtype 透传行为,全部通过(2026-10-13 回退后全量重跑)。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10951 | 20 小时前 | |
feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !10951 merge feat/infer-datatype-migration into master feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 按 graph_develop_guide.md 图模式交付件要求,为 9 个算子补齐 InferDataType 交付件 op_graph/<op>_graph_infer.cpp(IMPL_OP(Op).InferDataType(f) 注册),dtype 推导规则迁移自 canndev v1.0 旧式 IMPLEMT_COMMON_INFERFUNC/IMPLEMT_INFERFUNC 的类型推导语义: - **透传类(out=in0,4个)**:ConfusionSoftmaxGrad(y=grad)、LogSoftmaxV2(logsoftmax=logits)、SoftmaxGrad(grad_x=softmax)、SyncBatchNormBackwardElemt(grad_input=grad_output); - **双输出同源(1个)**:SyncBatchNormBackwardReduce(sum_dy_xmu 与 y 均取 sum_dy 的 dtype,对齐 v1.0 nn_batch_norm_ops.cc 实现); - **非0索引锚定(out=in1,1个)**:LogSoftmaxGrad(y=x,输入0 是 grad); - **多输出绑定(3个)**:LayerNorm/LayerNormV3(y=x、mean=gamma、variance/rstd=beta,CANN 特有的混合精度载体设计,对齐 v1.0 nn_norm_ops.cc)、SyncBatchNormGatherStats(4 个输出均取 variance 的 dtype,shape 另取 mean,对齐 v1.0 实现)。 InferDataType 仅做纯推导(SoftmaxGrad 为 grad_x=softmax 透传),不增加输入 dtype 一致性校验:混合 dtype 组合由 tiling 侧既有三口全等校验在编译期拦截。 > 2026-10-13:本 MR 曾为 SoftmaxGrad 加入构图期 grad_softmax==softmax 一致性校验,经复审已回退(revert 提交 e1ad6cfa1),恢复纯透传形态。 CMake 无需改动(构建宏 GLOB_RECURSE op_graph/*.cpp 自动收编)。 ## 关联的Issue 无 ## 测试 1. 语法检查:9 个新文件 g++ -fsyntax-only 全部通过; 2. 构建:bash build.sh --opgraph -j16 全量构建通过,9 个新 .o 均进入 graph_plugin_nn_obj 并链接入 libopgraph_nn.so(2026-10-13 校验回退后重新全量构建通过); 3. 行为验证:按 KernelRunContext ABI 构造 mock InferDataTypeContext 直接调用注册函数,9 算子覆盖透传、in1 锚定、多输出逐口绑定(含 GatherStats 4 输出、LayerNorm 系 3 输出、BackwardReduce 双输出)及 SoftmaxGrad 混合 dtype 透传行为,全部通过(2026-10-13 回退后全量重跑)。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10951 | 20 小时前 | |
modified md files (modified the product name and link path) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11029 merge master into master modified md files (modified the product name and link path) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Changed the product name and link path ## 关联的Issue [#6092](https://gitcode.com/cann/ops-nn/issues/6092) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!11029 | 26 天前 | |
modified md files Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !11982 merge master into master modified md files Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Deleted the "Viewing the Source Code" section and the corresponding link at the beginning of the ACLNN MD description of foreach and norm. ## 关联的Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11982 | 4 天前 | |
feat: sync_bn_training_update 等 4 算子适配 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !12142 merge feat/syncbn-update-rmsnormq-v3-ascend960 into master feat: sync_bn_training_update 等 4 算子适配 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 变更内容 - **sync_bn_training_update**:注册 ascend960dt(def AddConfig、config/ascend960dt binary.json、CMakeLists 编译单元、ascendc_config 条目) - **rms_norm_quant_v3**:注册 ascend960dt(def AddConfig、config/ascend960dt binary.json、CMakeLists 编译单元、op_kernel 编译入口) - **bn_training_reduce**:注册 ascend960dt(def AddConfig、CMakeLists 编译单元 3/3 配对) - **instance_norm**:注册 ascend960dt(def AddConfig、config/ascend960dt binary.json、ascendc_config 条目) ## 实现方式 - 四算子复用既有 arch35 RegBase 内核,无 kernel/tiling/aclnn 代码修改,无性能特性新增 - rms_norm_quant_v3 kernel 为 rms_norm_quant_v2 薄壳实现,自动继承 v2 既有 9201/9202 编译期优化路径 - bn_training_reduce 为 def config 驱动模式(master 既有形态,无 config 目录);instance_norm 与 batch_norm_v3 同构(GLOB walker + def 驱动) - ascendc_config 的 960dt 编译选项对齐仓内既有形态(--cce-no-dcache-flush) - tiling 运行时路由经公共 IsRegbaseSocVersion(已含 DAV_9201)自动生效 ## 影响范围 - 不涉及 DAV_3510 路径代码变化,A5 编译与行为零回归 关联 Issue:#6804 See merge request: cann/ops-nn!12142 | 2 天前 | |
Format update: Adjusted the license description format in all relevant files. Co-authored-by: jiangqi<jiangqi47@h-partners.com> # message auto-generated for no-merge-commit merge: !365 merge license5 into master Format update: Adjusted the license description format in all relevant files. Created-by: jiangqi2025 Commit-by: jiangqi Merged-by: turing_project1 Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!365 | 10 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 18 小时前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 3 天前 | ||
| 4 天前 | ||
| 3 天前 | ||
| 4 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 9 天前 | ||
| 2 天前 | ||
| 3 天前 | ||
| 4 天前 | ||
| 3 天前 | ||
| 26 天前 | ||
| 9 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 2 天前 | ||
| 25 天前 | ||
| 4 天前 | ||
| 25 天前 | ||
| 21 天前 | ||
| 9 天前 | ||
| 3 天前 | ||
| 2 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 19 天前 | ||
| 26 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 25 天前 | ||
| 4 天前 | ||
| 3 天前 | ||
| 4 天前 | ||
| 19 小时前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 21 天前 | ||
| 26 天前 | ||
| 7 天前 | ||
| 19 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 6 天前 | ||
| 4 天前 | ||
| 2 天前 | ||
| 19 天前 | ||
| 26 天前 | ||
| 9 天前 | ||
| 19 天前 | ||
| 20 小时前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 20 小时前 | ||
| 3 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 26 天前 | ||
| 3 天前 | ||
| 9 天前 | ||
| 21 天前 | ||
| 26 天前 | ||
| 4 天前 | ||
| 21 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 21 小时前 | ||
| 14 小时前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 3 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 2 天前 | ||
| 20 小时前 | ||
| 20 小时前 | ||
| 20 小时前 | ||
| 26 天前 | ||
| 4 天前 | ||
| 2 天前 | ||
| 10 个月前 |