本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
ut阶段覆盖率非拦截 Co-authored-by: cui_jiahao<cuijiahao5@h-partners.com> # message auto-generated for no-merge-commit merge: !12326 merge master into master ut阶段覆盖率非拦截 Created-by: cui_jiahao Commit-by: cui_jiahao Merged-by: cann-robot Description: ## 描述 修复ut阶段覆盖率拦截造成的问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12326 | 5 天前 | |
test(softmax/norm): 七算子 TTK 标准 golden(TestSpec 四模式 + third_party) Co-authored-by: zhuzixian-lr<zhuzixian1@h-partners.com> # message auto-generated for no-merge-commit merge: !12311 merge zhu/softmax-norm-golden-standard into master test(softmax/norm): 七算子 TTK 标准 golden(TestSpec 四模式 + third_party) Created-by: zhuzixian-lr Commit-by: zhuzixian-lr Merged-by: cann-robot Description: Close #7004 ## 变更内容 为 7 个算子的 tests/assets/golden.py 统一升级为 ttk 标准 TestSpec 样式(__spec__ 注册 + Spec 类),并补齐 third_party 三方标杆声明: | 算子 | kernel/GEIR | aclnn | e2e | 说明 | |---|---|---|---|---| | softmax_v2 | 升级 | 升级 aclnnSoftmax | 新增 aten._softmax | 支持 half_to_float(fp16 输入 fp32 输出) | | softmax_grad | 重写(原 TF 实现) | 新增 aclnnSoftmaxBackward | 新增 aten._softmax_backward_data | 输入序跟随各自定义 | | log_softmax_v2 | 升级 | 升级 | 新增 aten.log_softmax | 真值 CPU aten | | log_softmax_grad | 升级 | 新增 aclnnLogSoftmaxBackward | 新增 aten._log_softmax_backward_data | x 为前向输出 | | confusion_softmax_grad | 升级 | —(无 aclnn 接口) | —(无 aten 等价) | 文件头已说明无接口原因 | | group_norm_v2 | 新增 | 新增 aclnnGroupNorm | 新增 aten.native_group_norm | kernel 条目 mean/rstd 为 (N*group,);支持混合精度 | | group_norm_grad | 新增 | 新增 aclnnGroupNormBackward | 新增 aten.native_group_norm_backward | 输出掩码三态 | ## 设计要点 - golden 真值统一 CPU aten 通路;cast 后整体升档(默认 fp32 对齐算子内部累加,Promote 探测 fp64 高精度真值);bf16 经 uint16 位视图无损转换;多轴 fold 归约 - third_party 全部为 torch Impl 类,适配参数名差异(axes/dim、num_groups/group、input_dtype 注入等);混合精度统一升最宽 dtype 计算后 cast 回原 dtype - 掩码输出(*_is_require/outputMask)为 False 时 golden 返回 None,框架按 SUPPRESSED 跳过比对 - 非连续输入全形态支持(stride 视图 / channels-last 转置),group_norm 系在 aten 调用点统一保证连续 - confusion_softmax_grad 无 aclnn 符号(libopapi 无导出)、无 aten 等价算子(mul/sum/sub 融合中间结果),仅注册 kernel/GEIR 条目 ## 验证 - A5(950, Ascend_base cann-9.3.0) 四模式 132/132:kernel 39 / GEIR 39 / aclnn 30 / e2e(NPU) 30(含 fp16/bf16/fp32 全 dtype、half_to_float、混合精度、多组数) - 4070 GPU third_party 94/94(全 Impl × 全 dtype CUDA 执行,含混合精度 cast 路径与掩码) - 非连续输入双模式(stride 加倍 / channels-last)× 全形态等价性验证通过 - pre-commit 全过(ruff/OAT 等),OAT 用 CI 同款 oat-py 1.0.1 + OAT.xml 复验 0 issue See merge request: cann/ops-nn!12311 | 4 天前 | |
Ascend960 quant_batch_matmul_v4 A8W4 Co-authored-by: chaoying-zhang<zhangchaoying@huawei.com> # message auto-generated for no-merge-commit merge: !11520 merge to_master into master Ascend960 quant_batch_matmul_v4 A8W4 Created-by: chaoying-zhang Commit-by: chaoying-zhang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. Ascend960 quant_batch_matmul_v4 支持MxFp8Fp4/MxFp8Hif4/Fp8Fp4 TCG/S8S4 KCG 2. Ascend960 支持trans_quant_param_v2 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6964](https://gitcode.com/cann/ops-nn/issues/6964) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 1. Ascend950 MxFp8Fp4/Fp8Fp4 TCG用例验证通过 2. Ascend960 MxFp8Fp4/MxFp8Hif4/Fp8Fp4 TCG/S8S4 KCG用例验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11520 | 4 天前 | |
Merge Ascend960 code Co-authored-by: lihang_13123<lihang106@h-partners.com> # message auto-generated for no-merge-commit merge: !11501 merge scatter_add into master Merge Ascend960 code Created-by: lihang_13123 Commit-by: lihang_13123 Merged-by: cann-robot Description: ## 描述 合并Ascend960的ScatterAdd,ScatterSub,ScatterNdAdd,SparseToDense,UnsortedSegmentMin代码至主线 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6897 ## 测试 Ascend950,Ascend960环境批跑用例OK,冒烟OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:合并Ascend960代码 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11501 | 4 天前 | |
sleep算子支持Ascend960 Co-authored-by: hw-zhangpanpan<zhangpanpan5@huawei.com> # message auto-generated for no-merge-commit merge: !11793 merge master into master sleep算子支持Ascend960 Created-by: hw-zhangpanpan Commit-by: hw-zhangpanpan Merged-by: cann-robot Description: ## 描述 为 sleep 算子新增 Ascend 960 平台(ascend960dt / ascend960pr)支持,使其可在最新 Ascend960 硬件上正常编译与运行。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6909 ## 测试 泛化和冒烟测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11793 | 5 天前 | |
fix(convolution_backward): output_padding适配检视意见优化 Co-authored-by: wishercy<zhaoyang56@huawei.com> # message auto-generated for no-merge-commit merge: !11669 merge output_padding_for_aclnn_bug into master fix(convolution_backward): output_padding适配检视意见优化 Created-by: wishercy Commit-by: wishercy Merged-by: cann-robot Description: ## 描述 优化output_padding遗留检视问题 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6875 ## 测试 已通过UT, rdv测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11669 | 4 天前 | |
迁移 QuantizeAddLayerNormPass 与 AddLayerNormDynamicQuantFusionPass 两条融合规则 Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !12156 merge aln_quant_pass into master 迁移 QuantizeAddLayerNormPass 与 AddLayerNormDynamicQuantFusionPass 两条融合规则 Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 迁移 QuantizeAddLayerNormPass 与 AddLayerNormDynamicQuantFusionPass 两条 GE 自定义量化融合规则至本仓库,将 AddLayerNorm 与下游量化算子的组合融合为 AddLayerNormQuant 算子,消除中间结果的冗余访存与算子调度开销。同步补充公共设施、UT 和文档。 ### 改动原因 量化场景中 AddLayerNorm 的输出常随后接量化算子(静态 Quantize/AscendQuantV2,或动态 DynamicQuant),二者独立调度时中间结果需落回 Global Memory 再读出,存在冗余访存与调度开销。两条量化融合规则迁移至本仓库统一维护,匹配后替换为 AddLayerNormQuant 算子节点,提升量化场景端到端性能。 ### 改动方法 1. **静态量化规则 QuantizeAddLayerNormPass**:识别 AddLayerNorm 后接 1~2 个 Quantize/AscendQuantV2 的组合,融合为 AddLayerNormQuant(static 模式)。按量化节点类型/可选 offset/可选 bias/单双分支 4 个配置位组合生成 16 组模式。 2. **动态量化规则 AddLayerNormDynamicQuantFusionPass**:识别 AddLayerNorm 后接 1~2 个 DynamicQuant 的组合,融合为 AddLayerNormQuant(dynamic 模式)。模式由分支数、bias、是否经 Mul 表达 smooth、smooth 掩码、操作数交换掩码(swap_mask)、group_index 掩码组合生成;DynamicQuant 的 smooth 输入(直接输入或经 Mul 表达)映射到 AddLayerNormQuant 的 smooth_scales。 3. **公共设施 add_layer_norm_quant_fusion_common.h**:提供 Captures 匹配捕获、CheckBoundary/CheckNorm 边界与归一化校验、Int8Output 输出校验、SetQuantInputDescs/SeedQuantOutputs 描述符处理、MakePattern/Finish 构图工具,统一两条规则的构造、校验与替换流程;IsSupportedPlatform 限定 NpuArch 3510(Ascend 950PR/950DT)。 4. **准入校验**:MeetRequirements 中校验 epsilon、additional_output、AddLayerNorm 输入 dtype 一致性、量化 dst_type/int8 输出、smooth dtype 与归一化 dtype 一致等条件。 5. **UT**:QuantAlnFusionTest 7 个用例,覆盖静态/动态变体、共享 scale、多 dtype、gamma rank 兼容,及 mean/中间输出被外部使用、第二个 Mul 带额外 smooth 等拒绝场景。 6. **文档**:新增 2 篇融合规则文档(融合模式、各平台使用约束、支持型号)及 6 张配图。 7. **构建接入**:op_graph/CMakeLists.txt 更新,将新融合规则接入 graph_plugin 构建,并通过 _proto_headers 声明模式构造依赖的算子原型头(dynamic_quant/quantize/ascend_quant_v2 proto);tests/ut/op_graph/CMakeLists.txt 新增 UT 构建配置。 两条规则均通过 REG_FUSION_PASS(...).Stage(kAfterBuiltinFusionPass) 注册。除 op_graph/CMakeLists.txt 构建配置接入外,不修改任何既有文件逻辑,无存量行为影响。 涉及文件(16 个,+1138 -7): - norm/add_layer_norm_quant/op_graph/fusion_pass/quantize_addlayernorm_fusion_pass.cpp/.h - norm/add_layer_norm_quant/op_graph/fusion_pass/addlayernorm_dynamicquant_fusion_pass.cpp/.h - norm/add_layer_norm_quant/op_graph/fusion_pass/add_layer_norm_quant_fusion_common.h - norm/add_layer_norm_quant/docs/QuantizeAddLayerNormPass.md、AddLayerNormDynamicQuantFusionPass.md - norm/add_layer_norm_quant/tests/ut/op_graph/test_add_layer_norm_quant_fusion_pass.cpp、CMakeLists.txt - norm/add_layer_norm_quant/op_graph/CMakeLists.txt(修改,+13 -7) - docs/zh/figures/quantize_add_layer_norm_pass_1~4.png、add_layer_norm_dynamic_quant_fusion_pass_1~2.png ## 关联的Issue - #6888 ## 测试 - 新增 UT QuantAlnFusionTest 7 个用例:融合命中(静态/动态变体、共享 scale、多 dtype、gamma rank 兼容)与拒绝(mean/中间输出被外部使用、第二个 Mul 带额外 smooth)场景,并校验融合后 AddLayerNorm 与量化节点被消除、输出描述符保持。 ## 文档更新 - 新增 QuantizeAddLayerNormPass.md:静态量化融合模式(1~2 个 Quantize/AscendQuantV2)、使用约束、支持型号 - 新增 AddLayerNormDynamicQuantFusionPass.md:动态量化融合模式(smooth 直接输入或经 Mul 表达变体)、dtype 与图结构约束、支持型号 - 新增 6 张融合模式配图 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12156 | 4 天前 | |
support compile pypto-pro op in ops-nn Co-authored-by: h9718w<wangchaoyuan10@huawei.com> # message auto-generated for no-merge-commit merge: !9638 merge pr-pypto into master support compile pypto-pro op in ops-nn Created-by: h9718w Commit-by: h9718w Merged-by: cann-robot Description: 移植 PyPTO 支持到 ops-nn,包括: 1. cmake/func.cmake: 添加 require_pypto_pro/enable_pypto_kernel 等函数 2. cmake/gen_ops_info.cmake: 添加 PyPTO 构建支持 3. scripts/util/ascendc_impl_build.py: 添加 pypto_compile_op wrapper 4. scripts/util/pypto_codegen.py: 新增 codegen 脚本 5. scripts/util/dependency_parser.py: 注册 pypto_add_example 6. examples/pypto_add_example: 示例算子 See merge request: cann/ops-nn!9638 | 11 天前 | |
修正 Median 按维接口的重复值下标说明 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !11742 merge fix/2026-10-12-ops-nn-median-index-tie-order-doc-01 into master 修正 Median 按维接口的重复值下标说明 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: # 修正 Median 按维接口的重复值下标说明 按维 Median 的两份中文文档将 indices 描述为中位数值首次出现的位置,但实现路径在重复中位数值时选择的下标并不一致。修正文档,说明 indices 对应一个中位数元素,且重复值下标不保证取首次出现位置。仅修改文档。 关联 Issue: https://gitcode.com/cann/ops-nn/issues/6505 See merge request: cann/ops-nn!11742 | 5 天前 | |
foreach_copy算子支持ascend960dt Co-authored-by: zhang-wenbo-beat<zhangwenbo67@huawei.com> # message auto-generated for no-merge-commit merge: !12351 merge foreach_copy_960dt into master foreach_copy算子支持ascend960dt Created-by: zhang-wenbo-beat Commit-by: zhang-wenbo-beat Merged-by: cann-robot Description: ## 描述 foreach_copy 算子适配 ascend960dt(A6/dav_9201),沿用仓内既有 960dt 适配模式(参考 segment_sum/bucketize_v2、avg_pool 簇等已合入 PR): - op_host/foreach_copy_def.cpp:注册 ascend960dt,复用 ascend950 的 AICore 配置 - op_host/CMakeLists.txt:SUPPORT_COMPUTE_UNIT 增加 ascend960dt,SUPPORT_TILING_DIR 对应增加 arch22(tiling 为纯 host 代码,无架构差异) - op_host/config/ascend960dt/foreach_copy_binary.json:新增二进制配置(16 个 dtype 组合,内容与 ascend950 一致) - op_kernel/CMakeLists.txt:COMPUTE_UNITS 增加 ascend960dt - scripts/kernel/binary_config/ascendc_config.json:ForeachCopy 条目增加 ascend960dt 算子内核(op_kernel/foreach_copy.cpp)与 tiling(op_host/arch22/)均无 SOC 相关分支逻辑,无需代码改动。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6872 ## 测试 - 新增/修改的 JSON 配置均通过格式校验 - 本地 pre-push 编译门禁因全新 worktree 需近全量构建、耗时过长已跳过(本次改动仅为芯片注册与配置,无代码逻辑变更),由远端 CI 门禁验证 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12351 | 4 天前 | |
fix: Remove unnecessary workspace for init_embedding_hash_table/sigmoid_cross_entropy_with_logits_v2/group_norm/group_norm_silu Co-authored-by: yifangao<gaoyifan20@huawei.com> # message auto-generated for no-merge-commit merge: !9867 merge workspace-remove-3 into master fix: Remove unnecessary workspace for init_embedding_hash_table/sigmoid_cross_entropy_with_logits_v2/group_norm/group_norm_silu Created-by: yifangao Commit-by: yifangao Merged-by: cann-robot Description: ## 描述 Ascend 950(arch35)路径下, init_embedding_hash_table、sigmoid_cross_entropy_with_logits_v2、group_norm 和 group_norm_silu 算子未实际使用 workspace,但原实现仍申请或保留了 workspace 相关处理。 本次修改: - 将上述 4 个算子的 workspace 大小设置为 0,避免不必要的内存申请。 - 删除 group_norm 和 group_norm_silu kernel 中未使用的 workspace 判空、用户 workspace 获取及参数传递。 - 统一 workspace 常量命名,并补充相关文件末尾换行。 - 修改仅作用于 Ascend 950(arch35)实现,不影响其他芯片路径。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6122 ## 测试 David冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260928_144411817 obp冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260929_083012442 ## 文档更新 无文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9867 | 25 天前 | |
topktoppsample算子A2/A3合并config整改 Co-authored-by: 陈赵旻熠<chenzhaominyi1@huawei.com> # message auto-generated for no-merge-commit merge: !12334 merge master into master topktoppsample算子A2/A3合并config整改 Created-by: zerosaki_admin Commit-by: 陈赵旻熠 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 对 TopKTopPSample 与 TopKTopPSampleV2 两个算子的 binary 配置文件进行整改,将 A2(ascend910b)与 A3(ascend910_93)两套配置中的 bin_filename 命名统一为不含平台标识的通用名称 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6928](https://gitcode.com/cann/ops-nn/issues/6928) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> atk验证ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12334 | 4 天前 | |
[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 | 4 天前 | |
Ascend960 quant_batch_matmul_v4 A8W4 Co-authored-by: chaoying-zhang<zhangchaoying@huawei.com> # message auto-generated for no-merge-commit merge: !11520 merge to_master into master Ascend960 quant_batch_matmul_v4 A8W4 Created-by: chaoying-zhang Commit-by: chaoying-zhang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. Ascend960 quant_batch_matmul_v4 支持MxFp8Fp4/MxFp8Hif4/Fp8Fp4 TCG/S8S4 KCG 2. Ascend960 支持trans_quant_param_v2 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6964](https://gitcode.com/cann/ops-nn/issues/6964) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 1. Ascend950 MxFp8Fp4/Fp8Fp4 TCG用例验证通过 2. Ascend960 MxFp8Fp4/MxFp8Hif4/Fp8Fp4 TCG/S8S4 KCG用例验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11520 | 4 天前 | |
test(rms_norm_grad_quant): add CPU golden TestSpecs Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !12448 merge test-rms-norm-grad-quant-golden into master test(rms_norm_grad_quant): add CPU golden TestSpecs Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 为 RmsNormGradQuant 补充独立 CPU golden,仅新增 norm/rms_norm_grad_quant/tests/assets/golden.py,不修改算子实现。 - 采用当前 TTK 的 __spec__ / TestSpec 格式,提供 kernel/GEIR 与完整 ACLNN 参数签名的入口。 - 使用 float64 独立计算 RMSNorm 反向公式,支持 gamma 覆盖多个尾轴;直接使用输入 rstd,不在 golden 中重新计算前向统计量。 - 支持 static 量化、乘/除 scale、可选 int32 offset、INT8 最近偶数舍入/饱和,以及 HIFLOAT8 浮点转换。 - 输入钩子根据 x 生成关联的 rstd,并修复随机生成的零 scale;保留有效输入值和非连续布局。 - 空 batch 的非空 dgamma 按当前融合算子 EmptyDgamma::VFDuplicateRows 的显式 QuietNaN 行为处理;这不是普通 RmsNormGrad 空和为零的约定。空 gamma 由 ACLNN 提前返回,不作为 kernel 合法输入。 ## 关联的Issue fixes #7020 https://gitcode.com/cann/ops-nn/issues/7020 ## 测试 环境:Ascend950PR_9579,任务目录内独立安装的 CANN Master/Revise,版本 9.3.0~weekly.20261014.01。测试调用已安装官方包,未重新编译当前 ops-nn C++ 源码。 受测 golden 提交:701dcaf53811978702582ba525b9befa3eea5508。 | 验证 | 结果 | | --- | --- | | CPU 独立 autograd / 量化 / ABI 单测 | 59 / 59 通过 | | TTK kernel,Revise,release | 86 / 86 精度通过 | | TTK ACLNN,Revise | 98 / 98 精度通过 | | TTK GEIR,Revise | 12 / 12 精度通过 | | TTK kernel,Master,独立种子冒烟 | 8 / 8 精度通过 | | TTK Promote / 比较器 / storage 相关回归 | 43 + 70 + 47 项通过 | | 提交检查 | ruff check/format、codespell、增量 OAT 等 pre-commit 检查通过 | 覆盖合法 dy/gamma/scale dtype 组合、INT8/HIFLOAT8、两种 div_mode、有/无 offset、2–8 维、多个归一化轴、非对齐长度、大 batch、空 batch、ACLNN 空 gamma、饱和及非连续输入/输出。所有 TTK 上板命令显式使用 --pc=1。 TTK 使用分支 [fix-rms_norm_grad_quant-golden-promote](https://gitcode.com/raoliang_sac/ops-test-kit/tree/fix-rms_norm_grad_quant-golden-promote),受测提交 e36bc84b6c78211216b279234853c57a9c8afd30。该分支保留 Promote 原始 dtype,修复 NumPy 非连续输出 storage 回读长度,并参考已有 RmsNormQuant/AddRmsNormQuant 分支修复 FP8 数值邻居比较;未放宽比较阈值。TTK 分支仅推送,不单独开 PR。 测试 CSV、独立校验脚本和日志保留在本地任务的 MyTestCase/RmsNormGradQuant/cases/golden_pr/ 与 validation/rms_norm_grad_quant-golden-20261021/,不混入本 PR。关闭了性能采样,不将本次结果作为性能验证;ACLNN 未完成内存越界专项验证。未运行仓库全量本地 CI 或声称线上 CI 通过。 ## 文档更新 无需修改对外接口文档;golden 内注明了计算语义、输入关联与边界约定。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:补充算子测试 golden 资产。 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12448 | 4 天前 | |
[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 | 4 天前 | |
AdaptiveMaxPool2d算子EZ错误码修改 Co-authored-by: 镜心<wangyungfei@h-partners.com> # message auto-generated for no-merge-commit merge: !12014 merge pool2d_ez_error into master AdaptiveMaxPool2d算子EZ错误码修改 Created-by: mirror-center Commit-by: 镜心 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次变更主要针对 AdaptiveMaxPool2d 算子的错误码进行适配,将 host 侧 tiling 中对 output_size 属性校验的报错宏由 OP_LOGE_WITH_INVALID_ATTR 替换为 OP_LOGE_FOR_INVALID_VALUE_WITH_REASON,并补充了说明原因(reason)文本,涉及通用 tiling 与 SIMT tiling 两条校验路径,同时同步更新了单元测试中的相关注释。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#6710](https://gitcode.com/cann/ops-nn/issues/6710) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12014 | 4 天前 | |
Ascend960 quant_batch_matmul_v4 A8W4 Co-authored-by: chaoying-zhang<zhangchaoying@huawei.com> # message auto-generated for no-merge-commit merge: !11520 merge to_master into master Ascend960 quant_batch_matmul_v4 A8W4 Created-by: chaoying-zhang Commit-by: chaoying-zhang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. Ascend960 quant_batch_matmul_v4 支持MxFp8Fp4/MxFp8Hif4/Fp8Fp4 TCG/S8S4 KCG 2. Ascend960 支持trans_quant_param_v2 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6964](https://gitcode.com/cann/ops-nn/issues/6964) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 1. Ascend950 MxFp8Fp4/Fp8Fp4 TCG用例验证通过 2. Ascend960 MxFp8Fp4/MxFp8Hif4/Fp8Fp4 TCG/S8S4 KCG用例验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11520 | 4 天前 | |
perf(rnn/lstm_block_cell): 流量模型 tiling 重构 + 双缓冲流水 + 二分树归并(大 shape 性能优化) Co-authored-by: wang-zhiyue2<wangzhiyue2@huawei.com> # message auto-generated for no-merge-commit merge: !11417 merge lstmblock-perf into master perf(rnn/lstm_block_cell): 流量模型 tiling 重构 + 双缓冲流水 + 二分树归并(大 shape 性能优化) Created-by: wang-zhiyue2 Commit-by: wang-zhiyue2 Merged-by: cann-robot Description: ## 描述 LstmBlockCell(Ascend950PR)大 shape 性能优化,基于已合入的 a467edc44 基线。562 用例实测中位加速 2.2x、大 shape 最高 37x,精度全量回归通过。 **Host 侧(tiling 重构)** - PickTile:nBlk 上限收敛到 NPad(H)(消除幻影列预算压制 kChunk);全 shape 流量模型选 tile(A-tile 组放大 + w 重读轮数按 KS 计划真实推导 strips×rounds + k-block 迭代停顿项实测标定 + fp16 partial 平面项);kChunk 纳入 L1 双缓冲 staging 预算;小流量(<16MB)开销主导 shape 取最宽 strip 扇出 - K-split:SK 填满网格反推 clamp(核数/stripsCap,2,核数)(旧策略 B<2×mBlk 时只用 2~16 核);fp16 段数按 shape-only strip 数反推(段边界不随核数漂移);partial workspace 超 96GB 时 W 逐档放大(EDGE_467 默认档 E19999 → 可跑) **Kernel 侧** - CubeProjectKS:A/B tile L1 双缓冲 + k-block 预取跨段重叠 + FIX→M 延迟等待(每 Set/Wait 严格配对),Mmad 算术序列不变 - MergePairKS:Kahan 逐段补偿(~11 op + 2 barrier/partial)换 4-plane 批量装载 + 批内二分树 ((p0+p1)+(p2+p3));归并模式按 S 自适应(S>16 树 / 小 S Kahan 精度上界);热循环 barrier 换 MTE2_V/V_MTE2 事件对 - VectorCellUnit:phase-B 按 (strip, round, nTile, 行半区) 矩形全网格轮询分发(旧 j%sk==q 映射小 H 时 1/16 核失衡消除) - PeepholeAddRowsHalf:逐行 4×PIPE_ALL/行 改整平面两轮 Cast **关键实测数据(vs 合入基线,msprof task duration)** | 用例 | 基线 | 优化后 | 加速 | |---|---|---|---| | ANC_073 (fp32 B=39 K=87k) | 12666us | 355us | 35.7x | | ANC_111 (fp16 B=39 K=84k) | 136446us | 6794us | 20.1x | | RND_383 (fp16 B=3 K=46k) | 32084us | 3037us | 10.6x | | ANC_094 (fp16 B=75983) | 1180263us | 197198us | 6.0x | | RND_433 (fp32 B=5 K=17k) | 15881us | 2781us | 5.7x | | ANC_088 (fp32 B=87613) | 584215us | 146673us | 4.0x | | ORT_137 (fp32 B=8831) | 552840us | 209077us | 2.6x | | EDGE_467 默认档 | E19999 跑不了 | 375307us | - | ## 关联的Issue 无 ## 测试 - UT 三配置全绿(ophost no-soc 69 PASS / soc950 69 PASS / opkernel 编译通过) - 562 用例 TTK geir cross_check 全量回归:559 PASS(ORT_238/ALIGNED_044/ATTR_012 为三方服务瞬时不可达,重跑通过;EDGE_475 经上游原版代码对照复测为三方环境变化,非本改动引入) - 二分树 vs Kahan A/B:10 困难用例双模式精度全 PASS,树归并 1.0~3.9x 优 - 性能:562 全量 msprof task duration(数据见 PR 讨论) ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他 See merge request: cann/ops-nn!11417 | 5 天前 | |
Ascend960 quant_batch_matmul_v4 A8W4 Co-authored-by: chaoying-zhang<zhangchaoying@huawei.com> # message auto-generated for no-merge-commit merge: !11520 merge to_master into master Ascend960 quant_batch_matmul_v4 A8W4 Created-by: chaoying-zhang Commit-by: chaoying-zhang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. Ascend960 quant_batch_matmul_v4 支持MxFp8Fp4/MxFp8Hif4/Fp8Fp4 TCG/S8S4 KCG 2. Ascend960 支持trans_quant_param_v2 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6964](https://gitcode.com/cann/ops-nn/issues/6964) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 1. Ascend950 MxFp8Fp4/Fp8Fp4 TCG用例验证通过 2. Ascend960 MxFp8Fp4/MxFp8Hif4/Fp8Fp4 TCG/S8S4 KCG用例验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11520 | 4 天前 | |
Ascend960-matmul系列算子与Ascend950平台归一 Co-authored-by: yijiliang<yijiliang1@huawei.com> # message auto-generated for no-merge-commit merge: !12293 merge merge-test1 into master Ascend960-matmul系列算子与Ascend950平台归一 Created-by: yijiliang Commit-by: yijiliang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为支持 Ascend960平台,将 MatMulV3系列算子与 3510 归一为单代码线,复用 arch35 既有 tiling 与 kernel 框架。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6802 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本地验证950及960测试用例无问题 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12293 | 4 天前 | |
fix(add_rms_norm_dynamic_quant): 顶层入口对非int标量做原始类型校验,修复dispatcher归一化绕过 Co-authored-by: wangqi<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !10891 merge fix/add-rms-norm-quant-public-entry-validation into master fix(add_rms_norm_dynamic_quant): 顶层入口对非int标量做原始类型校验,修复dispatcher归一化绕过 Created-by: wangqi_ai Commit-by: wangqi Merged-by: cann-robot Description: ## 关联 issue fixes #6055 ## 问题 顶层入口 cann_ops_nn.add_rms_norm_dynamic_quant(文档单算子示例路径)解析为 dispatcher OpOverloadPacket,标量参数在进入算子代码前被 schema 静默归一化(torch.int4 -> 40、torch.uint7 -> 36、np.int64(36) -> 36 等)。torch.uint6/uint7/int4/int5 四个 dtype 的序号恰好完整覆盖合法 dst_type 值域 {35,36,40,41},导致传入非 int 类型完全不报错、静默按"碰巧"的量化类型执行,与约束说明承诺的入口 TypeError 不符。详见 #6055。 ## 修改内容 1. torch_extension/cann_ops_nn/ops/norm/add_rms_norm_dynamic_quant/add_rms_norm_dynamic_quant.py 拆分 PrivateUse1 kernel(原逻辑逐字保留)与公开入口 add_rms_norm_dynamic_quant:先 _validate_arg_types 校验**原始**参数,再委托 torch.ops.cann_ops_nn.add_rms_norm_dynamic_quant 分发;公开入口携带 _cann_ops_nn_public_entry_ 标记。 2. torch_extension/cann_ops_nn/__init__.py __getattr__ 优先导出带标记的公开入口(而非 dispatcher 句柄);未携带标记的算子保持原行为——opt-in 机制,对其余算子零影响。 3. norm/add_rms_norm_dynamic_mx_quant/tests/ut/torch_extension/test_torch_extension_param_validation.py 入口结构锁定用例更新为断言"公开入口 + 与 raw 入口同一函数对象"(标量拦截覆盖经同一性断言传递至既有用例);删除与 test_scalar_type_interception 完全重复(同函数×同 7 个坏值×同断言)的参数化用例。 4. norm/add_rms_norm_dynamic_mx_quant/docs/torchapi_add_rms_norm_dynamic_quant.md 约束说明修正严格校验适用入口(补充顶层入口;dispatcher 归一化说明限定为直接经 torch.ops 调用场景);两个调用示例改为打印 shape/dtype,避免大 shape 输出刷屏。 ## 为什么委托 torch.ops 而非直调 C++ 模块 保证图模式行为不变:torch.compile 下 Dynamo 将公开入口内联后,torch.ops 调用仍作为 FX 图节点(实测 node.target 与修复前同为 OpOverloadPacket、逐节点一致),graph_convert 注册的 torchair GE 转换不受影响;若直调 C++ 模块则会在 builder.load() 处 graph break,图模式静默退化为 eager(mxscale dtype 等文档承诺行为改变)。 ## 验证(Ascend 950PR 实测) - 参数校验 UT:**42 passed**(meta/CPU,设备无关) - NPU UT test_torch_extension.py:**113 passed** - 文档 eager 示例路径实测:torch.int4/uint6/uint7/int5、torch.float8_e5m2/e4m3fn、np.int64/np.int32、36.0、"36"、True 全部抛指名 TypeError(如 dst_type must be a Python int (35=FP8_E5M2, 36=FP8_E4M3FN, 40=FP4_E2M1, 41=FP4_E1M2), but got torch.dtype: torch.int4);dst_type=36 正常输出 float8_e4m3fn (4,64),示例新打印语句输出与返回值说明表一致 - 图模式:FX 图与修复前逐节点一致;graph(trace) 与 eager 数值 torch.equal 为 True;torch.compile 下传 torch.int4 在 trace 阶段即 TypeError - pre-commit run(ruff check / ruff format / codespell / OAT 等)全部通过,零自动改动 ## 兼容性 - eager 合法调用(Python 原生 int/str/bool/float、IntEnum)行为不变 - torch.ops.cann_ops_nn.* 直调路径行为不变(框架归一化 + 值域兜底,文档已说明) - 其余算子顶层入口解析行为不变(仅带标记的公开入口生效) See merge request: cann/ops-nn!10891 | 1 个月前 | |
更新MSDAGrad算子文档 Co-authored-by: wanshilin<wanshilin@h-partners.com> # message auto-generated for no-merge-commit merge: !12240 merge master into master 更新MSDAGrad算子文档 Created-by: wanshilin Commit-by: wanshilin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新MSDAGrad算子文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6732 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12240 | 4 天前 | |
修改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 | 3 个月前 | |
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 | 1 个月前 | |
动态库解耦 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 个月前 | |
docs:修改代码块缺闭合围栏问题 Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !11686 merge master into master docs:修改代码块缺闭合围栏问题 Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6434](https://gitcode.com/cann/ops-nn/issues/6434) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> codearts_check_rule_config.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11686 | 8 天前 | |
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 | 2 个月前 | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 12 天前 | |
产品名称修改 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 | 26 天前 | |
init | 1 年前 | |
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 | 1 个月前 | |
产品名称修改 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 | 26 天前 | |
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 | 2 个月前 | |
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 | 8 个月前 | |
【描 述】 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 | 8 个月前 | |
修复静态库出包不打包kernel的问题 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !12263 merge master into master 修复静态库出包不打包kernel的问题 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 ### 背景 本 PR 针对静态库打包时未打包 kernel 的问题进行修复。改动集中在 build.sh 的 main() 流程中:在调用 build_binary 前后备份并还原 ASCEND_OPP_PATH 与 LD_LIBRARY_PATH 两个环境变量,避免 build_binary 对这些变量的修改影响后续的静态库构建流程,从而保证静态库出包时能正确打包 kernel。 ### 主要改动 * 备份构建前的环境变量: 在进入 ENABLE_BINARY 或 ENABLE_PACKAGE 分支、调用 build_binary 之前,用局部变量 OLD_ASCEND_OPP_PATH 和 OLD_LD_LIBRARY_PATH 保存当前 ASCEND_OPP_PATH、LD_LIBRARY_PATH 的取值。 * 还原环境变量: 在 build_binary 执行完成后,重新导出 ASCEND_OPP_PATH 和 LD_LIBRARY_PATH 为备份值,避免 build_binary 对这两个变量的修改泄漏到后续的 build_static_lib 等步骤。 * 保障静态库出包行为: 通过上述环境变量的隔离恢复,使构建流程后续阶段(静态库打包)运行在原始环境变量下,从而修复静态库出包未打包 kernel 的问题。 ## 关联的Issue [#6883](https://gitcode.com/cann/ops-nn/issues/6883) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12263 | 4 天前 | |
Ascend960-matmul系列算子与Ascend950平台归一 Co-authored-by: yijiliang<yijiliang1@huawei.com> # message auto-generated for no-merge-commit merge: !12293 merge merge-test1 into master Ascend960-matmul系列算子与Ascend950平台归一 Created-by: yijiliang Commit-by: yijiliang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为支持 Ascend960平台,将 MatMulV3系列算子与 3510 归一为单代码线,复用 arch35 既有 tiling 与 kernel 框架。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6802 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本地验证950及960测试用例无问题 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12293 | 4 天前 | |
docs:修改代码块缺闭合围栏问题 Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !11686 merge master into master docs:修改代码块缺闭合围栏问题 Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6434](https://gitcode.com/cann/ops-nn/issues/6434) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> codearts_check_rule_config.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11686 | 8 天前 | |
调整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 个月前 | |
revert//fix(opgraph): 支持旧版本 CANN 运行时加载融合 pass 库 Co-authored-by: cann-robot<cann@cann.team> # message auto-generated for no-merge-commit merge: !11095 merge revert-mr-9924-1790130631176-auto into master revert//fix(opgraph): 支持旧版本 CANN 运行时加载融合 pass 库 Created-by: cann-robot Commit-by: cann-robot Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11095 | 1 个月前 | |
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 | 1 个月前 |
🔥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&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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。