| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 28 天前 | |
删除查看源码 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !12004 merge master into master 删除查看源码 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 删除查看源码 ## 关联的Issue 关联Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 无需测试 ## 文档更新 删除文档中的查看源码链接 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12004 | 12 天前 | |
refactor: 迁移NN公共op_api头文件引用 Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !10879 merge nn_prefix_common_headers_0920 into master refactor: 迁移NN公共op_api头文件引用 Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 本变更属于 NN 公共 op_api 头文件迁移的调用清理阶段: - 将非 experimental 目录中 21 个 op_api/level2_base.h 调用迁移到 op_api/level2_base_nn.h。 - 将非 experimental 目录中 2 个 op_api/level2_base_caculation.h 调用迁移到 op_api/level2_base_caculation_nn.h。 - experimental 目录暂时保留旧转发头:11 处 level2_base.h、3 处 level2_base_caculation.h,避免 CI 将导出同名 ACLNN 接口的实验算子共同链接。 - 保留旧头文件作为兼容转发头;本 MR 不宣称已完成最终包内 basename 去重。 - 不修改 op_api_def_nn.h,不包含功能逻辑变更。 ## 关联的Issue Issue #6008 ## 测试 - git diff --check upstream/master...HEAD:通过。 - pre_commit:全部通过,包括 clang-format、codespell 和 OAT。 - CANN 9.0 容器执行 bash build.sh --opapi -j32:通过,成功生成 libopapi_nn.so。 - 原 experimental CI 同时选择 swish 与 swish_v2 后发生既有同名 ACLNN 符号冲突;本次兼容调整已将两者移出最终 MR diff,等待线上 CI 复验。 ## 文档更新 无文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:公共头文件引用迁移 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10879 | 1 个月前 | |
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 | 11 天前 | |
[style] 修复 20 处 ruff E7 语句违规:多余分号 / == None / not ... in Co-authored-by: NUAAwqy<162230229@nuaa.edu.cn> # message auto-generated for no-merge-commit merge: !11492 merge fix/issue-6385-ruff-e7-statement-violations into master [style] 修复 20 处 ruff E7 语句违规:多余分号 / == None / not ... in Created-by: NUAA_wqy Commit-by: NUAAwqy Merged-by: cann-robot Description: ## 描述 仓库自身 .pre-commit-config.yaml 的 ruff-check(rev v0.14.14,args 仅 --output-format github --fix,未关闭任何规则)默认启用 E4/E7/E9/F 系列。main 上执行 console $ python -m ruff check --isolated --select E703,E711,E713 . 会报 20 条,本 MR 全部修掉: - **E703 语句末尾多余分号(10 处)**:norm/batch_norm_v3/tests/ut/op_kernel/batch_norm_v3_data/gen_golden_data.py(8 处)、optim/advance_step/tests/ut/op_kernel/advance_step_data/gen_data.py(2 处)。同一段里紧邻的赋值语句都没有分号,只有这几行有,属于书写不一致。 - **E711 与 None 用 == 比较(5 处)**:if self.bias == None(matmul/fused_quant_mat_mul 的 2 个 ST executor)、if input_data.kwargs.get("bias"/"quant_scale", None) == None(quant/dequant_swiglu_quant 的 ST executor,2 处)、if ignore_index == None(loss/cross_entropy_loss 的 ST executor)。左值都是普通 Python 对象(tensor / dict.get 结果 / int),改成 is None 后取值不变,符合 PEP 8 对单例比较的要求。 - **E713 not x in y(5 处)**:集中在 scripts/kernel/binary_script/parser_ini.py,改成 x not in y,与 not (x in y) 完全等价。 改动范围:7 个文件、20 行,+20 / -20,无逻辑变更、无接口变更。 ## 变更类型 - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [x] 📋 其他,请描述:代码风格 / lint 清理(ruff E703/E711/E713) ## 关联的Issue #6385 ## 测试 已完成的测试用例和场景: 1. python -m ruff check --isolated --select E703,E711,E713 .:改动前 20 条(10 + 5 + 5),改动后 All checks passed!; 2. 7 个改动文件逐个 python -m py_compile,全部通过; 3. git diff 逐行核对:git diff --stat 为 7 files changed, 20 insertions(+), 20 deletions(-),每处只改了分号 / ==→is / not a in b→a not in b; 4. 语义核对:not a in b 与 a not in b 完全等价;x == None 的 x 均为普通对象(tensor、dict.get() 返回值、int),不含 numpy 逐元素比较,is None 结果一致。 补充的UT用例:无(纯 lint 修正,不引入逻辑) 说明:本 MR **未**纳入同批的 E712(77 处)与 E741(11 处)。diff_res = np.isclose(...) 是逐元素布尔数组,diff_res != True 不能简单改成 not diff_res(会触发 numpy truth value 歧义),需单独评估;E741 是把 gen_golden_data_simple(n, c, l, dtype) 的形参 l 改名,会牵涉调用方,属更大范围改动。本地无 NPU / CANN 工具链,未运行 ST/UT 用例。 ## 文档更新 NA ## 合入检查 - [x] 已阅读 CONTRIBUTING.md,commit message 含类型标签与 DCO 签名(Signed-off-by) - [x] 代码/文档遵循项目整体风格,改动最小且聚焦于该 Issue - [x] 已完成本地验证,验证方法见“测试”章节 ## DCO Signed-off-by: NUAAwqy <162230229@nuaa.edu.cn> See merge request: cann/ops-nn!11492 | 7 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
feat(loss/quant/norm): 四算子接入 ascend960dt 平台 + cross_entropy pre-allocation Co-authored-by: zoujiamin<zoujiamin1@huawei.com> # message auto-generated for no-merge-commit merge: !11745 merge squash/960dt-one-commit into master feat(loss/quant/norm): 四算子接入 ascend960dt 平台 + cross_entropy pre-allocation Created-by: zoujiamin123 Commit-by: zoujiamin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->CrossEntropySumExpAndIndexLogit在960上开启pre-allocation优化、SigmoidCrossEntropyWithLogitsGradV2、Renorm、GroupedDynamicMxQuantWithDualAxis 三个个算子接入 ascend960dt 平台 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->https://gitcode.com/cann/ops-nn/issues/7021 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->全量st测试通过、冒烟验证无问题 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11745 | 6 天前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 28 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 28 天前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 28 天前 | |
feat(FCE): golden 新增 torch eager e2e 通路(E2eSpec) Co-authored-by: Bright0313<liwenbo84@huawei.com> # message auto-generated for no-merge-commit merge: !12378 merge feat/fce-golden-torch-e2e into master feat(FCE): golden 新增 torch eager e2e 通路(E2eSpec) Created-by: Bright0313 Commit-by: Bright0313 Merged-by: cann-robot Description: ## 变更说明 新增 FusedCrossEntropyLossWithMaxSum 的 torch eager e2e 通路 golden spec,单文件修改。 ### 修改内容 tests/assets/golden.py 新增 FusedCrossEntropyLossWithMaxSumE2eSpec 类,__spec__ 注册 torch_npu.npu_fused_cross_entropy_loss_with_max_sum(op-plugin !5063 规范化命名,torch_npu 2.13.0+): - **golden**:复用 _compute(torch 小算子拼接实现,Promote 模式保持 fp64 高精度真值) - **third_party**:kernel 风格桥接(e2e 按 torch API snake_case 命名派发,含 mem 路径占位输出) - **tolerance**:cross_check L0(与 kernel/aclnn 通路统一) 同步修改:_target_dtype 增加输入 dtype 检测(aclnn 通路框架提升 fp64 但 kwargs 无 golden_mode 键)、_to_torch 支持指定精度。 ### 验证 - torch 2.13.0+cpu + torch_npu 2.13.0 环境下 TTK e2e 全量 **20/20 PASS** - pre-commit 全绿(ruff-check / ruff-format / codespell / OAT) ### 逐文件修改说明 | # | 文件 | 修改内容 | |---|---|---| | 1 | tests/assets/golden.py | 新增 E2eSpec 类(golden + third_party + tolerance);__spec__ 注册 torch_npu key;_target_dtype 输入 dtype 检测;注释精简 | See merge request: cann/ops-nn!12378 | 7 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
删除查看源码 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !12004 merge master into master 删除查看源码 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 删除查看源码 ## 关联的Issue 关联Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 无需测试 ## 文档更新 删除文档中的查看源码链接 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12004 | 12 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
[logit] 修复eps<=0时被tiling层改写为1e-6导致x=1输出非inf的问题 Co-authored-by: yangdong48<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !12472 merge fix/logit-eps-negative-clamp into master [logit] 修复eps<=0时被tiling层改写为1e-6导致x=1输出非inf的问题 Created-by: east_yang Commit-by: yangdong48 Merged-by: cann-robot Description: ## 问题描述 torch.logit(x, eps=-1.0) 在 NPU 上,x=1 时输出 13.802318 而非 +inf(fp32, shape [16])。 ## 根因 loss/logit/op_host/logit_tiling.cpp 的 RunBigKernelTiling 中把 eps<=0 一律改写为 1e-6 后写入 TilingData 下发 kernel,导致 eps=-1.0被静默替换为 eps=1e-6 x=1 被 clamp 到 1-1e-6,输出 ln(hi/(1-hi))=13.802318 而非 +inf。 ## 修复内容 1. loss/logit/op_host/logit_tiling.cpp:删除 eps<=0 时 epsilon=1e-6 的改写逻辑,eps 原样下发 kernel(kernel 侧 eps>=0 才走 ComputeStepOne 钳位,eps<0 天然不钳位)。 2. loss/logit/op_api/aclnn_logit.cpp:删除 CheckParams 中的 ND format 校验(误校验)。 3. loss/logit_grad/op_api/aclnn_logit_grad.cpp:同步删除 CheckParams 中的 ND format 校验(误校验)。 ## 验证(Ascend910B3) - bash build.sh --pkg --soc=ascend910b --ops=logit,logit_grad 编译通过并部署 - fp32 [16] eps=-1.0 回归:x=1 -> +inf,x=0 -> -inf,16/16 位置与 CPU golden 一致(含 inf/nan 位置与符号逐一对齐) - eps=1e-6 正例回归:与 CPU golden 逐位一致,钳位路径不受影响 - logit_grad 反向梯度回归:与 CPU golden 一致  Closes #7087 See merge request: cann/ops-nn!12472 | 6 天前 | |
[logit] 修复eps<=0时被tiling层改写为1e-6导致x=1输出非inf的问题 Co-authored-by: yangdong48<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !12472 merge fix/logit-eps-negative-clamp into master [logit] 修复eps<=0时被tiling层改写为1e-6导致x=1输出非inf的问题 Created-by: east_yang Commit-by: yangdong48 Merged-by: cann-robot Description: ## 问题描述 torch.logit(x, eps=-1.0) 在 NPU 上,x=1 时输出 13.802318 而非 +inf(fp32, shape [16])。 ## 根因 loss/logit/op_host/logit_tiling.cpp 的 RunBigKernelTiling 中把 eps<=0 一律改写为 1e-6 后写入 TilingData 下发 kernel,导致 eps=-1.0被静默替换为 eps=1e-6 x=1 被 clamp 到 1-1e-6,输出 ln(hi/(1-hi))=13.802318 而非 +inf。 ## 修复内容 1. loss/logit/op_host/logit_tiling.cpp:删除 eps<=0 时 epsilon=1e-6 的改写逻辑,eps 原样下发 kernel(kernel 侧 eps>=0 才走 ComputeStepOne 钳位,eps<0 天然不钳位)。 2. loss/logit/op_api/aclnn_logit.cpp:删除 CheckParams 中的 ND format 校验(误校验)。 3. loss/logit_grad/op_api/aclnn_logit_grad.cpp:同步删除 CheckParams 中的 ND format 校验(误校验)。 ## 验证(Ascend910B3) - bash build.sh --pkg --soc=ascend910b --ops=logit,logit_grad 编译通过并部署 - fp32 [16] eps=-1.0 回归:x=1 -> +inf,x=0 -> -inf,16/16 位置与 CPU golden 一致(含 inf/nan 位置与符号逐一对齐) - eps=1e-6 正例回归:与 CPU golden 逐位一致,钳位路径不受影响 - logit_grad 反向梯度回归:与 CPU golden 一致  Closes #7087 See merge request: cann/ops-nn!12472 | 6 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
[L2] fix: include guard 的 #ifndef 与 #define 宏名不一致,守卫失效 Co-authored-by: eieiei<3901796952@qq.com> # message auto-generated for no-merge-commit merge: !11559 merge fix-include-guard-name-mismatch into master [L2] fix: include guard 的 #ifndef 与 #define 宏名不一致,守卫失效 Created-by: wsnidie1 Commit-by: eieiei Merged-by: cann-robot Description: ## 问题 loss/mse_loss_grad_v2/op_host/arch35/mse_loss_grad_v2_tiling_arch35.h 的 include guard: #ifndef MSE_LOSS_GRAD_V2_TILING_ARCH35_H_ #define MSE_LOSS_GRAD_V2_TILING_ARCH35_H // 末尾少了下划线 #ifndef 测 ..._ARCH35_H_、#define 定义的是 ..._ARCH35_H(不同名),于是 ..._ARCH35_H_ 永不定义 → 头文件二次包含时守卫失效,struct/宏被重复定义。 ## 修复 把 #define 补成与 #ifndef 一致的 MSE_LOSS_GRAD_V2_TILING_ARCH35_H_。 - 级别:L2(include guard 失效) - 改动:1 文件 +1/-1 See merge request: cann/ops-nn!11559 | 7 天前 | |
fix: 修复 6 算子 arch35 扫描定界出的缺陷并补齐验证钩子 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !11977 merge fix/golden-spec-3ops into master fix: 修复 6 算子 arch35 扫描定界出的缺陷并补齐验证钩子 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 6 个算子 arch35(A5) 路径上扫描定界出的缺陷,并补齐对应验证钩子。本轮集中修复**精度**与**跨核同步**两类问题,另含小 D 档性能改造。 ### 一、跨核同步缺陷(并发下偶现错误) SyncAll() 之前未排空本核流水,而写 workspace 的 DataCopyPad 是异步出口流水(头文件标注 __out_pipe__(MTE3)),0 号核可能读到其他核尚未落地的 partial。该问题与时序/负载相关:同一用例、同一随机种子,在 --pc 2 并发下两轮判定不一致(一轮 219/219 全绿,另一轮 1 例红)。 - PoissonNllLoss:SyncAll() 前补 AscendC::PipeBarrier<PIPE_MTE3>();收尾同步的固定事件号 EVENT_ID0 改为 FetchEventID 分配(固定号与在飞的同号事件冲突会漏同步)。 - MultilabelMarginLoss:两处跨核栅栏前补同样的定向排空(核 0 的 InitGlobalMemory 清零、StageCorePartial 的异步写)。 - MSELossV2:原有的 PipeBarrier<PIPE_ALL> 收窄为 PipeBarrier<PIPE_MTE3>,只排需要的出口流水。 - SoftmaxFocalLossGrad:补齐列预置(矢量写)与首次搬入(MTE2 写同一片 UB)之间补 HardEvent::V_MTE2 事件对。 ### 二、精度缺陷 - SoftmaxFocalLoss:ce/fw 的低位残差槽未按 tile 清零。(hi, lo) 是读改写,不清零会把 UB 残留当作上一轮残差累加(全量泛化 1198 例中 111 例红,全部集中在 reduction=none 且 D≥1000 的精确路径)。 - PoissonNllLoss:reduction=sum/mean 的段内规约原用库函数整段 ReduceSum(块间无补偿裸加)、段间又是 partial +=,绝对误差随块数/段数增长。改为块内硬件树形 + 块间/段间 TwoSum 携带 (hi, lo)、只在最末并一次,误差与块数无关。三方 cross_check 的 rmse 比值由 4.55/6.01/8.31 降到 0.30/1.00/1.00。 - SoftmaxFocalLossGrad:搬入参数 rightPadding 只能把一行补到 32B 块边界,行距超出该块的部分改走 dstStride(原写法在 int32 目标缓冲上会下发非法补齐长度,D=1/2/4/6/21 全线 VEC_ERROR);搬出 srcStride 由统一行距与块补齐长度算出,不再假定为 0。 - MultilabelMarginLoss:块对齐长度改为向下取到 8 的倍数(向上取整会让 B 超过 k,块内顺序累加成为主导误差项)。 ### 三、性能改造(arch35 小 D / 大 D 档) - SoftmaxFocalLossGrad - 小 D(2 的幂且小于自然行距)改紧致布局:不做逐行 32B 补齐,车道利用率由 D/64 提到 100%。 - 精确路径将 wf/wd/ce/wt 四条补偿链交错进同一循环(各带独立临时寄存器),替代原四次顺序调用——原先每条链是"17 条相互依赖指令 × 块数"的串行链,矢量单元大部分时间在等前一条结果。 - ReduceDataBlock 路径支持一行两块(按块跨步加载后逐元素相加,等价 16 元素平衡树)。 - SoftmaxFocalLoss:精确路径由逐行标量版改为行槽矢量 + 双链交错。 ### 四、代码规范 - 新增/改动代码不再使用 OP_LOGE,按语义改用 OP_LOGE_FOR_INVALID_VALUE_WITH_REASON / ..._INVALID_SHAPE(S|DIM)_WITH_REASON / ..._INVALID_DTYPES_WITH_REASON / OP_LOGE_FOR_INVALID_GRAPH_NODE。 - 不使用 PIPE_ALL 全量栅栏,一律定向到具体流水。 - 按仓内钉定的 clang-format v18.1.8 全量格式化,清理行尾空白。 - MultiAddRmsNormDynamicQuant 的 geir 示例由 examples/arch35/ 上移到 examples/:该算子 def 声明支持 ascend910b/ascend910_93,而示例原先只在 arch35/(按 build.sh 的布局契约仅 950 系收),不满足 scripts/ci/check_examples_ut.py 的门禁;示例内容与 soc 无关,上移后同时覆盖 910b 与 950。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6879 ## 测试 全部在 Ascend950PR 真机、CANN 9.3.0 上以本分支出包验证(kernel 泛化带 --compare close 两方 isclose;三方精度不带 --compare,由 Spec 的 cross_check 生效并接 GPU 三方腿;geir 为 GE 直构图通路)。 | 算子 | kernel 泛化 | 三方 cross_check | geir 通路 | 其他 | | --- | --- | --- | --- | --- | | SoftmaxFocalLossGrad | 1129/1129 | 66/66 | 58/58 | 定向探测集 26/26 | | SoftmaxFocalLoss | 1198/1198 | 60/60 | 50/50 | 定向探测集 14/14 | | MultilabelMarginLoss | 1026/1026 | 60/60 | 27/27 | 定向探测集 16/16 | | PoissonNllLoss | 1024/1024 | 60/60 | 219/219 × 3 轮 | 并发配置连跑三轮红例恒为空 | | MSELossV2 | 1263/1263 | 60/60 | 185/185 | — | | MultiAddRmsNormDynamicQuant | 1113/1113 | 60/60 | 120/120 | 拒收集 2/2、10/10 按预期全 FAIL | 同步缺陷的取证方式:先以固定输入、单进程连跑 4 遍确认本方输出逐位一致(排除本方不确定性),再在暴露过偶现的并发配置(--pc 2 + 固定种子)下连跑三轮,红例集合恒为空。 性能(NPU 为 release 二进制 --run 12,竞品为 A100 开启 torch.compile 融合后的 device time,取 3 轮最小值): | 算子 | 用例数 | G/N 均值 | G/N 中位 | G/N 最小 | <0.1 例数 | | --- | --- | --- | --- | --- | --- | | SoftmaxFocalLossGrad | 200 | 0.936 | 0.828 | 0.199 | 0 | | SoftmaxFocalLoss | 200 | 9.766 | 9.499 | 0.596 | 0 | 跨核排空的开销实测低于测量噪声:PoissonNllLoss 同用例集中位比值 0.997(最差 1.065);MultilabelMarginLoss 在固定种子下"有/无排空"中位比值 0.975,而同一包重复跑的噪声带已达 0.32~1.93。 ## 文档更新 - 更新 MultiAddRmsNormDynamicQuant README:补充 x1 列表内各张量 shape/dtype 一致、gamma 与 x1 末维一致、epsilon 必须大于零、smooth_scale2 未输入时 y2/scale2 的 shape 与语义;恢复"约束说明"两条(空 Tensor 空进空出;归约轴末维为 0 不支持),该行为经实测确认:(0, 8) PASS、(4, 0) 拒收。 - 更新 SoftmaxFocalLoss / PoissonNllLoss / MultilabelMarginLoss 的接口与支持面描述。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11977 | 8 天前 | |
fix: 修复 6 算子 arch35 扫描定界出的缺陷并补齐验证钩子 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !11977 merge fix/golden-spec-3ops into master fix: 修复 6 算子 arch35 扫描定界出的缺陷并补齐验证钩子 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 6 个算子 arch35(A5) 路径上扫描定界出的缺陷,并补齐对应验证钩子。本轮集中修复**精度**与**跨核同步**两类问题,另含小 D 档性能改造。 ### 一、跨核同步缺陷(并发下偶现错误) SyncAll() 之前未排空本核流水,而写 workspace 的 DataCopyPad 是异步出口流水(头文件标注 __out_pipe__(MTE3)),0 号核可能读到其他核尚未落地的 partial。该问题与时序/负载相关:同一用例、同一随机种子,在 --pc 2 并发下两轮判定不一致(一轮 219/219 全绿,另一轮 1 例红)。 - PoissonNllLoss:SyncAll() 前补 AscendC::PipeBarrier<PIPE_MTE3>();收尾同步的固定事件号 EVENT_ID0 改为 FetchEventID 分配(固定号与在飞的同号事件冲突会漏同步)。 - MultilabelMarginLoss:两处跨核栅栏前补同样的定向排空(核 0 的 InitGlobalMemory 清零、StageCorePartial 的异步写)。 - MSELossV2:原有的 PipeBarrier<PIPE_ALL> 收窄为 PipeBarrier<PIPE_MTE3>,只排需要的出口流水。 - SoftmaxFocalLossGrad:补齐列预置(矢量写)与首次搬入(MTE2 写同一片 UB)之间补 HardEvent::V_MTE2 事件对。 ### 二、精度缺陷 - SoftmaxFocalLoss:ce/fw 的低位残差槽未按 tile 清零。(hi, lo) 是读改写,不清零会把 UB 残留当作上一轮残差累加(全量泛化 1198 例中 111 例红,全部集中在 reduction=none 且 D≥1000 的精确路径)。 - PoissonNllLoss:reduction=sum/mean 的段内规约原用库函数整段 ReduceSum(块间无补偿裸加)、段间又是 partial +=,绝对误差随块数/段数增长。改为块内硬件树形 + 块间/段间 TwoSum 携带 (hi, lo)、只在最末并一次,误差与块数无关。三方 cross_check 的 rmse 比值由 4.55/6.01/8.31 降到 0.30/1.00/1.00。 - SoftmaxFocalLossGrad:搬入参数 rightPadding 只能把一行补到 32B 块边界,行距超出该块的部分改走 dstStride(原写法在 int32 目标缓冲上会下发非法补齐长度,D=1/2/4/6/21 全线 VEC_ERROR);搬出 srcStride 由统一行距与块补齐长度算出,不再假定为 0。 - MultilabelMarginLoss:块对齐长度改为向下取到 8 的倍数(向上取整会让 B 超过 k,块内顺序累加成为主导误差项)。 ### 三、性能改造(arch35 小 D / 大 D 档) - SoftmaxFocalLossGrad - 小 D(2 的幂且小于自然行距)改紧致布局:不做逐行 32B 补齐,车道利用率由 D/64 提到 100%。 - 精确路径将 wf/wd/ce/wt 四条补偿链交错进同一循环(各带独立临时寄存器),替代原四次顺序调用——原先每条链是"17 条相互依赖指令 × 块数"的串行链,矢量单元大部分时间在等前一条结果。 - ReduceDataBlock 路径支持一行两块(按块跨步加载后逐元素相加,等价 16 元素平衡树)。 - SoftmaxFocalLoss:精确路径由逐行标量版改为行槽矢量 + 双链交错。 ### 四、代码规范 - 新增/改动代码不再使用 OP_LOGE,按语义改用 OP_LOGE_FOR_INVALID_VALUE_WITH_REASON / ..._INVALID_SHAPE(S|DIM)_WITH_REASON / ..._INVALID_DTYPES_WITH_REASON / OP_LOGE_FOR_INVALID_GRAPH_NODE。 - 不使用 PIPE_ALL 全量栅栏,一律定向到具体流水。 - 按仓内钉定的 clang-format v18.1.8 全量格式化,清理行尾空白。 - MultiAddRmsNormDynamicQuant 的 geir 示例由 examples/arch35/ 上移到 examples/:该算子 def 声明支持 ascend910b/ascend910_93,而示例原先只在 arch35/(按 build.sh 的布局契约仅 950 系收),不满足 scripts/ci/check_examples_ut.py 的门禁;示例内容与 soc 无关,上移后同时覆盖 910b 与 950。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6879 ## 测试 全部在 Ascend950PR 真机、CANN 9.3.0 上以本分支出包验证(kernel 泛化带 --compare close 两方 isclose;三方精度不带 --compare,由 Spec 的 cross_check 生效并接 GPU 三方腿;geir 为 GE 直构图通路)。 | 算子 | kernel 泛化 | 三方 cross_check | geir 通路 | 其他 | | --- | --- | --- | --- | --- | | SoftmaxFocalLossGrad | 1129/1129 | 66/66 | 58/58 | 定向探测集 26/26 | | SoftmaxFocalLoss | 1198/1198 | 60/60 | 50/50 | 定向探测集 14/14 | | MultilabelMarginLoss | 1026/1026 | 60/60 | 27/27 | 定向探测集 16/16 | | PoissonNllLoss | 1024/1024 | 60/60 | 219/219 × 3 轮 | 并发配置连跑三轮红例恒为空 | | MSELossV2 | 1263/1263 | 60/60 | 185/185 | — | | MultiAddRmsNormDynamicQuant | 1113/1113 | 60/60 | 120/120 | 拒收集 2/2、10/10 按预期全 FAIL | 同步缺陷的取证方式:先以固定输入、单进程连跑 4 遍确认本方输出逐位一致(排除本方不确定性),再在暴露过偶现的并发配置(--pc 2 + 固定种子)下连跑三轮,红例集合恒为空。 性能(NPU 为 release 二进制 --run 12,竞品为 A100 开启 torch.compile 融合后的 device time,取 3 轮最小值): | 算子 | 用例数 | G/N 均值 | G/N 中位 | G/N 最小 | <0.1 例数 | | --- | --- | --- | --- | --- | --- | | SoftmaxFocalLossGrad | 200 | 0.936 | 0.828 | 0.199 | 0 | | SoftmaxFocalLoss | 200 | 9.766 | 9.499 | 0.596 | 0 | 跨核排空的开销实测低于测量噪声:PoissonNllLoss 同用例集中位比值 0.997(最差 1.065);MultilabelMarginLoss 在固定种子下"有/无排空"中位比值 0.975,而同一包重复跑的噪声带已达 0.32~1.93。 ## 文档更新 - 更新 MultiAddRmsNormDynamicQuant README:补充 x1 列表内各张量 shape/dtype 一致、gamma 与 x1 末维一致、epsilon 必须大于零、smooth_scale2 未输入时 y2/scale2 的 shape 与语义;恢复"约束说明"两条(空 Tensor 空进空出;归约轴末维为 0 不支持),该行为经实测确认:(0, 8) PASS、(4, 0) 拒收。 - 更新 SoftmaxFocalLoss / PoissonNllLoss / MultilabelMarginLoss 的接口与支持面描述。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11977 | 8 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
fix: 修复 6 算子 arch35 扫描定界出的缺陷并补齐验证钩子 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !11977 merge fix/golden-spec-3ops into master fix: 修复 6 算子 arch35 扫描定界出的缺陷并补齐验证钩子 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 6 个算子 arch35(A5) 路径上扫描定界出的缺陷,并补齐对应验证钩子。本轮集中修复**精度**与**跨核同步**两类问题,另含小 D 档性能改造。 ### 一、跨核同步缺陷(并发下偶现错误) SyncAll() 之前未排空本核流水,而写 workspace 的 DataCopyPad 是异步出口流水(头文件标注 __out_pipe__(MTE3)),0 号核可能读到其他核尚未落地的 partial。该问题与时序/负载相关:同一用例、同一随机种子,在 --pc 2 并发下两轮判定不一致(一轮 219/219 全绿,另一轮 1 例红)。 - PoissonNllLoss:SyncAll() 前补 AscendC::PipeBarrier<PIPE_MTE3>();收尾同步的固定事件号 EVENT_ID0 改为 FetchEventID 分配(固定号与在飞的同号事件冲突会漏同步)。 - MultilabelMarginLoss:两处跨核栅栏前补同样的定向排空(核 0 的 InitGlobalMemory 清零、StageCorePartial 的异步写)。 - MSELossV2:原有的 PipeBarrier<PIPE_ALL> 收窄为 PipeBarrier<PIPE_MTE3>,只排需要的出口流水。 - SoftmaxFocalLossGrad:补齐列预置(矢量写)与首次搬入(MTE2 写同一片 UB)之间补 HardEvent::V_MTE2 事件对。 ### 二、精度缺陷 - SoftmaxFocalLoss:ce/fw 的低位残差槽未按 tile 清零。(hi, lo) 是读改写,不清零会把 UB 残留当作上一轮残差累加(全量泛化 1198 例中 111 例红,全部集中在 reduction=none 且 D≥1000 的精确路径)。 - PoissonNllLoss:reduction=sum/mean 的段内规约原用库函数整段 ReduceSum(块间无补偿裸加)、段间又是 partial +=,绝对误差随块数/段数增长。改为块内硬件树形 + 块间/段间 TwoSum 携带 (hi, lo)、只在最末并一次,误差与块数无关。三方 cross_check 的 rmse 比值由 4.55/6.01/8.31 降到 0.30/1.00/1.00。 - SoftmaxFocalLossGrad:搬入参数 rightPadding 只能把一行补到 32B 块边界,行距超出该块的部分改走 dstStride(原写法在 int32 目标缓冲上会下发非法补齐长度,D=1/2/4/6/21 全线 VEC_ERROR);搬出 srcStride 由统一行距与块补齐长度算出,不再假定为 0。 - MultilabelMarginLoss:块对齐长度改为向下取到 8 的倍数(向上取整会让 B 超过 k,块内顺序累加成为主导误差项)。 ### 三、性能改造(arch35 小 D / 大 D 档) - SoftmaxFocalLossGrad - 小 D(2 的幂且小于自然行距)改紧致布局:不做逐行 32B 补齐,车道利用率由 D/64 提到 100%。 - 精确路径将 wf/wd/ce/wt 四条补偿链交错进同一循环(各带独立临时寄存器),替代原四次顺序调用——原先每条链是"17 条相互依赖指令 × 块数"的串行链,矢量单元大部分时间在等前一条结果。 - ReduceDataBlock 路径支持一行两块(按块跨步加载后逐元素相加,等价 16 元素平衡树)。 - SoftmaxFocalLoss:精确路径由逐行标量版改为行槽矢量 + 双链交错。 ### 四、代码规范 - 新增/改动代码不再使用 OP_LOGE,按语义改用 OP_LOGE_FOR_INVALID_VALUE_WITH_REASON / ..._INVALID_SHAPE(S|DIM)_WITH_REASON / ..._INVALID_DTYPES_WITH_REASON / OP_LOGE_FOR_INVALID_GRAPH_NODE。 - 不使用 PIPE_ALL 全量栅栏,一律定向到具体流水。 - 按仓内钉定的 clang-format v18.1.8 全量格式化,清理行尾空白。 - MultiAddRmsNormDynamicQuant 的 geir 示例由 examples/arch35/ 上移到 examples/:该算子 def 声明支持 ascend910b/ascend910_93,而示例原先只在 arch35/(按 build.sh 的布局契约仅 950 系收),不满足 scripts/ci/check_examples_ut.py 的门禁;示例内容与 soc 无关,上移后同时覆盖 910b 与 950。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6879 ## 测试 全部在 Ascend950PR 真机、CANN 9.3.0 上以本分支出包验证(kernel 泛化带 --compare close 两方 isclose;三方精度不带 --compare,由 Spec 的 cross_check 生效并接 GPU 三方腿;geir 为 GE 直构图通路)。 | 算子 | kernel 泛化 | 三方 cross_check | geir 通路 | 其他 | | --- | --- | --- | --- | --- | | SoftmaxFocalLossGrad | 1129/1129 | 66/66 | 58/58 | 定向探测集 26/26 | | SoftmaxFocalLoss | 1198/1198 | 60/60 | 50/50 | 定向探测集 14/14 | | MultilabelMarginLoss | 1026/1026 | 60/60 | 27/27 | 定向探测集 16/16 | | PoissonNllLoss | 1024/1024 | 60/60 | 219/219 × 3 轮 | 并发配置连跑三轮红例恒为空 | | MSELossV2 | 1263/1263 | 60/60 | 185/185 | — | | MultiAddRmsNormDynamicQuant | 1113/1113 | 60/60 | 120/120 | 拒收集 2/2、10/10 按预期全 FAIL | 同步缺陷的取证方式:先以固定输入、单进程连跑 4 遍确认本方输出逐位一致(排除本方不确定性),再在暴露过偶现的并发配置(--pc 2 + 固定种子)下连跑三轮,红例集合恒为空。 性能(NPU 为 release 二进制 --run 12,竞品为 A100 开启 torch.compile 融合后的 device time,取 3 轮最小值): | 算子 | 用例数 | G/N 均值 | G/N 中位 | G/N 最小 | <0.1 例数 | | --- | --- | --- | --- | --- | --- | | SoftmaxFocalLossGrad | 200 | 0.936 | 0.828 | 0.199 | 0 | | SoftmaxFocalLoss | 200 | 9.766 | 9.499 | 0.596 | 0 | 跨核排空的开销实测低于测量噪声:PoissonNllLoss 同用例集中位比值 0.997(最差 1.065);MultilabelMarginLoss 在固定种子下"有/无排空"中位比值 0.975,而同一包重复跑的噪声带已达 0.32~1.93。 ## 文档更新 - 更新 MultiAddRmsNormDynamicQuant README:补充 x1 列表内各张量 shape/dtype 一致、gamma 与 x1 末维一致、epsilon 必须大于零、smooth_scale2 未输入时 y2/scale2 的 shape 与语义;恢复"约束说明"两条(空 Tensor 空进空出;归约轴末维为 0 不支持),该行为经实测确认:(0, 8) PASS、(4, 0) 拒收。 - 更新 SoftmaxFocalLoss / PoissonNllLoss / MultilabelMarginLoss 的接口与支持面描述。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11977 | 8 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 28 天前 | |
[fix] 修正 14 个 CMakeLists.txt/Python 文件许可头中的 NBSP(U+00A0) Co-authored-by: NUAAwqy<162230229@nuaa.edu.cn> # message auto-generated for no-merge-commit merge: !11488 merge fix/issue-6381-nbsp-non-cpp-license-headers into master [fix] 修正 14 个 CMakeLists.txt/Python 文件许可头中的 NBSP(U+00A0) Created-by: NUAA_wqy Commit-by: NUAAwqy Merged-by: cann-robot Description: ## 描述 **现状问题**:14 个非 C/C++ 文件(6 个 CMakeLists.txt + 8 个 Python)的许可头写成 #<NBSP>This program is free software, ...,即注释符 # 后直接是一个 NBSP(U+00A0) 再跟正文,而本仓 14900+ 个文件 写的是 # This program is free software, ...。与 #6335(C/C++ 文件版)是同一判据、不同文件集,按原文精确匹配的 许可/合规扫描同样认不出这 14 个头。 **改动方法**:每个文件把许可头里的 #<NBSP>This program is free software 替换为 # This program is free software (仅在文件前 1200 字节内首次出现处替换)。 **影响面**:14 个文件各 1 行,各只改 1 个不可见字符。 ## 变更类型 - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [x] 🧹 代码/许可规范修复,请描述:许可头中 NBSP 的合规修复(C/C++ 之外的剩余文件) ## 关联的Issue #6381 ## 测试 已完成的测试用例和场景: 1. 对 git ls-files 中全部 .py/.txt/.cmake/.sh 扫描 #\xc2\xa0This program is free software,命中 **14** 个文件并完成替换。 2. 逐文件 git diff 确认每处变更都是 #<NBSP> → # 的单个字符替换,git diff --shortstat 为 14 files changed, 14 insertions(+), 14 deletions(-)。 3. 8 个 Python 文件逐文件 python -m py_compile 通过(PYCOMPILE_OK)。 4. 复扫修改后文件前 1200 字节:该 NBSP 写法剩余 0 处。 补充的UT用例:无(不涉及算子计算逻辑)。 ## 文档更新 NA ## 合入检查 - [x] 已阅读 CONTRIBUTING.md,commit message 含类型标签与 DCO 签名(Signed-off-by) - [x] 代码/文档遵循项目整体风格,改动最小且聚焦于该 Issue - [x] 已完成本地验证,验证方法见"测试"章节 ## DCO Signed-off-by: NUAAwqy <162230229@nuaa.edu.cn> See merge request: cann/ops-nn!11488 | 6 天前 | |
sigmoid_cross_entropy_with_logits_v2和swiglu_group算子支持Ascend960平台 Co-authored-by: taochangmin<taochangmin@huawei.com> # message auto-generated for no-merge-commit merge: !12041 merge sigmoid_to_blue into master sigmoid_cross_entropy_with_logits_v2和swiglu_group算子支持Ascend960平台 Created-by: taochangmin Commit-by: taochangmin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> sigmoid_cross_entropy_with_logits_v2和swiglu_group算子支持Ascend960平台 1.opdef增加ascend960dt配置 2.config中增加json文件 3.CMakeLists中新增ascend960dt编译选项 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6766 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ascend950和ascend960编译验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12041 | 11 天前 | |
soft_shrink_grad,sgd,sigmoid_focal_loss加固 Co-authored-by: z30075199<zhangxin660@h-partners.com> # message auto-generated for no-merge-commit merge: !12403 merge long_tail_nn_modify into master soft_shrink_grad,sgd,sigmoid_focal_loss加固 Created-by: z30075199 Commit-by: z30075199 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> soft_shrink_grad,sgd,sigmoid_focal_loss算子加固 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/7236 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12403 | 4 天前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 28 天前 | |
feat: 增加 ascend350 平台支持(22 个算子) Co-authored-by: wenqi_wu<wenqiwu0628@163.com> # message auto-generated for no-merge-commit merge: !11038 merge adapt-ascend350 into master feat: 增加 ascend350 平台支持(22 个算子) Created-by: wenqi_wu Commit-by: wenqi_wu Merged-by: cann-robot Description: ## 描述 为 22 个算子增加 ascend350(arch35)平台支持,并将 Threshold 的 aclnn 接口 SocVersion BF16 判断重构为 NpuArch 判断。 算子列表(22 个): - activation: Relu6D、SoftplusGrad、Threshold - index: InplaceUpdate、ScatterNonAliasingAdd、SparseSegmentSumGrad - loss: SmoothL1Loss、SmoothL1LossGrad - norm: LpNormUpdate - optim: FusedMulApplyMomentum、FusedMulApplyMomentumExtern、SparseApplyAdadelta、SparseApplyFtrl、SparseApplyFtrlV2、SparseApplyProximalAdagrad、SparseApplyRMSProp - pooling: Dilation2D - quant: ActULQClampMaxGrad、ActULQClampMinGrad、ActsULQInputGrad、GroupedDynamicMxQuantWithDualAxis、SwigluBackwardMxQuantWithDualAxis 改动内容: 1. CMakeLists:SUPPORT_COMPUTE_UNIT 追加 ascend350,SUPPORT_TILING_DIR 追加 arch35; 2. op_host/*_def.cpp:追加 AICore().AddConfig("ascend350", ...); 3. op_kernel/CMakeLists:COMPUTE_UNITS 追加 ascend350; 4. 3 个算子复制 op_host/config/ascend950/*.json 到 ascend350/(ScatterNonAliasingAdd、GroupedDynamicMxQuantWithDualAxis、SwigluBackwardMxQuantWithDualAxis); 5. Threshold op_api/aclnn_threshold.cpp:GetDtypeSupportList 的 SocVersion 判断重构为 NpuArch 判断。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6131 ## 测试 <!--TODO--> ## 文档更新 无需更新文档 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11038 | 8 天前 | |
feat: 增加 ascend350 平台支持(22 个算子) Co-authored-by: wenqi_wu<wenqiwu0628@163.com> # message auto-generated for no-merge-commit merge: !11038 merge adapt-ascend350 into master feat: 增加 ascend350 平台支持(22 个算子) Created-by: wenqi_wu Commit-by: wenqi_wu Merged-by: cann-robot Description: ## 描述 为 22 个算子增加 ascend350(arch35)平台支持,并将 Threshold 的 aclnn 接口 SocVersion BF16 判断重构为 NpuArch 判断。 算子列表(22 个): - activation: Relu6D、SoftplusGrad、Threshold - index: InplaceUpdate、ScatterNonAliasingAdd、SparseSegmentSumGrad - loss: SmoothL1Loss、SmoothL1LossGrad - norm: LpNormUpdate - optim: FusedMulApplyMomentum、FusedMulApplyMomentumExtern、SparseApplyAdadelta、SparseApplyFtrl、SparseApplyFtrlV2、SparseApplyProximalAdagrad、SparseApplyRMSProp - pooling: Dilation2D - quant: ActULQClampMaxGrad、ActULQClampMinGrad、ActsULQInputGrad、GroupedDynamicMxQuantWithDualAxis、SwigluBackwardMxQuantWithDualAxis 改动内容: 1. CMakeLists:SUPPORT_COMPUTE_UNIT 追加 ascend350,SUPPORT_TILING_DIR 追加 arch35; 2. op_host/*_def.cpp:追加 AICore().AddConfig("ascend350", ...); 3. op_kernel/CMakeLists:COMPUTE_UNITS 追加 ascend350; 4. 3 个算子复制 op_host/config/ascend950/*.json 到 ascend350/(ScatterNonAliasingAdd、GroupedDynamicMxQuantWithDualAxis、SwigluBackwardMxQuantWithDualAxis); 5. Threshold op_api/aclnn_threshold.cpp:GetDtypeSupportList 的 SocVersion 判断重构为 NpuArch 判断。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6131 ## 测试 <!--TODO--> ## 文档更新 无需更新文档 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11038 | 8 天前 | |
[fix] 修正 14 个 CMakeLists.txt/Python 文件许可头中的 NBSP(U+00A0) Co-authored-by: NUAAwqy<162230229@nuaa.edu.cn> # message auto-generated for no-merge-commit merge: !11488 merge fix/issue-6381-nbsp-non-cpp-license-headers into master [fix] 修正 14 个 CMakeLists.txt/Python 文件许可头中的 NBSP(U+00A0) Created-by: NUAA_wqy Commit-by: NUAAwqy Merged-by: cann-robot Description: ## 描述 **现状问题**:14 个非 C/C++ 文件(6 个 CMakeLists.txt + 8 个 Python)的许可头写成 #<NBSP>This program is free software, ...,即注释符 # 后直接是一个 NBSP(U+00A0) 再跟正文,而本仓 14900+ 个文件 写的是 # This program is free software, ...。与 #6335(C/C++ 文件版)是同一判据、不同文件集,按原文精确匹配的 许可/合规扫描同样认不出这 14 个头。 **改动方法**:每个文件把许可头里的 #<NBSP>This program is free software 替换为 # This program is free software (仅在文件前 1200 字节内首次出现处替换)。 **影响面**:14 个文件各 1 行,各只改 1 个不可见字符。 ## 变更类型 - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [x] 🧹 代码/许可规范修复,请描述:许可头中 NBSP 的合规修复(C/C++ 之外的剩余文件) ## 关联的Issue #6381 ## 测试 已完成的测试用例和场景: 1. 对 git ls-files 中全部 .py/.txt/.cmake/.sh 扫描 #\xc2\xa0This program is free software,命中 **14** 个文件并完成替换。 2. 逐文件 git diff 确认每处变更都是 #<NBSP> → # 的单个字符替换,git diff --shortstat 为 14 files changed, 14 insertions(+), 14 deletions(-)。 3. 8 个 Python 文件逐文件 python -m py_compile 通过(PYCOMPILE_OK)。 4. 复扫修改后文件前 1200 字节:该 NBSP 写法剩余 0 处。 补充的UT用例:无(不涉及算子计算逻辑)。 ## 文档更新 NA ## 合入检查 - [x] 已阅读 CONTRIBUTING.md,commit message 含类型标签与 DCO 签名(Signed-off-by) - [x] 代码/文档遵循项目整体风格,改动最小且聚焦于该 Issue - [x] 已完成本地验证,验证方法见"测试"章节 ## DCO Signed-off-by: NUAAwqy <162230229@nuaa.edu.cn> See merge request: cann/ops-nn!11488 | 6 天前 | |
[fix] 修正 14 个 CMakeLists.txt/Python 文件许可头中的 NBSP(U+00A0) Co-authored-by: NUAAwqy<162230229@nuaa.edu.cn> # message auto-generated for no-merge-commit merge: !11488 merge fix/issue-6381-nbsp-non-cpp-license-headers into master [fix] 修正 14 个 CMakeLists.txt/Python 文件许可头中的 NBSP(U+00A0) Created-by: NUAA_wqy Commit-by: NUAAwqy Merged-by: cann-robot Description: ## 描述 **现状问题**:14 个非 C/C++ 文件(6 个 CMakeLists.txt + 8 个 Python)的许可头写成 #<NBSP>This program is free software, ...,即注释符 # 后直接是一个 NBSP(U+00A0) 再跟正文,而本仓 14900+ 个文件 写的是 # This program is free software, ...。与 #6335(C/C++ 文件版)是同一判据、不同文件集,按原文精确匹配的 许可/合规扫描同样认不出这 14 个头。 **改动方法**:每个文件把许可头里的 #<NBSP>This program is free software 替换为 # This program is free software (仅在文件前 1200 字节内首次出现处替换)。 **影响面**:14 个文件各 1 行,各只改 1 个不可见字符。 ## 变更类型 - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [x] 🧹 代码/许可规范修复,请描述:许可头中 NBSP 的合规修复(C/C++ 之外的剩余文件) ## 关联的Issue #6381 ## 测试 已完成的测试用例和场景: 1. 对 git ls-files 中全部 .py/.txt/.cmake/.sh 扫描 #\xc2\xa0This program is free software,命中 **14** 个文件并完成替换。 2. 逐文件 git diff 确认每处变更都是 #<NBSP> → # 的单个字符替换,git diff --shortstat 为 14 files changed, 14 insertions(+), 14 deletions(-)。 3. 8 个 Python 文件逐文件 python -m py_compile 通过(PYCOMPILE_OK)。 4. 复扫修改后文件前 1200 字节:该 NBSP 写法剩余 0 处。 补充的UT用例:无(不涉及算子计算逻辑)。 ## 文档更新 NA ## 合入检查 - [x] 已阅读 CONTRIBUTING.md,commit message 含类型标签与 DCO 签名(Signed-off-by) - [x] 代码/文档遵循项目整体风格,改动最小且聚焦于该 Issue - [x] 已完成本地验证,验证方法见"测试"章节 ## DCO Signed-off-by: NUAAwqy <162230229@nuaa.edu.cn> See merge request: cann/ops-nn!11488 | 6 天前 | |
[fix] 修正 14 个 CMakeLists.txt/Python 文件许可头中的 NBSP(U+00A0) Co-authored-by: NUAAwqy<162230229@nuaa.edu.cn> # message auto-generated for no-merge-commit merge: !11488 merge fix/issue-6381-nbsp-non-cpp-license-headers into master [fix] 修正 14 个 CMakeLists.txt/Python 文件许可头中的 NBSP(U+00A0) Created-by: NUAA_wqy Commit-by: NUAAwqy Merged-by: cann-robot Description: ## 描述 **现状问题**:14 个非 C/C++ 文件(6 个 CMakeLists.txt + 8 个 Python)的许可头写成 #<NBSP>This program is free software, ...,即注释符 # 后直接是一个 NBSP(U+00A0) 再跟正文,而本仓 14900+ 个文件 写的是 # This program is free software, ...。与 #6335(C/C++ 文件版)是同一判据、不同文件集,按原文精确匹配的 许可/合规扫描同样认不出这 14 个头。 **改动方法**:每个文件把许可头里的 #<NBSP>This program is free software 替换为 # This program is free software (仅在文件前 1200 字节内首次出现处替换)。 **影响面**:14 个文件各 1 行,各只改 1 个不可见字符。 ## 变更类型 - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [x] 🧹 代码/许可规范修复,请描述:许可头中 NBSP 的合规修复(C/C++ 之外的剩余文件) ## 关联的Issue #6381 ## 测试 已完成的测试用例和场景: 1. 对 git ls-files 中全部 .py/.txt/.cmake/.sh 扫描 #\xc2\xa0This program is free software,命中 **14** 个文件并完成替换。 2. 逐文件 git diff 确认每处变更都是 #<NBSP> → # 的单个字符替换,git diff --shortstat 为 14 files changed, 14 insertions(+), 14 deletions(-)。 3. 8 个 Python 文件逐文件 python -m py_compile 通过(PYCOMPILE_OK)。 4. 复扫修改后文件前 1200 字节:该 NBSP 写法剩余 0 处。 补充的UT用例:无(不涉及算子计算逻辑)。 ## 文档更新 NA ## 合入检查 - [x] 已阅读 CONTRIBUTING.md,commit message 含类型标签与 DCO 签名(Signed-off-by) - [x] 代码/文档遵循项目整体风格,改动最小且聚焦于该 Issue - [x] 已完成本地验证,验证方法见"测试"章节 ## DCO Signed-off-by: NUAAwqy <162230229@nuaa.edu.cn> See merge request: cann/ops-nn!11488 | 6 天前 | |
[fix] 修正 14 个 CMakeLists.txt/Python 文件许可头中的 NBSP(U+00A0) Co-authored-by: NUAAwqy<162230229@nuaa.edu.cn> # message auto-generated for no-merge-commit merge: !11488 merge fix/issue-6381-nbsp-non-cpp-license-headers into master [fix] 修正 14 个 CMakeLists.txt/Python 文件许可头中的 NBSP(U+00A0) Created-by: NUAA_wqy Commit-by: NUAAwqy Merged-by: cann-robot Description: ## 描述 **现状问题**:14 个非 C/C++ 文件(6 个 CMakeLists.txt + 8 个 Python)的许可头写成 #<NBSP>This program is free software, ...,即注释符 # 后直接是一个 NBSP(U+00A0) 再跟正文,而本仓 14900+ 个文件 写的是 # This program is free software, ...。与 #6335(C/C++ 文件版)是同一判据、不同文件集,按原文精确匹配的 许可/合规扫描同样认不出这 14 个头。 **改动方法**:每个文件把许可头里的 #<NBSP>This program is free software 替换为 # This program is free software (仅在文件前 1200 字节内首次出现处替换)。 **影响面**:14 个文件各 1 行,各只改 1 个不可见字符。 ## 变更类型 - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [x] 🧹 代码/许可规范修复,请描述:许可头中 NBSP 的合规修复(C/C++ 之外的剩余文件) ## 关联的Issue #6381 ## 测试 已完成的测试用例和场景: 1. 对 git ls-files 中全部 .py/.txt/.cmake/.sh 扫描 #\xc2\xa0This program is free software,命中 **14** 个文件并完成替换。 2. 逐文件 git diff 确认每处变更都是 #<NBSP> → # 的单个字符替换,git diff --shortstat 为 14 files changed, 14 insertions(+), 14 deletions(-)。 3. 8 个 Python 文件逐文件 python -m py_compile 通过(PYCOMPILE_OK)。 4. 复扫修改后文件前 1200 字节:该 NBSP 写法剩余 0 处。 补充的UT用例:无(不涉及算子计算逻辑)。 ## 文档更新 NA ## 合入检查 - [x] 已阅读 CONTRIBUTING.md,commit message 含类型标签与 DCO 签名(Signed-off-by) - [x] 代码/文档遵循项目整体风格,改动最小且聚焦于该 Issue - [x] 已完成本地验证,验证方法见"测试"章节 ## DCO Signed-off-by: NUAAwqy <162230229@nuaa.edu.cn> See merge request: cann/ops-nn!11488 | 6 天前 | |
支持dvlite(ascend350):新增10个算子binary配置并扩展14个算子compute unit支持 Co-authored-by: yangjinwen<yangjinwen2@huawei.com> # message auto-generated for no-merge-commit merge: !12498 merge dev-dvlite into master 支持dvlite(ascend350):新增10个算子binary配置并扩展14个算子compute unit支持 Created-by: yangjinwen Commit-by: yangjinwen Merged-by: cann-robot Description: ## 变更说明 本 PR 为 dvlite(Ascend350)芯片提供算子适配支持,基于已有 ascend950(arch35)tiling 架构扩展 ascend350 计算单元,不改变 ascend910b/ascend910_93/ascend950 等既有平台行为。 ### 1. 新增 10 个算子的 binary 配置文件(共 14 份) | 算子 | 配置文件 | |------|----------| | ForeachMaximumScalarList | foreach/foreach_maximum_scalar_list/op_host/config/ascend350/foreach_maximum_scalar_list_binary.json | | ForeachPowScalar | foreach/foreach_pow_scalar/op_host/config/ascend350/foreach_pow_scalar_binary.json | | ForeachPowScalarAndTensor | foreach/foreach_pow_scalar_and_tensor/op_host/config/ascend350/foreach_pow_scalar_and_tensor_binary.json | | ForeachSinh | foreach/foreach_sinh/op_host/config/ascend350/foreach_sinh_binary.json | | SoftmaxFocalLoss | loss/softmax_focal_loss/op_host/config/ascend350/softmax_focal_loss_binary.json | | GnTrainingReduce | norm/gn_training_reduce/op_host/config/ascend350/gn_training_reduce_binary.json | | MultiAddRmsNormDynamicQuant | norm/multi_add_rms_norm_dynamic_quant/op_host/config/ascend350/multi_add_rms_norm_dynamic_quant_binary.json | | SingleLayerLstm | rnn/single_layer_lstm/op_host/config/ascend350/single_layer_lstm_binary.json | | ScaledMaskedSoftmaxV2 | vfusion/scaled_masked_softmax_v2/op_host/config/{ascend350,ascend960dt,ascend960pr}/scaled_masked_softmax_v2_binary.json(3 份) | | ScaledMaskedSoftmaxGradV2 | vfusion/scaled_masked_softmax_grad_v2/op_host/config/{ascend350,ascend960dt,ascend960pr}/scaled_masked_softmax_grad_v2_binary.json(3 份) | ### 2. CMakeLists / op_host 注册扩展计算单元 上述算子及 ScatterMax、ScatterMaxWithArgmax、LambUpdateWithLr、FusedMulApplyMomentumExtern 共 14 个算子,通过 SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR/COMPUTE_UNITS(CMakeLists)与 AICore().AddConfig(...)(def.cpp)注册: - 12 个算子注册 ascend350,tiling 复用 ascend950 的 arch35 目录; - ScaledMaskedSoftmaxV2、ScaledMaskedSoftmaxGradV2 各注册 ascend350、ascend960dt、ascend960pr 三个计算单元; - 公共模块 scatter_reduce_common(index/scatter_reduce_common)注册 ascend350(tiling 复用 arch35),供 ScatterMax/ScatterDiv/ScatterMin/ScatterMul 等 scatter 系列算子复用。 ### 3. op_api / infershape 适配 - aclnn_foreach_sinh:dtype 支持列表增加 SocVersion::ASCEND350 - single_layer_lstm:SoC 校验由仅 ascend950 扩展至 ascend950/ascend350 - softmax_focal_loss、multi_add_rms_norm_dynamic_quant:infershape 平台分支覆盖 short_soc_version == "Ascend350" ## 影响范围 53 files changed, +2712/-65。仅新增 ascend350(及 ScaledMaskedSoftmaxV2/ScaledMaskedSoftmaxGradV2 的 ascend960dt/ascend960pr)计算单元支持,既有平台行为不变。 关联的Issue:#7144 See merge request: cann/ops-nn!12498 | 4 天前 | |
fix: 修复 6 算子 arch35 扫描定界出的缺陷并补齐验证钩子 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !11977 merge fix/golden-spec-3ops into master fix: 修复 6 算子 arch35 扫描定界出的缺陷并补齐验证钩子 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 6 个算子 arch35(A5) 路径上扫描定界出的缺陷,并补齐对应验证钩子。本轮集中修复**精度**与**跨核同步**两类问题,另含小 D 档性能改造。 ### 一、跨核同步缺陷(并发下偶现错误) SyncAll() 之前未排空本核流水,而写 workspace 的 DataCopyPad 是异步出口流水(头文件标注 __out_pipe__(MTE3)),0 号核可能读到其他核尚未落地的 partial。该问题与时序/负载相关:同一用例、同一随机种子,在 --pc 2 并发下两轮判定不一致(一轮 219/219 全绿,另一轮 1 例红)。 - PoissonNllLoss:SyncAll() 前补 AscendC::PipeBarrier<PIPE_MTE3>();收尾同步的固定事件号 EVENT_ID0 改为 FetchEventID 分配(固定号与在飞的同号事件冲突会漏同步)。 - MultilabelMarginLoss:两处跨核栅栏前补同样的定向排空(核 0 的 InitGlobalMemory 清零、StageCorePartial 的异步写)。 - MSELossV2:原有的 PipeBarrier<PIPE_ALL> 收窄为 PipeBarrier<PIPE_MTE3>,只排需要的出口流水。 - SoftmaxFocalLossGrad:补齐列预置(矢量写)与首次搬入(MTE2 写同一片 UB)之间补 HardEvent::V_MTE2 事件对。 ### 二、精度缺陷 - SoftmaxFocalLoss:ce/fw 的低位残差槽未按 tile 清零。(hi, lo) 是读改写,不清零会把 UB 残留当作上一轮残差累加(全量泛化 1198 例中 111 例红,全部集中在 reduction=none 且 D≥1000 的精确路径)。 - PoissonNllLoss:reduction=sum/mean 的段内规约原用库函数整段 ReduceSum(块间无补偿裸加)、段间又是 partial +=,绝对误差随块数/段数增长。改为块内硬件树形 + 块间/段间 TwoSum 携带 (hi, lo)、只在最末并一次,误差与块数无关。三方 cross_check 的 rmse 比值由 4.55/6.01/8.31 降到 0.30/1.00/1.00。 - SoftmaxFocalLossGrad:搬入参数 rightPadding 只能把一行补到 32B 块边界,行距超出该块的部分改走 dstStride(原写法在 int32 目标缓冲上会下发非法补齐长度,D=1/2/4/6/21 全线 VEC_ERROR);搬出 srcStride 由统一行距与块补齐长度算出,不再假定为 0。 - MultilabelMarginLoss:块对齐长度改为向下取到 8 的倍数(向上取整会让 B 超过 k,块内顺序累加成为主导误差项)。 ### 三、性能改造(arch35 小 D / 大 D 档) - SoftmaxFocalLossGrad - 小 D(2 的幂且小于自然行距)改紧致布局:不做逐行 32B 补齐,车道利用率由 D/64 提到 100%。 - 精确路径将 wf/wd/ce/wt 四条补偿链交错进同一循环(各带独立临时寄存器),替代原四次顺序调用——原先每条链是"17 条相互依赖指令 × 块数"的串行链,矢量单元大部分时间在等前一条结果。 - ReduceDataBlock 路径支持一行两块(按块跨步加载后逐元素相加,等价 16 元素平衡树)。 - SoftmaxFocalLoss:精确路径由逐行标量版改为行槽矢量 + 双链交错。 ### 四、代码规范 - 新增/改动代码不再使用 OP_LOGE,按语义改用 OP_LOGE_FOR_INVALID_VALUE_WITH_REASON / ..._INVALID_SHAPE(S|DIM)_WITH_REASON / ..._INVALID_DTYPES_WITH_REASON / OP_LOGE_FOR_INVALID_GRAPH_NODE。 - 不使用 PIPE_ALL 全量栅栏,一律定向到具体流水。 - 按仓内钉定的 clang-format v18.1.8 全量格式化,清理行尾空白。 - MultiAddRmsNormDynamicQuant 的 geir 示例由 examples/arch35/ 上移到 examples/:该算子 def 声明支持 ascend910b/ascend910_93,而示例原先只在 arch35/(按 build.sh 的布局契约仅 950 系收),不满足 scripts/ci/check_examples_ut.py 的门禁;示例内容与 soc 无关,上移后同时覆盖 910b 与 950。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6879 ## 测试 全部在 Ascend950PR 真机、CANN 9.3.0 上以本分支出包验证(kernel 泛化带 --compare close 两方 isclose;三方精度不带 --compare,由 Spec 的 cross_check 生效并接 GPU 三方腿;geir 为 GE 直构图通路)。 | 算子 | kernel 泛化 | 三方 cross_check | geir 通路 | 其他 | | --- | --- | --- | --- | --- | | SoftmaxFocalLossGrad | 1129/1129 | 66/66 | 58/58 | 定向探测集 26/26 | | SoftmaxFocalLoss | 1198/1198 | 60/60 | 50/50 | 定向探测集 14/14 | | MultilabelMarginLoss | 1026/1026 | 60/60 | 27/27 | 定向探测集 16/16 | | PoissonNllLoss | 1024/1024 | 60/60 | 219/219 × 3 轮 | 并发配置连跑三轮红例恒为空 | | MSELossV2 | 1263/1263 | 60/60 | 185/185 | — | | MultiAddRmsNormDynamicQuant | 1113/1113 | 60/60 | 120/120 | 拒收集 2/2、10/10 按预期全 FAIL | 同步缺陷的取证方式:先以固定输入、单进程连跑 4 遍确认本方输出逐位一致(排除本方不确定性),再在暴露过偶现的并发配置(--pc 2 + 固定种子)下连跑三轮,红例集合恒为空。 性能(NPU 为 release 二进制 --run 12,竞品为 A100 开启 torch.compile 融合后的 device time,取 3 轮最小值): | 算子 | 用例数 | G/N 均值 | G/N 中位 | G/N 最小 | <0.1 例数 | | --- | --- | --- | --- | --- | --- | | SoftmaxFocalLossGrad | 200 | 0.936 | 0.828 | 0.199 | 0 | | SoftmaxFocalLoss | 200 | 9.766 | 9.499 | 0.596 | 0 | 跨核排空的开销实测低于测量噪声:PoissonNllLoss 同用例集中位比值 0.997(最差 1.065);MultilabelMarginLoss 在固定种子下"有/无排空"中位比值 0.975,而同一包重复跑的噪声带已达 0.32~1.93。 ## 文档更新 - 更新 MultiAddRmsNormDynamicQuant README:补充 x1 列表内各张量 shape/dtype 一致、gamma 与 x1 末维一致、epsilon 必须大于零、smooth_scale2 未输入时 y2/scale2 的 shape 与语义;恢复"约束说明"两条(空 Tensor 空进空出;归约轴末维为 0 不支持),该行为经实测确认:(0, 8) PASS、(4, 0) 拒收。 - 更新 SoftmaxFocalLoss / PoissonNllLoss / MultilabelMarginLoss 的接口与支持面描述。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11977 | 8 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 7 天前 | |
代码同步 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !450 merge master into master 代码同步 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!450 | 10 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 7 天前 | ||
| 7 天前 | ||
| 28 天前 | ||
| 12 天前 | ||
| 1 个月前 | ||
| 11 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 6 天前 | ||
| 28 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 28 天前 | ||
| 28 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 12 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 8 天前 | ||
| 7 天前 | ||
| 28 天前 | ||
| 6 天前 | ||
| 11 天前 | ||
| 4 天前 | ||
| 28 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 4 天前 | ||
| 8 天前 | ||
| 7 天前 | ||
| 10 个月前 |