本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
docs: add environment details to bug report Co-authored-by: yolic<chenyuning1@huawei.com> # message auto-generated for no-merge-commit merge: !10383 merge 0912report into master docs: add environment details to bug report Created-by: yolic Commit-by: yolic Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ISSUE添加模板,引导用户添加环境信息 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了ISSUE_TEMPLATE/bug-report.yml ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10383 | 12 天前 | |
修改swiglu_group_quant quantMode 2/3的yOrigin输出计算公式 Co-authored-by: shilulu<shilulu8@huawei.com> # message auto-generated for no-merge-commit merge: !10772 merge swiglu_group_quant_grad into master 修改swiglu_group_quant quantMode 2/3的yOrigin输出计算公式 Created-by: shilulu Commit-by: shilulu Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改swiglu_group_quant quantMode 2/3的yOrigin输出计算公式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6003 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10772 | 8 天前 | |
feat(aicpu): enable constant folding for migrated ops Co-authored-by: hid29204727<wangboyu20@huawei.com> # message auto-generated for no-merge-commit merge: !9280 merge codex/aicpu-const-folding into master feat(aicpu): enable constant folding for migrated ops Created-by: hid29204727 Commit-by: hid29204727 Merged-by: cann-robot Description: ## 描述 补充 ops-nn 仓 AICPU host 常量折叠注册通路,并为当前已标记 OPEN_OPS_FLAG 的 18 个迁移算子统一开启常量折叠支持。 主要改动: - 新增仓级 OPS_NN_REGISTER_CPU_KERNELV2 注册包装宏,host 构建优先注册 V2,device/custom/UT 保持 V1 回退。 - 为 add_modules_sources 和 add_all_modules_sources 增加 HOSTCPU 参数及 host OBJECT 收集逻辑。 - 为 18 个 OPEN_OPS_FLAG 算子补充 HOSTCPU TRUE、注册头文件和 V2 注册。 - host OBJECT 汇入 libopconstant_folding_nn.so。 ## 关联的Issue 无。 ## 测试 已完成以下静态验证: - git diff --check 通过。 - 18 个 OPEN_OPS_FLAG 算子均具备 HOSTCPU TRUE。 - 18 个算子均使用 OPS_NN_REGISTER_CPU_KERNELV2,无直接 V1 注册残留。 - 注册头文件、host 编译宏和仓级 so 收集通路检查通过。 当前 Windows 环境缺少 CANN、NPU、CMake 和远端构建桥,未执行 bash build.sh --pkg -j16;完整打包构建及常量折叠功能验证待 CANN Linux 环境/CI 完成。 ## 文档更新 无仓内文档变更。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9280 | 8 天前 | |
迁移重构 LayerNormFusionPass 与 LayerNormInferenceFusionPass 两条融合规则 Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9533 merge layer_norm_pass into master 迁移重构 LayerNormFusionPass 与 LayerNormInferenceFusionPass 两条融合规则 Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 新增 LayerNormFusionPass 和 LayerNormInferenceFusionPass 两条 GE 自定义融合规则,将 LayerNorm 的计算图展开形式融合为 LayerNorm 算子,减少图执行时的算子下发数量和中间结果访存。同步补充设计文档和融合模式图示。 ### 改动原因 LayerNorm 在 GE 图中以展开形式存在(多个 ReduceMean、Sub、Mul、Add 等基础算子),执行效率低。新增融合规则将展开图模式匹配后替换为 LayerNorm 算子节点,提升执行性能。 ### 改动方法 1. **LayerNormFusionPass**(训练场景): - 匹配训练版 LayerNorm 展开图:mean → SquaredDifference → Add(eps) → Mul → ReduceMean → Sub → Mul → Mul(rstd) → Mul(gamma) → Add(beta) - 支持交换律枚举(4 位),覆盖等价图拓扑变体 - 校验:keep_dims、axes 匹配、eps 位置、中间节点无外部消费者等 - 平台限制:NpuArch = 3510(Ascend 950PR/950DT) 2. **LayerNormInferenceFusionPass**(推理场景): - 匹配推理版 LayerNorm 展开图:mean1 → mean2 → Rsqrt → mul1 → mul2 → mul3 → Sub → Add - 支持交换律枚举(6 位),覆盖等价图拓扑变体 - 校验:推理流判别(不含 mean 的 SquaredDifference)、keep_dims、axes 匹配等 - 平台限制:NpuArch = 3510(Ascend 950PR/950DT) 3. **设计文档**:新增 LayerNormFusionPass.md 和 LayerNormInferenceFusionPass.md,描述融合模式(含图示)、使用约束(不支持动态 shape、输入参数限制、ReduceMean/Sub 限制、数据类型仅支持 FLOAT32/FLOAT16)、支持的型号。 4. **融合模式图示**:新增 6 张 PNG 图片,展示融合前后的图结构。 5. **math_proto_stub.cpp**(+101):新增 ReduceMean、SquaredDifference、Sub、Mul、Rsqrt 算子原型 stub,供融合规则 UT 构图使用。 涉及文件(15 个): - norm/layer_norm/op_graph/fusion_pass/layer_norm_fusion_pass.cpp(+462) - norm/layer_norm/op_graph/fusion_pass/layer_norm_fusion_pass.h(+33) - norm/layer_norm/op_graph/fusion_pass/layernorm_inference_fusion_pass.cpp(+377) - norm/layer_norm/op_graph/fusion_pass/layernorm_inference_fusion_pass.h(+33) - norm/layer_norm/docs/LayerNormFusionPass.md(+46) - norm/layer_norm/docs/LayerNormInferenceFusionPass.md(+39) - docs/zh/figures/LayerNormFusionPass_1~4.png(+12) - docs/zh/figures/LayerNormInferenceFusionPass_1~2.png(+6) - norm/layer_norm/tests/ut/op_graph/test_layer_norm_fusion_pass.cpp(+317) - norm/layer_norm/tests/ut/op_graph/test_layernorm_inference_fusion_pass.cpp(+279) - common/stub/op_graph/math_proto_stub.cpp(+101) ## 关联的Issue - #5852 ## 测试 - LayerNormFusionPassTest:9 个 UT 用例,覆盖融合成功(form A/B、交换律操作数、共享 axes const)、不融合场景(keep_dims=false、axes 不匹配、eps 位置错误、中间节点有外部消费者)。 - LayerNormInferenceFusionPassTest:6 个 UT 用例,覆盖融合成功(含交换律操作数、共享 axes const)、不融合场景(keep_dims=false、axes 不匹配、训练流不融合)。 - 测试环境:Ascend950(NpuArch=3510)。 ## 文档更新 - 新增 norm/layer_norm/docs/LayerNormFusionPass.md:训练场景融合规则设计文档 - 新增 norm/layer_norm/docs/LayerNormInferenceFusionPass.md:推理场景融合规则设计文档 - 新增 6 张融合模式图示 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9533 | 8 天前 | |
算子 UpdateTensorDesc 支持 ascend950 Co-authored-by: zhoulong50_hw<zhoulong50@huawei.com> # message auto-generated for no-merge-commit merge: !10344 merge update_tensor_desc into master 算子 UpdateTensorDesc 支持 ascend950 Created-by: zhoulong50_hw Commit-by: zhoulong50_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 算子 UpdateTensorDesc 支持 ascend950,支持 geir 通路。 实现了该算子的 tiling + kernel:主要思路是通过将输出搬入 UB,然后根据算子要求赋值,再搬出。 本次交付同时搭配了 tests 以及 examples。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5878 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 二级冒烟,泛化用例210条,geir 测试,ut 测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增ascend950算子,更新了op_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10344 | 10 天前 | |
feat(conv2d_v2): smallKernel parallelism/fm_partload 模板 M/H/W 轴 chunk 边界 L1 级 fmap 预加载 Co-authored-by: weixin_45565792<linbojin@huawei.com> # message auto-generated for no-merge-commit merge: !10307 merge master into master feat(conv2d_v2): smallKernel parallelism/fm_partload 模板 M/H/W 轴 chunk 边界 L1 级 fmap 预加载 Created-by: weixin_45565792 Commit-by: weixin_45565792 Merged-by: cann-robot Description: ## 描述 smallKernel parallelism/fm_partload 模板 M/H/W 轴 chunk 边界 L1 级 fmap 预加载 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue [#4835](https://gitcode.com/cann/ops-nn/issues/5795) <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> rdv pass;daily用例pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue [#4835](https://gitcode.com/cann/ops-nn/issues/5795) <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> rdv pass;daily用例pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10307 | 8 天前 | |
迁移重构 LayerNormFusionPass 与 LayerNormInferenceFusionPass 两条融合规则 Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9533 merge layer_norm_pass into master 迁移重构 LayerNormFusionPass 与 LayerNormInferenceFusionPass 两条融合规则 Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 新增 LayerNormFusionPass 和 LayerNormInferenceFusionPass 两条 GE 自定义融合规则,将 LayerNorm 的计算图展开形式融合为 LayerNorm 算子,减少图执行时的算子下发数量和中间结果访存。同步补充设计文档和融合模式图示。 ### 改动原因 LayerNorm 在 GE 图中以展开形式存在(多个 ReduceMean、Sub、Mul、Add 等基础算子),执行效率低。新增融合规则将展开图模式匹配后替换为 LayerNorm 算子节点,提升执行性能。 ### 改动方法 1. **LayerNormFusionPass**(训练场景): - 匹配训练版 LayerNorm 展开图:mean → SquaredDifference → Add(eps) → Mul → ReduceMean → Sub → Mul → Mul(rstd) → Mul(gamma) → Add(beta) - 支持交换律枚举(4 位),覆盖等价图拓扑变体 - 校验:keep_dims、axes 匹配、eps 位置、中间节点无外部消费者等 - 平台限制:NpuArch = 3510(Ascend 950PR/950DT) 2. **LayerNormInferenceFusionPass**(推理场景): - 匹配推理版 LayerNorm 展开图:mean1 → mean2 → Rsqrt → mul1 → mul2 → mul3 → Sub → Add - 支持交换律枚举(6 位),覆盖等价图拓扑变体 - 校验:推理流判别(不含 mean 的 SquaredDifference)、keep_dims、axes 匹配等 - 平台限制:NpuArch = 3510(Ascend 950PR/950DT) 3. **设计文档**:新增 LayerNormFusionPass.md 和 LayerNormInferenceFusionPass.md,描述融合模式(含图示)、使用约束(不支持动态 shape、输入参数限制、ReduceMean/Sub 限制、数据类型仅支持 FLOAT32/FLOAT16)、支持的型号。 4. **融合模式图示**:新增 6 张 PNG 图片,展示融合前后的图结构。 5. **math_proto_stub.cpp**(+101):新增 ReduceMean、SquaredDifference、Sub、Mul、Rsqrt 算子原型 stub,供融合规则 UT 构图使用。 涉及文件(15 个): - norm/layer_norm/op_graph/fusion_pass/layer_norm_fusion_pass.cpp(+462) - norm/layer_norm/op_graph/fusion_pass/layer_norm_fusion_pass.h(+33) - norm/layer_norm/op_graph/fusion_pass/layernorm_inference_fusion_pass.cpp(+377) - norm/layer_norm/op_graph/fusion_pass/layernorm_inference_fusion_pass.h(+33) - norm/layer_norm/docs/LayerNormFusionPass.md(+46) - norm/layer_norm/docs/LayerNormInferenceFusionPass.md(+39) - docs/zh/figures/LayerNormFusionPass_1~4.png(+12) - docs/zh/figures/LayerNormInferenceFusionPass_1~2.png(+6) - norm/layer_norm/tests/ut/op_graph/test_layer_norm_fusion_pass.cpp(+317) - norm/layer_norm/tests/ut/op_graph/test_layernorm_inference_fusion_pass.cpp(+279) - common/stub/op_graph/math_proto_stub.cpp(+101) ## 关联的Issue - #5852 ## 测试 - LayerNormFusionPassTest:9 个 UT 用例,覆盖融合成功(form A/B、交换律操作数、共享 axes const)、不融合场景(keep_dims=false、axes 不匹配、eps 位置错误、中间节点有外部消费者)。 - LayerNormInferenceFusionPassTest:6 个 UT 用例,覆盖融合成功(含交换律操作数、共享 axes const)、不融合场景(keep_dims=false、axes 不匹配、训练流不融合)。 - 测试环境:Ascend950(NpuArch=3510)。 ## 文档更新 - 新增 norm/layer_norm/docs/LayerNormFusionPass.md:训练场景融合规则设计文档 - 新增 norm/layer_norm/docs/LayerNormInferenceFusionPass.md:推理场景融合规则设计文档 - 新增 6 张融合模式图示 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9533 | 8 天前 | |
卷积算子敏感词整改 Co-authored-by: zhaozhoujun520<zhaozhoujun@huawei.com> # message auto-generated for no-merge-commit merge: !10548 merge master into master 卷积算子敏感词整改 Created-by: zhaozhoujun520 Commit-by: zhaozhoujun520 Merged-by: cann-robot Description: ## 描述 卷积算子代码中部分注释存在敏感词 ## 关联的Issue [#5954](https://gitcode.com/cann/ops-nn/issues/5954) ## 测试 本地验证,代码检视,蓝区冒烟,RDV,性能测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10548 | 8 天前 | |
[ops-nn] Add FusedMatmulSilu operator Co-authored-by: wuxs68<wuxs68@chinaunicom.cn> # message auto-generated for no-merge-commit merge: !6457 merge feature/fused-linear-silu into master [ops-nn] Add FusedMatmulSilu operator Created-by: wuxs68 Commit-by: wuxs68 Merged-by: cann-robot Description: ## 描述 本 PR 新增 FusedMatmulSilu 自定义融合算子,代码路径位于 experimental/matmul/fused_matmul_silu,用于支持 Hunyuan-3.0 中常见的 Linear + SiLU 计算模式。 典型计算形式如下: text y = silu(x @ weight^T + bias) 该算子将原本的 Matmul、bias Add 和 SiLU 激活封装为一次 aclnnFusedMatmulSilu 调用。主要作用是减少模型侧连续小算子的下发次数,缓解 Host 侧调度压力,并为后续基于真实模型高频 shape 的融合优化提供统一接口。 支持范围: - Ascend 910B - CANN 9.1 - BF16 - ND format - bias 必选 - eager ACLNN - x 为 [M, K],weight 为 [N, K],bias 为 [N] - K 为 64 的整数倍,且 K <= 4096 本次改动主要包括: - 新增 experimental/matmul/fused_matmul_silu 算子目录。 - 新增 FusedMatmulSilu 的算子定义、shape 推导、tiling 和 Ascend C kernel 实现。 - 主计算路径使用 MatmulImpl 完成 Cube 矩阵乘,使用 MultiCoreMatmulTiling 进行多核切分。 - bias Add 与 SiLU 在 AIV 后处理阶段完成。 - 提供 aclnnFusedMatmulSiluGetWorkspaceSize 与 aclnnFusedMatmulSilu 两段式 ACLNN 接口。 - 新增 eager ACLNN 调用样例。 - 新增 op_host 与 op_api UT。 - 新增 README 与 ACLNN 接口说明文档。 ## 关联 Issue Closes #3523 ## 测试情况 已在 Ascend 910B、CANN 9.1 环境完成以下验证: ### 编译打包与安装 执行命令: bash bash build.sh --pkg --soc=ascend910b --vendor_name=custom_nn --ops=fused_matmul_silu --experimental echo y | bash ./build_out/cann-ops-nn-custom_nn_linux-aarch64.run --quiet 验证结果: text [SUCCESS] Build package success! ### Example 验证 执行命令: bash cd experimental/matmul/fused_matmul_silu/examples bash run.sh 验证结果: - M=2, K=256, N=4096:max_abs_error=0.001953 - M=2, K=4096, N=4096:max_abs_error=0.007812 - M=2, K=4096, N=2048:max_abs_error=0.007812 ### 单算子性能对比 在 Ascend 910B、CANN 9.1 环境下,对 FusedMatmulSilu 与原生 Matmul + Add + SiLU 单算子 P50 对比。测试采用相同输入,完成预热后同步计时。 | Shape [M, K, N] | Fused P50 (us) | Native P50 (us) | Speedup (Native / Fused) | | --- | ---: | ---: | ---: | | [2, 256, 4096] | 30.42 | 33.58 | 1.104x | | [2, 4096, 4096] | 39.85 | 46.27 | 1.161x | | [2, 4096, 2048] | 34.61 | 41.94 | 1.212x | | [128, 4096, 4096] | 50.73 | 54.86 | 1.081x | 结论: - 当前代表 shape 上,FusedMatmulSilu 单算子 P50 加速比约为 1.08x ~ 1.21x。 - 该收益主要来自将 Matmul + bias Add + SiLU 下沉为一次 aclnnFusedMatmulSilu 调用,减少模型侧连续小算子的下发次数,并降低 Host 侧调度与同步开销。 ### op_host UT 执行命令: bash cd <OPS_NN_REPO> bash build.sh -u --ophost --ops=fused_matmul_silu --experimental --soc=ascend910b 验证结果: text [ PASSED ] 7 tests. ### op_api UT 执行命令: bash cd <OPS_NN_REPO> bash build.sh -u --opapi --ops=fused_matmul_silu --experimental --soc=ascend910b 验证结果: text [ PASSED ] 3 tests. ### op_graph UT 执行命令: bash cd <OPS_NN_REPO> bash build.sh -u --opgraph --ops=fused_matmul_silu --experimental --soc=ascend910b 验证结果:构建和运行成功;当前未注册独立 op_graph 测试用例,结果为 0 tests。 ## 类型标签 - 新特性 - 文档更新 - 其他:自定义融合算子 See merge request: cann/ops-nn!6457 | 8 天前 | |
解决foreach_exp/foreach_expm1/foreach_round_off_number/foreach_sub_list算子已知问题 Co-authored-by: surezz<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !10178 merge foreach_five_op_pro into master 解决foreach_exp/foreach_expm1/foreach_round_off_number/foreach_sub_list算子已知问题 Created-by: surezz Commit-by: surezz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach_exp/foreach_expm1/foreach_round_off_number/foreach_sub_list算子已知问题,核心改动是为这些算子补齐整型数据类型支持(int16/int8/uint8,其中 foreach_round_off_number 为 int16) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5642 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> david冒烟、二级冒烟、新增四个算子(int16/int8/uint8)用例共100条,加上原用例200条,无功能回退,精度通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10178 | 12 天前 | |
fix: 修复embedding_hash_table_export tiling UT文件名不匹配glob导致用例未执行 Co-authored-by: iuyi<202313350054@nuist.edu.cn> # message auto-generated for no-merge-commit merge: !10620 merge fix/embedding-hash-table-export-tiling-ut into master fix: 修复embedding_hash_table_export tiling UT文件名不匹配glob导致用例未执行 Created-by: iuyi Commit-by: iuyi Merged-by: cann-robot Description: ## 描述 op_host tiling UT 源文件收集规则为 test_*_tiling.cpp(cmake/ut.cmake), test_embedding_hash_table_export_tiling_arch35.cpp 不匹配该模式, 导致该算子 tiling 用例从未被编译执行。arch35 目录本身已区分架构, 文件名无需 _arch35 后缀,按目录内通用命名规范重命名为 test_embedding_hash_table_export_tiling.cpp,使用例纳入 nn_op_tiling_ut_cases_obj 并随 nn_op_host_ut 执行。 ## 关联的Issue 关联 #5981(hash目录3个算子tiling UT文件名不匹配glob规则导致用例从未被执行,本PR为按算子拆分的3个修复之一) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10620 | 8 天前 | |
perf(index): 优化 KthValue、Median 与 NanMedian 选择及归并路径 Co-authored-by: ConanHuang<huangxiaobin1@huawei.com> # message auto-generated for no-merge-commit merge: !10411 merge master into master perf(index): 优化 KthValue、Median 与 NanMedian 选择及归并路径 Created-by: ConanHuang Commit-by: ConanHuang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 优化 KthValue、Median、NanMedian 的选择与共享归并路径,减少完整排序、重复扫描和逐行控制开销,保持各算子的目标秩、NaN 和索引语义。 - 改进 radix select:累积字节直方图定位 bucket、UB 驻留 key、相同高位跳过及候选位置压缩,减少无效扫描。 - 补充窄轴 SIMT select、短秩选择和适用场景的驻留直方图路径,按 dtype、轴长、行数及 UB 容量选择路由。 - 同步公共 ping-pong 归并和批处理优化,完善 INT16 merge 路径与 host/kernel UB 布局对应关系。 - 精简相关 tiling 结构与分发,使用编译期 Median 模式分支;补充浮点 key、正负零、尾块及同步约束说明。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5977 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - Ascend950PR_9579:KthValue 338 条、Median 260 条、NanMedian 265 条全量 ST,加正负零逐位比较 32 条,合计 **895 条精度全部通过**。 - 相对前一版已验证实现,性能异常项复测及旧包/当前包同机对照后,未确认稳定超过 5% 且超过 0.5 μs 的设备耗时劣化。 - 二级冒烟通过。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10411 | 8 天前 | |
fix: 完善NN算子proto与infer注册 Co-authored-by: zhouxuan78<zhouxuan78@huawei.com> # message auto-generated for no-merge-commit merge: !10281 merge master into master fix: 完善NN算子proto与infer注册 Created-by: zhouxuan78 Commit-by: zhouxuan78 Merged-by: cann-robot Description: ## 描述 本次修改完成 NN 相关算子的 Legacy 下线整改: • 为FusedBiasLeakyRelu、BNTrainingReduce、INTrainingReduceGrad、LpNormUpdate、InplaceApplyAdaMax、InplaceApplyFtrl、InplaceApplyFtrlV2、InplaceApplyProximalAdagrad 等算子补充原型去重宏,避免新旧原型重复注册。 • 将 Softshrink 算子名称统一为 SoftShrink,同步调整原型、OpDef、InferShape、InferDataType、Tiling、Kernel、TilingData 及测试中的注册名称。 • 新增 SoftShrink 开源原型,统一输入输出名称为 input_x、output_y。 • 为 SigmoidFocalLoss 新增开源 InferShape 和 InferDataType 实现。 • 将 LpNormUpdate Level0 op_api 从 canndev 迁移至开源仓,保留 AICore/AICPU 分发逻辑。 • 按仓库 clang-format 规范完成相关文件格式整改。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5946 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10281 | 8 天前 | |
fix addmm and baddbmm beta = 0, precision error Co-authored-by: liyuanqiang<liyuanqiang@huawei.com> # message auto-generated for no-merge-commit merge: !10622 merge pr_10313 into master fix addmm and baddbmm beta = 0, precision error Created-by: liyuanqiang Commit-by: liyuanqiang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 问题修复:beta=0,cubemathtype=4的分支时未将16in32out标记传入接口 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> issue: [#5928](https://gitcode.com/cann/ops-nn/issues/5928) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 问题复现:  修改后:  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10622 | 8 天前 | |
【mc62】workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !10415 merge nn_work into master 【mc62】workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 1. 背景:mc62算子workspace占用对比1951增大 2. 由于mc62代码和A5是onetrack, 所有workspacesize硬编码为16M, 在mc62上也同样是16M,asc 提供接口,对mc62进行区分,从原来的16M 变成1K,A5和A2大小不变。 3. 修改:算子侧tiling中硬编码为16M大小的workspacesize统一改为用接口获取。 GetLibApiWorkSpaceSize实现如下: const static uint32_t WORK_SPACE_SIZE_910B = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE_950 = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE = 1024; uint32_t PlatformAscendC::GetLibApiWorkSpaceSize(void) const { auto npuArch = GetCurNpuArch(); if (npuArch == NpuArch::DAV_RESV) { PF_LOGE("get platform failed, CurNpuArch is NpuArch::DAV_RESV"); return -1; } else if (npuArch == NpuArch::DAV_2201) { return WORK_SPACE_SIZE_910B; } else if (npuArch == NpuArch::DAV_3510) { return WORK_SPACE_SIZE_950; } return WORK_SPACE_SIZE; } ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5979 ## 测试 1.单算子框架测试通过 2.二级冒烟通过 文档更新 类型标签 - [x] Bug修复 See merge request: cann/ops-nn!10415 | 8 天前 | |
fix: ApplyAdagrad,HardSwishGradV2,HardSigmoid,InplaceSub检视意见闭环 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !10724 merge master into master fix: ApplyAdagrad,HardSwishGradV2,HardSigmoid,InplaceSub检视意见闭环 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ApplyAdagrad,HardSwishGradV2,HardSigmoid,InplaceSub检视意见闭环 1.补充通路golden及测试用例 2.增加校验保护 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT/ST 通路验证 PASS ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10724 | 8 天前 | |
fix(adaptive_max_pool2d): simt tiling报错文案中文顿号改为英文逗号 Co-authored-by: dong-yanrong<dongyanrong@h-partners.com> # message auto-generated for no-merge-commit merge: !10738 merge dev_issue into master fix(adaptive_max_pool2d): simt tiling报错文案中文顿号改为英文逗号 Created-by: dong-yanrong Commit-by: dong-yanrong Merged-by: cann-robot Description: ## 描述 simt tiling报错文案中文顿号改为英文逗号 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5988 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10738 | 8 天前 | |
fixCIWarning Co-authored-by: TH_HW<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !10460 merge fixGoldenGeir into master fixCIWarning Created-by: TH_HW Commit-by: TH_HW Merged-by: cann-robot Description: ## 描述 本次提交( e11f02e57c1c76e628aad3485440dd3532e158e1)修复 GroupedDynamicMxQuantV2 中 dstTypeMax 浮点数直接判等触发的 G.EXP.27-CPP“使用恰当的基本类型作为操作符的操作数”告警。 - 新增 IsDoubleZero,通过 std::fpclassify(value) == FP_ZERO 判断精确零值; - 将 FLOAT4_E2M1、FLOAT4_E1M2 和 FLOAT8 参数校验中的三处 dstTypeMax == 0.0 替换为 IsDoubleZero(dstTypeMax); - 保持原接口语义,仅接受 +0.0 和 -0.0,不会将接近零的非零 double 值误判为默认值; - 补充 DBL_EPSILON 非零输入校验失败的 OP API 回归用例,防止后续改为 epsilon 近似比较而放宽参数范围。 ## 关联的Issue 暂无关联 Issue。 ## 测试 - 执行 SKIP=oat-check pre-commit run --files <本次两个修改文件>,基础文件检查、 clang-format 和 codespell 均通过; - OAT 增量扫描覆盖本次两个修改文件,非法文件类型和 License 头问题均为 0; - 执行 bash build.sh -u --opapi --ops=grouped_dynamic_mx_quant --ut_mode=fast --ccache=off -j8, grouped_dynamic_mx_quant OP API UT 共 34 个用例全部通过; - 新增的 ascend950_grouped_dynamic_mx_quant_v2_fp16_E5M2_tiny_nonzero_fail 回归用例通过; ## 文档更新 本次提交未修改算子使用文档;本文件用于补充本次 PR 的变更说明。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:CI 代码规范告警整改及回归测试补充 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10460 | 8 天前 | |
LSTMCell算子支持Ascend950 Co-authored-by: wow5522<wuao1@huawei.com> # message auto-generated for no-merge-commit merge: !10092 merge master into master LSTMCell算子支持Ascend950 Created-by: wow5523 Commit-by: wow5522 Merged-by: cann-robot Description: ## 描述 本 PR 为 thnn_fused_lstm_cell(LSTM Cell)算子新增 Ascend950 平台的 bfloat16 支持,同时保持 ascend910b/ascend910_93 上原有的 fp32/fp16 能力不变。改动涉及算子定义(thnn_fused_lstm_cell_def.cpp)、ACLNN 接口层(aclnn_thnn_fused_lstm_cell.cpp)以及昇腾核函数(thnn_fused_lstm_cell.h)三部分。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5874 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10092 | 8 天前 | |
feat(aicpu): enable constant folding for migrated ops Co-authored-by: hid29204727<wangboyu20@huawei.com> # message auto-generated for no-merge-commit merge: !9280 merge codex/aicpu-const-folding into master feat(aicpu): enable constant folding for migrated ops Created-by: hid29204727 Commit-by: hid29204727 Merged-by: cann-robot Description: ## 描述 补充 ops-nn 仓 AICPU host 常量折叠注册通路,并为当前已标记 OPEN_OPS_FLAG 的 18 个迁移算子统一开启常量折叠支持。 主要改动: - 新增仓级 OPS_NN_REGISTER_CPU_KERNELV2 注册包装宏,host 构建优先注册 V2,device/custom/UT 保持 V1 回退。 - 为 add_modules_sources 和 add_all_modules_sources 增加 HOSTCPU 参数及 host OBJECT 收集逻辑。 - 为 18 个 OPEN_OPS_FLAG 算子补充 HOSTCPU TRUE、注册头文件和 V2 注册。 - host OBJECT 汇入 libopconstant_folding_nn.so。 ## 关联的Issue 无。 ## 测试 已完成以下静态验证: - git diff --check 通过。 - 18 个 OPEN_OPS_FLAG 算子均具备 HOSTCPU TRUE。 - 18 个算子均使用 OPS_NN_REGISTER_CPU_KERNELV2,无直接 V1 注册残留。 - 注册头文件、host 编译宏和仓级 so 收集通路检查通过。 当前 Windows 环境缺少 CANN、NPU、CMake 和远端构建桥,未执行 bash build.sh --pkg -j16;完整打包构建及常量折叠功能验证待 CANN Linux 环境/CI 完成。 ## 文档更新 无仓内文档变更。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9280 | 8 天前 | |
Fix UT coverage issue Co-authored-by: liyinghao10<liyinghao10@h-partners.com> # message auto-generated for no-merge-commit merge: !9737 merge ut_coverage into master Fix UT coverage issue Created-by: liyinghao10 Commit-by: liyinghao10 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补足QuantBatchMatmulV3算子的UT覆盖率 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> #5248 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9737 | 9 天前 | |
add_rms_norm_dynamic_quant torch extension:参数校验加固与 graph_convert 无 torchair 导入修复 Co-authored-by: wangqi<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !10625 merge fix/add-rms-norm-param-validation into master add_rms_norm_dynamic_quant torch extension:参数校验加固与 graph_convert 无 torchair 导入修复 Created-by: wangqi_ai Commit-by: wangqi Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复 add_rms_norm_dynamic_quant torch extension 的两类缺陷(详见关联 Issue #5947)。 ### 1. graph_convert 无 torchair 环境导入崩溃修复 _DST_TYPE_MAP 原位于模块顶层(第 35-40 行),import 时立即求值 DataType.DT_*,而 DataType 仅随 torchair 成功导入而绑定。torchair 缺失时抛 NameError,且该异常不被上层捕获(ops/__init__.py:_load_op 只捕获 ImportError/RuntimeError,包顶层只捕获 ImportError),导致**整个 cann_ops_nn 包导入失败**,仅用 eager 模式的用户一并受影响,违背该文件 try/except + _TORCHAIR_AVAILABLE 降级设计。 现将字典移入唯一使用点 convert_add_rms_norm_dynamic_quant 函数体内(仅在 torchair 可用时执行),恢复「图模式禁用而非导入崩溃」契约。已核查全仓其他 graph_convert 文件无同类问题(sibling rms_norm_dynamic_quant 用 attr.Int 传 dst_type;其余导入 DataType 的文件均只在函数体内使用),故为本文件独有缺陷。 ### 2. 入口参数类型严格拦截(@impl 函数,eager 直调路径) - 张量参数须为 torch.Tensor(beta/x3 允许 None) - 标量仅接受 Python 原生类型:dst_type/scale_alg 为 int(排除 bool,**保留 enum.IntEnum**),round_mode 精确 str,output_rstd 精确 bool,epsilon 精确 int/float - 采用**精确类型判定**堵住 numpy 子类漏洞:np.float64 是 float 子类、np.str_ 是 str 子类,isinstance 会放过 - 报错信息带模块限定类型名,避免 numpy 2.x 下 must be a Python bool, but got bool 这类自相矛盾表述 **动机(实测)**:dst_type 传 torch.float8_e5m2 时,raw 入口报 pybind11 的 wall-of-text TypeError(不指明出错参数、dump 全部 10 个实参);dispatcher 入口则被 torch **静默转为 ScalarType 序号**(float8_e5m2→23、int4→40、uint6→35、uint7→36、int5→41),其中 4 个恰与合法 dst_type 值域 {35,36,40,41} 撞号 —— 零报错、语义完全错误。故一律入口拒绝,不做隐式转换或归一化。 ### 3. 值域校验补齐(Meta 与 csrc TORCH_CHECK 对称,同序同语义) - **x2 dtype 须与 x1 一致**:原 Meta kernel 缺失该检查(csrc 有),导致 eager 拒绝而 torch.compile 放行 —— 校验矩阵中唯一的接受/拒绝分歧 - gamma dtype 须与 x1 一致或为 float32;beta dtype 须与 gamma 一致(原 eager 路径完全未校验;依据 aclnnAddRmsNormDynamicMxQuantV2 接口文档) - round_mode:FP8 仅 rint,FP4 支持 rint/floor/round(原两层均未校验,非法值穿透到 tiling 才报 ACL 错误码) - scale_alg 限定 {0,1}(原仅覆盖「FP4 须为 0」分支) - 移除 Meta 中因前置 dst_type 值域校验而不可达的死分支;两层检查顺序对齐,使同一非法输入在 eager/compile 下得到一致的错误信息 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> Closes #5947 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 新增 norm/add_rms_norm_dynamic_mx_quant/tests/ut/torch_extension/test_torch_extension_param_validation.py:**42 个设备无关用例**(无需 NPU 硬件,0.15s 跑完) - 20 项非法标量参数化用例(含 torch.dtype、np.int64/np.int32/np.float32/np.float64/np.str_/np.bool_、bool、float、str、bytes) - 7 项非张量入参用例(str/list/ndarray/float/None) - enum.IntEnum 正向用例(锁定「保留 Python 原生 int 子类」这一设计取舍) - 合法参数过闸控制用例(monkeypatch builder.load 哨兵,不触发编译与设备访问) - 10 项 Meta 值域用例(x2/gamma/beta dtype、round_mode 分 dst_type、scale_alg 值域与 FP4 约束、dst_type 值域、FP4 尾轴偶数、rank 上限)+ 输出 shape/dtype 断言 - 2 项框架行为固化用例(顶层入口解析为 dispatcher OpOverloadPacket;torch.dtype 被转序号后由值域校验兜底),防止后续「修复」意外改变语义 既有 950-only 测试 test_torch_extension.py 补 TestCsrcValueChecks:7 组 csrc 值域校验负向用例(原为 0)。csrc 检查位于设备检查之后,无 Ascend 950 硬件无法触发,故 Meta 侧为设备无关的镜像覆盖。 本地验证结果: - **pre-commit 12 个钩子全部通过**(clang-format / ruff check / ruff format / codespell / OAT 合规 / trailing-whitespace / end-of-file / 大文件 / 冲突标记 / 私钥检测 / yaml / json) - **42/42 单测通过** - **修改后 csrc JIT 编译通过**,CPU tensor 调用命中预期设备检查 - **无 torchair 环境实测**:import cann_ops_nn 正常;调用图转换器得到清晰 RuntimeError: ...torchair is not available.(降级契约端到端成立) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - norm/add_rms_norm_dynamic_mx_quant/README.md:修正约束说明与 beta==gamma dtype 规则的矛盾(原文「gamma、beta 的数据类型只能和 x1 保持一致或为 FLOAT32」允许 gamma=fp32, beta=fp16,与 aclnnAddRmsNormDynamicMxQuantV2 契约不符);参数表 beta 行补 dtype 约束 - norm/add_rms_norm_dynamic_mx_quant/docs/torchapi_add_rms_norm_dynamic_quant.md:约束说明新增两条 —— eager 直调路径的严格类型规则;dispatcher 路径的 dtype→序号转换行为与规避建议 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 --- ### ⚠️ CI 覆盖说明(请评审注意) torch_extension 在仓库 CI 脚本中**仅出现于 scripts/ci/check_experimental_pkg.sh**;scripts/ci/pre_push_build.sh(自称复刻门禁语义)不含 extension 构建、也不执行 pytest;torch extension 测试目录无 CMakeLists。即标准门禁**可能既不编译本 PR 的 csrc、也不执行这 42 个测试**,上述验证均在本地完成。是否扩展 CI 覆盖已在 Issue #5947 备注中提出,不在本 PR 范围。 ### 已知残留(框架层 / 公共层,本 PR 不处理) - 经 torch.ops / torch.compile 调用时,torch.dtype→序号的转换发生在任何算子代码之前,类型信息已销毁,算子层无法拦截;int4/uint6/uint7/int5 → 40/35/36/41 的撞号只能由文档提示规避(已写入 torchapi 文档)。scale_alg 槽位不受影响(值域 {0,1} 与 dtype 序号无重叠)。 - 多卡 device 一致性未校验(x1 在 npu:0、x2 在 npu:1 会通过各自的 kPrivateUse1 检查,随后 ACLNN_CMD 的 DecodeDevice 取首个张量的设备)。该问题为所有 ACLNN_CMD 算子共有,正确修法是在 torch_extension/cann_ops_nn/common/aclnn_common.h 公共层集中处理,不宜塞进单算子 PR。 - epsilon < 0 未校验:会产生 sqrt(负数)→NaN,属 GIGO,eager/compile 两层行为一致,接口文档亦未声明该约束。 See merge request: cann/ops-nn!10625 | 8 天前 | |
MSDA正反向算子950实现中cast内移至kernel Co-authored-by: wanshilin<wanshilin@h-partners.com> # message auto-generated for no-merge-commit merge: !10573 merge master into master MSDA正反向算子950实现中cast内移至kernel Created-by: wanshilin Commit-by: wanshilin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 针对 MSDA(Multi-Scale Deformable Attention)正反向算子(multi_scale_deformable_attn_function 与 multi_scale_deformable_attention_grad)在 950(arch35)上的实现,将原先在 API 层完成的 Cast 操作内移至 kernel 内部处理:前向 Generic kernel 与新增的反向 kernel 均支持 fp16/bf16/fp32 原生输入,通过 fp32 workspace 暂存中间结果并在 kernel 尾部做类型转换回写,从而在 950 上省去 API 层多余的 cast 节点,并配套调整 tiling(新增 BF16_MODE、staging buffer 成本、workspace 扩容、numLevels 一致性校验)、ascend950 算子配置(新增 fp16/bf16 dtype 与对应二进制)及示例代码 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5917 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 正反向精度验证各500条通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10573 | 9 天前 | |
修改matmul 算子atoll 异常反馈判断 Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !7083 merge master into master 修改matmul 算子atoll 异常反馈判断 Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改matmul 算子atoll 异常反馈判断,异常时返回默认值 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/3882 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7083 | 2 个月前 | |
docs: 新增图融合规则说明文档 Co-authored-by: linzehui2058<2602241040@qq.com> # message auto-generated for no-merge-commit merge: !9676 merge fusion_pass_doc into master docs: 新增图融合规则说明文档 Created-by: linzehui2058 Commit-by: linzehui2058 Merged-by: cann-robot Description: ## 描述 对于已开源的图融合算子,进行对应的资料开源,包含MatmulToGemmOpFusionPass、MatmulReshapeTransposeFusionPass、GemmToMatmulFusionPass、BatchMatMul2MulFusionPass 其中的png图片格式,使用lfs进行托管 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5541 ## 文档更新 matmul\batch_mat_mul_v3\docs\BatchMatMul2MulFusionPass.md matmul\mat_mul_v3\docs\MatmulToGemmOpFusionPass.md matmul\mat_mul_v3\docs\MatmulReshapeTransposeFusionPass.md matmul\mat_mul_v3\docs\GemmToMatmulFusionPass.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9676 | 22 天前 | |
动态库解耦 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !8927 merge master into master 动态库解耦 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 本 PR 旨在将算子侧代码与 legacy 动态库(libophost_comm_legacy.so)解耦:LegacyCommonMgr 新增 isSupported_ 支持位与 IsSupport() 接口,依据编译宏 ASCEND_COMPUTE_UNIT 判断当前 SoC 版本是否属于受支持集合 SUPPORTED_VERS(ascend910b、ascend910_93、ascend310p、ascend310b、ascend910),仅受支持时才 dlopen 加载 legacy 库;各 legacy 封装接口在不受支持时提前短路返回,matmul 系列算子的 tiling 流程同步改为容忍 legacy 能力缺失而不再硬失败,并配套调整 CMake 编译宏与 UT 测试。 ## 关联的Issue [5093](https://gitcode.com/cann/ops-nn/issues/5093) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8927 | 1 个月前 | |
算子 FatreluMul 支持 ascend950 Co-authored-by: zhoulong50_hw<zhoulong50@huawei.com> # message auto-generated for no-merge-commit merge: !10226 merge fatrelu_mul into master 算子 FatreluMul 支持 ascend950 Created-by: zhoulong50_hw Commit-by: zhoulong50_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本 PR 为算子 FatreluMul(fatrelu_mul)新增 Ascend 950(arch35 / DAV_3510)支持:新增 arch35 专属的 host 侧 tiling 与 kernel 侧实现,并在 fatrelu_mul_def.cpp 中注册 ascend950 AICore 配置。同时将算子的输入/输出名由 input/output 统一重命名为 x/y(涉及 OpDef 定义、多平台二进制配置 JSON 与 kernel 槽位绑定),并将原有 op_host 下的 tiling 文件迁入 arch22 子目录。该改动主要聚焦于新增 arch35 平台的完整 tiling 与 kernel 链路,不涉及既有平台行为变更。 主要改动 新增 arch35 host 侧 tiling 实现:新增 fatrelu_mul_tiling_arch35.cpp/.h,提供 TilingFuncFatreluMul 与 TilingPrepareForFatreluMul 及 FatreluMulCompileInfo,实现平台量获取(含 CompileInfo 可信度校验与回退查询)、dtype/format/维度/shape 异常值校验、行模型展开(batch_size/half_dim)、空 Tensor 短路、UB 切分(tile_elems)、多核切分(need_core_num/rows_former/rows_tail_core)、判界选 key 与 SetBlockDim/SetTilingKey 下发。 新增 arch35 kernel 侧实现:新增 FatreluMul_kernel.h(共享 fp32 域 VF 计算链 FatreluMulVF 与模板类 FatreluMulKernel<T, kPath>,经 if constexpr 支持 small-tail 行打包与 big-tail 行分段双路径)、FatreluMul_tiling_data.h(全局非模板化 FatreluMulTilingData 结构体)与 FatreluMul_struct.h(ASCENDC_TPL_ARGS_DECL/ASCENDC_TPL_SEL 声明 3 dtype × 2 path 共 6 个实例),并新增 kernel 入口 fatrelu_mul_apt.cpp(含核守卫与 TilingData 反序列化)。 注册 ascend950 平台配置并重命名 IO 接口:fatrelu_mul_def.cpp 新增 ascend950 的 OpAICoreConfig(动态编译/动态 rank/shape 支持、ExtendCfgInfo("opFile.value", "fatrelu_mul_apt") 等),并将算子输入/输出名从 input/output 改为 x/y,kirin 系列配置同步重命名。 多平台二进制配置同步重命名 IO 名:ascend910_93、ascend910b、kirin9030、kirinx90 四份 fatrelu_mul_binary.json 中的输入/输出 name 字段由 input/output 统一改为 x/y。 tiling 文件目录调整:op_host/fatrelu_mul_tiling.cpp/.h 迁入 op_host/arch22/ 子目录(arch22 平台 tiling 实现),对应 UT 测试 test_fatrelu_mul_tiling.cpp 的头文件包含路径同步更新。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5777 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 二级冒烟,泛化用例 230 条 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了 aclnnFatreluMul.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10226 | 11 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
feat: 算子仓适配Ascend5162A芯片编译 Co-authored-by: wuxuening<wuxuening2@huawei.com> # message auto-generated for no-merge-commit merge: !10554 merge feat/ascend5162a-build-support into master feat: 算子仓适配Ascend5162A芯片编译 Created-by: wuxuening Commit-by: wuxuening Merged-by: cann-robot Description: ## 描述 算子仓适配 Ascend5162A 芯片编译:在编译框架(CMakeLists、build 脚本、SOC 映射)与 UT 桩代码中注册 ascend5162a 计算单元,支持通过 --soc=ascend5162a 编译输出 5162A 算子包。 改动清单(8 个文件): | 文件 | 改动 | |---|---| | CMakeLists.txt | ASCEND_ALL_COMPUTE_UNIT 增加 ascend5162a | | build.sh | SUPPORT_COMPUTE_UNIT_SHORT 增加 ascend5162a,usage 说明同步 | | scripts/kernel/binary_script/build_env.sh | SOC_MAP 增加 Ascend5162A | | scripts/util/const_var.py | SOC_MAP_EXT 增加 ascend5162a → Ascend5162A | | scripts/util/opdesc_parser.py | SOC_TO_SHORT_SOC_MAP 增加 ascend5162a | | tests/ut/common/tiling_case_executor.cpp | soc 映射表增加 ascend5162a | | tests/ut/op_api/stub/opdev/platform.cpp | ASCEND5162A ToString 映射 | | tests/ut/op_api/stub/opdev/platform.h | SocVersion 枚举增加 ASCEND5162A | ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5899 ## 测试 本地环境(CANN 9.2.0,aarch64)执行 build.sh --soc=ascend5162a,编译通过并成功生成算子包 cann-5162a-ops-nn_9.2.0_linux-aarch64.run;pre-commit 全量检查通过。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10554 | 9 天前 | |
公共文档同步修改 Co-authored-by: yolic<chenyuning1@huawei.com> # message auto-generated for no-merge-commit merge: !10337 merge readme0912 into master 公共文档同步修改 Created-by: yolic Commit-by: yolic Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 公共文档同步修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5831](https://gitcode.com/cann/ops-nn/issues/5831) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了CONTRIBUTING.md、docs/QUICKSTART.md、docs/zh/install/compile.md、docs/zh/install/dir_structure.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10337 | 12 天前 | |
init | 11 个月前 | |
docs: add LayerNormRemoveBroadcastFusionPass doc Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9631 merge ln_pass_doc into master docs: add LayerNormRemoveBroadcastFusionPass doc Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 为现有LayerNormRemoveBroadcastFusionPass融合规则补充独立资料页。该规则在Ascend 950PR/Ascend 950DT场景下,将LayerNorm算子gamma和beta输入前的BroadcastTo从图中删除,使gamma和beta直接作为LayerNorm算子的输入,并将begin_norm_axis和begin_params_axis统一设置为归一化维度的起始轴。 资料同步说明规则的使用约束: - LayerNorm算子的gamma和beta输入前均为BroadcastTo,且两个BroadcastTo的shape输入相同。 - 输入x、gamma和beta均为静态shape。 - gamma和beta不为标量,二者的shape和数据类型相同。 - gamma的维数不大于x的维数,且gamma的shape与x从归一化轴开始的后缀shape相同。 - LayerNorm算子的begin_norm_axis换算为非负轴后,指向归一化维度的起始轴。 同时新增融合前后拓扑对比图,展示两个BroadcastTo节点被移除前后的图结构。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5430 ## 测试 - 本次仅新增文档和配图,不涉及代码逻辑变更,未执行代码测试。 - 已检查Markdown格式、图片文件格式及图片引用路径。 ## 文档更新 - 新增 norm/layer_norm/docs/LayerNormRemoveBroadcastFusionPass.md,说明融合模式和使用约束。 - 新增docs/zh/figures/LayerNormRemoveBroadcastFusionPass_1.png,展示融合前后的图结构。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9631 | 25 天前 | |
新增Batch一致性介绍 Co-authored-by: chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !10458 merge master into master 新增Batch一致性介绍 Created-by: gitcode-chenjiao Commit-by: chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增Batch一致性和确定性特性介绍 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5817](https://gitcode.com/cann/ops-nn/issues/5817) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> RAEDME.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10458 | 11 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
fix Third_Party_Open_Source_Software_List.yaml Co-authored-by: liuyufan0725<liuyufan9@huawei.com> # message auto-generated for no-merge-commit merge: !1879 merge fix_yaml into master fix Third_Party_Open_Source_Software_List.yaml Created-by: liuyufan0725 Commit-by: liuyufan0725 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新三方依赖清单Third_Party_Open_Source_Software_List.yaml 1、增加protobuf 2、将nlohmann/json修改为json ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#1042](https://gitcode.com/cann/ops-nn/issues/1042) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了Third_Party_Open_Source_Software_List.yaml ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1879 | 7 个月前 | |
【描 述】 eigen update to 5.0.0 Co-authored-by: j00427146<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !1152 merge master into master 【描 述】 eigen update to 5.0.0 Created-by: jialimin1 Commit-by: j00427146 Merged-by: cann-robot Description: ## 描述 现开源软件eigen 3.4.0 EOM,Eigen 从3.4.0版本升级到5.0.0,解决生命周期问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-nn/issues/975 https://gitcode.com/cann/ops-nn/issues/389 ## 测试   ## 文档更新 SECURITY.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Update Eigen to 5.0.0 See merge request: cann/ops-nn!1152 | 7 个月前 | |
feat: 算子仓适配Ascend5162A芯片编译 Co-authored-by: wuxuening<wuxuening2@huawei.com> # message auto-generated for no-merge-commit merge: !10554 merge feat/ascend5162a-build-support into master feat: 算子仓适配Ascend5162A芯片编译 Created-by: wuxuening Commit-by: wuxuening Merged-by: cann-robot Description: ## 描述 算子仓适配 Ascend5162A 芯片编译:在编译框架(CMakeLists、build 脚本、SOC 映射)与 UT 桩代码中注册 ascend5162a 计算单元,支持通过 --soc=ascend5162a 编译输出 5162A 算子包。 改动清单(8 个文件): | 文件 | 改动 | |---|---| | CMakeLists.txt | ASCEND_ALL_COMPUTE_UNIT 增加 ascend5162a | | build.sh | SUPPORT_COMPUTE_UNIT_SHORT 增加 ascend5162a,usage 说明同步 | | scripts/kernel/binary_script/build_env.sh | SOC_MAP 增加 Ascend5162A | | scripts/util/const_var.py | SOC_MAP_EXT 增加 ascend5162a → Ascend5162A | | scripts/util/opdesc_parser.py | SOC_TO_SHORT_SOC_MAP 增加 ascend5162a | | tests/ut/common/tiling_case_executor.cpp | soc 映射表增加 ascend5162a | | tests/ut/op_api/stub/opdev/platform.cpp | ASCEND5162A ToString 映射 | | tests/ut/op_api/stub/opdev/platform.h | SocVersion 枚举增加 ASCEND5162A | ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5899 ## 测试 本地环境(CANN 9.2.0,aarch64)执行 build.sh --soc=ascend5162a,编译通过并成功生成算子包 cann-5162a-ops-nn_9.2.0_linux-aarch64.run;pre-commit 全量检查通过。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10554 | 9 天前 | |
quantize_add_layer_norm arch35 cleancode整改 Co-authored-by: boes129<chenqi185@huawei.com> # message auto-generated for no-merge-commit merge: !10498 merge fix/quantize_add_layer_norm_cleancode into master quantize_add_layer_norm arch35 cleancode整改 Created-by: boes129 Commit-by: boes129 Merged-by: cann-robot Description: ## 描述 PR #8234 合入后 cleancode 检查三项不达标: 1. quantize_add_layer_norm_regbase_helper.h 550 行,超过头文件 500 行阈值; 2. 8 个函数超过 50 行阈值(最大的 VFCalcMeanVar 232 行); 3. welford kernel 的 Process() 圈复杂度 25,超过阈值 20。 本 PR 为纯结构重构,不改任何计算逻辑: - classify_rule.yaml中ops/ops-nn/norm/quantize_add_layer_norm/已经覆盖了quantize_add_layer_norm算子适配950新增的文件,去掉之前额外加在classify_rule.yaml的文件。 - 新增 quantize_add_layer_norm_regbase_stats.h,把 mean/var 统计类函数(VFCalcMeanVar/VFCalcMeanVarFast 等)从 helper.h 挪过去,两个文件都在 500 行以内; - 超长函数拆小:VFCalcMeanVar 拆成每行两段(mean 相 / var 相)加块级小函数,FinalizeAlign 与两个 kernel 的 Init / VFCalcYQuant / Process 用同样拆法。拆分方式对照 rms_norm、add_layer_norm 等已合入代码的函数组织习惯,代码逐字搬移; - 唯一的等价改写:var 相改为从 UB 广播装载 mean(DIST_BRC_B32),替代原来跨段持有的寄存器直通,与本算子 full_load 路径 VFCalcYQuant 的现有写法一致; - 原 6 处 LocalMemBar 的数量、方向、作用域位置逐一核对,保持不变。 ## 关联的Issue 无(承接 MR #8234 的 cleancode 整改)。 ## 测试 蓝区真实环境(CANN 9.2.0-beta.2,Ascend950PR): - 950 kernel 构建(build.sh --soc=ascend950 --opkernel):零错误,binary 6 个 .o,与合入基线一致; - 950 host UT:14/14 PASSED; - 910b 回归(build.sh --soc=ascend910b -u):无 FAILED(910b 与 host 路径未改动); - 本地 pre-commit 全绿(含 clang-format、OAT 许可证检查)。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构(cleancode 检查整改,零语义变更) ## AI/Agent生成声明 - [ x] AI辅助编写 See merge request: cann/ops-nn!10498 | 9 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 2 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 2 个月前 | |
upgrade version 9.2.0 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9513 merge master into master upgrade version 9.2.0 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 upgrade version 9.2.0 ## 关联的Issue [#5362](https://gitcode.com/cann/ops-nn/issues/5362) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 版本更新 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9513 | 24 天前 |
🔥Latest News
- [2026/05] 优化kernel编译配置项,减少simplified_key和ascendc_config配置文件(!3330)。
- [2026/05] 引入ops-tensor,基于分层结构优化Cube类算子,减少偏移量计算和简化指令参数(!5036)。
- [2026/05] 发布生态算子的精度验收标准(!4572)。
- [2026/03] 开源算子支持下一代芯片:Ascend950PR(!450)。
- [2026/03] 新增<<<>>>的算子开发样例(!620)。
- [2026/03] 低bit类算子和融合算子支持更多数据类型:fp8/mxfp8/hifp8/mxfp4等,并支持pertensor/perchannel/pertoken/pergroup/perblock等不同量化和组合方式:全量化融合算子:quant_batch_matmul_v4,伪量化融合算子:weight_quant_batch_matmul_v2。
- [2026/03] 支持SIMD/SIMT新同构编程算子实现:[MapIndex](#660),[ScatterSub](#710)。
- [2026/01] 新增QuickStart,指导新手零基础入门算子项目部署(支持Docker环境)、算子开发和贡献流程。
- [2025/12] 开源算子支持Ascend 950PR/Ascend 950DT/KirinX90,可以通过NPU Simulator仿真工具开发调试;优化指南类文档,聚焦算子开发指南,明确最小交付件和关键示例代码,针对Ascend/samples仓算子提供迁移本项目的指导;新支持稀疏4:2量化matmul算子,针对稀疏矩阵开启硬件加速能力。
- [2025/11] 新支持算子index_fill、masked_scatter、scatter、tf_scatter_add、fused_cross_entropy_loss_with_max_sum。
- [2025/10] 新增experimental目录,完善贡献指南,支持开发者调试并贡献自定义算子。
- [2025/09] ops-nn项目首次上线,开源算子支持Atlas A2/A3系列产品。
🚀概述
ops-nn是CANN(Compute Architecture for Neural Networks)算子库中提供神经网络计算能力的高阶算子库,包括matmul类、activation类等算子,算子库架构图如下:

📌版本配套
本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与Gitcode标签源码,使用master分支可能存在版本不匹配的风险。
🛠️环境准备
环境部署是体验本项目能力的前提,请先完成NPU驱动、CANN包安装等,确保环境正常。
⬇️源码下载
环境准备好后,下载与CANN版本配套的分支源码,通用命令如下,${tag_version}替换为分支标签名。以9.0.0分支源码下载为例:
# 通用命令:git clone -b ${tag_version} https://gitcode.com/cann/ops-nn.git
git clone -b 9.0.0 https://gitcode.com/cann/ops-nn.git
说明:若环境中已存在配套分支源码,可跳过本步骤,例如CANNLab默认已提供最新版本CANN对应的源码。
📖学习教程
💬相关信息
PS:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。