本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【pr】fix: 修改冒烟任务工程配置问题 Co-authored-by: Larry_liuyi<larry.liuyi@huawei.com> # message auto-generated for no-merge-commit merge: !9789 merge master into master 【pr】fix: 修改冒烟任务工程配置问题 Created-by: Larry_liuyi Commit-by: Larry_liuyi Merged-by: cann-robot Description: ## 描述 修改冒烟任务工程配置问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:工程配置修改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9789 | 1 个月前 | |
nn仓算子错误日志整改 Co-authored-by: qq_52874943<gaomingyuan3@h-partners.com> # message auto-generated for no-merge-commit merge: !9777 merge master into master nn仓算子错误日志整改 Created-by: qq_52874943 Commit-by: qq_52874943 Merged-by: cann-robot Description: ## 描述 本 PR 为 nn 仓(ops-nn)中多个量化类算子及融合算子的错误日志与调试日志进行整改,关联 Issue #5183。改动不涉及功能逻辑与接口行为,仅修正日志文案中的语法、拼写及措辞问题:将 "not support" 统一改为 "does not support"、"is must be" 改为 "must be"、"shoule" 改为 "should",并修正 dstDype、DynamicQuan、vaule 等拼写错误,同时修正 aclnn_grouped_dynamic_mx_quant 系列日志中打印错误变量(误将 mxscaleDim1 作为 mxscaleDim2 的值输出)的问题。 ## 关联的Issue 关联Issue[#5183](https://gitcode.com/cann/ops-nn/issues/5183) ## 测试 本地已完成新精度对比与性能测试,通过静态检查、蓝区冒烟、算子ST以及算子二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9777 | 1 个月前 | |
fix(common): 迁移 AdaCast onnx 插件解耦 protobuf,并使 common 集中目录 onnx 变更可被 CI 触发执行 framework UT Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !9618 merge fix-onnx-0831 into master fix(common): 迁移 AdaCast onnx 插件解耦 protobuf,并使 common 集中目录 onnx 变更可被 CI 触发执行 framework UT Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 本 MR 含两部分: 1. 将 common/src/framework/ada_cast_onnx_plugin.cpp 的 ParseParamsFn 迁移到 ParseParamsByOperatorFn,从 op_src 的 attribute JSON 解析 pixel(INT),去掉 protobuf 依赖(onnx_common.h → plugin_util.h 等 proto-free 头),并补 common/tests/ut/framework/test_ada_cast_onnx_plugin.cpp 单测。 2. 补齐 ops-nn "framework UT 按算子 + op_host "中 common 集中 目录这一支的失效:改 common/.../framework 下 onnx 文件时 CI 静默跳过 (parse_changed_files.py 无 framework matcher、tests/ut/op_host 的 if(NOT ASCEND_OP_NAME) 在 --ops 下把 common framework UT 挡死)。 ## 实现说明 - scripts/util/parse_changed_files.py(改动1) 基类 match() 加 framework 短路 + OpHostUt._ut_match 正则提取算子名 ((?:^|/) 兼容相对路径),覆盖四种 onnx framework 路径:common 插件源、 common 插件 UT、算子级 UT、算子级插件源。非 framework 文件走原逻辑不变; 仅 op_host_ut 命中。顶部加 import re。 - tests/ut/op_host/CMakeLists.txt(改动2) 门槛 if(NOT ASCEND_OP_NAME) → 全量接入;--ops 仅命中 common 框架插件算子 才接入。结构上规避 ops-cv !1435 那种"非框架算子 PR 触发 framework cases_obj 零源"回归。framework static_lib 链接处本就有 $<TARGET_EXISTS:> 守卫, 非框架算子构建时链接为空,不影响他人。 - cmake/ut.cmake(改动3/5) 改动3:framework 分支按 test_<op>_onnx_plugin.cpp 文件名逐文件过滤。 改动5:add_opbase_ut_common(tiling/infershape/framework 三模块共享) 加 empty.cpp 兜底源——selective 下三个 opbase obj 目标都不存在时 add_library 无源会在 generate 阶段报错。 - scripts/util/dependency_parser.py(改动4) find_all_dependency 对不在依赖图的 framework-only 算子(ada_cast/hardmax/ size 无算子目录)由 raise RuntimeError 改为 warn+计入算子本身(无子依赖)。 否则 parse 与 build.sh --ops 依赖解析会崩、且 parse 输出 op 字段为空。 真实算子(在 all_ops)不受影响。 ## 关联的Issue Issue [#5115](https://gitcode.com/cann/ops-nn/issues/5115) ## 测试 容器(CANN 9.0.0,aarch64)端到端 CI -f 验证: - ada_cast(common 插件源)CI -f:Trigger Ut op_host_ut:ada_cast → OnnxAdaCastPluginTest 2 用例 PASSED,rc=0。 - elu(算子级插件源 activation/elu/framework/elu_onnx_plugin.cpp,扩展正则 新增覆盖)CI -f:Trigger Ut op_host_ut:elu → OnnxEluPluginTest 2 用例 PASSED,rc=0。 - relu(非框架算子、不涉及 onnx,回归)CI -f:门槛不命中 common framework, 无 No SOURCES 报错,7 用例 PASSED,rc=0(即不涉及 onnx 的 PR 不受影响)。 - ada_cast 迁移本身:protobuf-free 编译通过,硬标准 onnx_common.h/ge::onnx::/Message 零残留。 本地 git diff --check 通过;py_compile 通过。 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9618 | 1 个月前 | |
MovingSumWithSigmoid/BasicLSTMInplaceFillWindowCache/BasicGRUInplaceFillWindowCache/DynSeqOuter/DynamicGRUV2/MaskedSoftmaxWithRelPosBias算子注册去重宏 Co-authored-by: Coder_Nerd<shishuai5@huawei.com> # message auto-generated for no-merge-commit merge: !9705 merge master into master MovingSumWithSigmoid/BasicLSTMInplaceFillWindowCache/BasicGRUInplaceFillWindowCache/DynSeqOuter/DynamicGRUV2/MaskedSoftmaxWithRelPosBias算子注册去重宏 Created-by: Coder_Nerd Commit-by: Coder_Nerd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充op_nn_proto_extend.h中MovingSumWithSigmoid/BasicLSTMInplaceFillWindowCache/BasicGRUInplaceFillWindowCache/DynSeqOuter/DynamicGRUV2/MaskedSoftmaxWithRelPosBias算子注册去重宏 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5490 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9705 | 1 个月前 | |
fix: 修复 npu_clear_float_status 算子 codecheck 告警(宏定义分号/const 修饰/头文件自包含) Co-authored-by: wuchengwen_oh<wuchengwen4@huawei.com> # message auto-generated for no-merge-commit merge: !9604 merge fix/npu_clear_float_status_codecheck into master fix: 修复 npu_clear_float_status 算子 codecheck 告警(宏定义分号/const 修饰/头文件自包含) Created-by: wuchengwen_oh Commit-by: wuchengwen_oh Merged-by: cann-robot Description: ## 描述 修复 npu_clear_float_status 算子的 codecheck 静态检查告警(共 7 条),改动均不涉及算子功能逻辑: 1. **宏定义末尾多余分号**( control/npu_clear_float_status/examples/test_geir_npu_clear_float_status.cpp) - 删除 ADD_INPUT_MODE / ADD_CONST_INPUT / ADD_OUTPUT_MODE 三个宏定义末尾的分号,由宏调用处提供分号,与仓内其他算子示例写法一致(如 confusion_softmax_grad 等) 2. **只读 context 指针参数补充 const 修饰** - op_host/npu_clear_float_status_infershape.cpp:InferShapeValidateDtype(gert::InferShapeContext* context) 改为 const gert::InferShapeContext* context - op_host/arch35/npu_clear_float_status_tiling_arch35.cpp:ValidateDtype(gert::TilingContext* context) 改为 const gert::TilingContext* context - 两处函数体内仅调用 const 成员函数(GetInputDesc/GetOutputDesc/GetNodeName),const 化安全无行为变化 3. **头文件自包含**(op_kernel/arch35/npu_clear_float_status_tiling_data.h) - 结构体使用 int32_t,补充 #include <cstdint>,使头文件可独立编译 ## 关联的Issue 关联Issue #5405 ## 测试 - [x] ophost UT:bash build.sh --ophost -u --ops=npu_clear_float_status --soc=ascend950,运行 nn_op_host_ut --gtest_filter='*NPUClearFloatStatus*',tiling/infershape 共 2 个用例全部 PASSED - [x] geir 示例:bash build.sh --run_example npu_clear_float_status graph --soc=ascend950,FP32_fixed_8_S 与 FP32_fixed_8_D 两个用例 Build/RunGraph/Output 均 OK,2/2 passed - [x] opkernel:bash build.sh --opkernel --ops=npu_clear_float_status --soc=ascend950,Build binary SUCCESS - [x] 头文件独立编译:g++ -std=c++17 -fsyntax-only npu_clear_float_status_tiling_data.h 通过 - 测试环境:Ascend950PR + cann-9.2.0 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9604 | 1 个月前 | |
fix: add null check for some pointer variables before dereference Co-authored-by: mym37<maoyuming317@gmail.com> # message auto-generated for no-merge-commit merge: !9606 merge cleancode into master fix: add null check for some pointer variables before dereference Created-by: mym37 Commit-by: mym37 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 采取的方法:主要针对ops/ops-nn/conv/common/op_host/op_tiling/convbp_tiling_debug_util.h该文件中对于context->GetInputShape(index)、context->GetOutputShape(index)、attrs和context->GetInputShape(index)这四个指针变量添加了检查是否为NULL的操作。 改动原因:为了防止这四个指针变量是空的情况出现而报错,提前检查进行空指针防护。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:空指针防护 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9606 | 1 个月前 | |
FusedAdam算子950实现 Co-authored-by: Tower19<liudingming3@huawei.com> # message auto-generated for no-merge-commit merge: !8934 merge master into master FusedAdam算子950实现 Created-by: Tower19 Commit-by: Tower19 Merged-by: cann-robot Description: ## 描述 完成FusedAdam算子kernel实现 ## 关联的Issue 待补充 ## 测试 待补充 ## 文档更新 更新了相关readme文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!8934 | 1 个月前 | |
modify examples/fast_kernel_launch_example/README.md Co-authored-by: yolic<chenyuning1@huawei.com> # message auto-generated for no-merge-commit merge: !9440 merge 0828_torch_readme into master modify examples/fast_kernel_launch_example/README.md Created-by: yolic Commit-by: yolic Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改 examples/fast_kernel_launch_example/README.md,新增soc说明 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5302](https://gitcode.com/cann/ops-nn/issues/5302) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了 examples/fast_kernel_launch_example/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9440 | 1 个月前 | |
【社区任务】huber_loss 前向算子补齐 reduction(none/mean/sum)支持 Co-authored-by: gcw_5x5Ew5Ms<yangzhengzekn0w@gmail.com> # message auto-generated for no-merge-commit merge: !9622 merge feature/huber_loss-reduction-support into master 【社区任务】huber_loss 前向算子补齐 reduction(none/mean/sum)支持 Created-by: gcw_5x5Ew5Ms Commit-by: gcw_5x5Ew5Ms Merged-by: cann-robot Description: 关联 issue:#5415 ## 改动内容 experimental/loss/huber_loss 原地升级,对齐 PyTorch aten::huber_loss 前向语义: 1. **新增 reduction 属性**:0=none / 1=mean(默认)/ 2=sum;mean/sum 输出 0 维标量。各核局部和写 workspace 用户区,SyncAll() 硬同步后 core0 汇总,mean 再除 totalDataNum。 2. **IR 参数名**:predictions / targets / loss 改为 input / target / output。 3. **非连续张量**:op_def 全部 AutoContiguous(),tiling 用 GetStorageShape()。 4. **dtype**:FLOAT / FLOAT16 / BFLOAT16,ND,任意维度;半精度在 Kernel 内升 FLOAT 计算,末端一次舍入回输出 dtype。 5. **边界语义**:delta > 0 校验(NaN 同拒);空张量 mean 得 NaN、sum 得 0;Inf/NaN 按 IEEE 传播。 新增两个文件:op_host/huber_loss_tiling_calc.h(tile 求解、核切分、workspace 估算抽为无框架依赖的纯函数)、op_kernel/huber_loss_tiling_key.h(tiling key 区分 none/reduce 两种调度,host 侧经 GET_TPL_TILING_KEY 发布)。 ## 接口变更(不兼容,请评审关注) 算子类型名保持 HuberLoss,但 IR 参数名变更且新增 reduction 属性;属性槽位序为 reduction=0、delta=1,host 与 kernel 均按位读取。 ## 验证(Atlas A2 + CANN 9.0.0,ascend910b) - build.sh -u --ophost --ops=huber_loss --experimental:InferShape / InferDataType / Tiling UT **32/32 PASSED**(含动态维度、空张量、shape/dtype/reduction/delta 非法输入、UB 不足、多核切分元素守恒) - build.sh -u --opkernel --ops=huber_loss --experimental:Kernel UT **3/3 PASSED**(两分支手算对拍、非默认 delta、非对齐尾段) - pre-commit 门禁(clang-format / codespell / OAT)全部通过 See merge request: cann/ops-nn!9622 | 1 个月前 | |
fix(foreach_mul_scalar_list): 修复 int64 标量输入时 foreach_mul_scalar_list 精度问题 Co-authored-by: yifangao<gaoyifan20@huawei.com> # message auto-generated for no-merge-commit merge: !9755 merge fix-int64 into master fix(foreach_mul_scalar_list): 修复 int64 标量输入时 foreach_mul_scalar_list 精度问题 Created-by: yifangao Commit-by: yifangao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复ForeachMulScalarList输入scalar类型为int64时错误转换导致的精度问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5509 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 修复后issue中必现失败用例精度通过,且全量自验用例精度通过。 冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260902_175402885 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9755 | 1 个月前 | |
【日志质量】修复EmbeddingHashTableImport算子日志问题(校验失败缺实际值/期望值2条) Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !9591 merge fix/eht-import-log-issues into master 【日志质量】修复EmbeddingHashTableImport算子日志问题(校验失败缺实际值/期望值2条) Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 修改内容 修复 EmbeddingHashTableImport 算子日志质量问题: 1. arch35/embedding_hash_table_import_tiling_arch35.cpp:UB 大小校验失败日志补充当前 ubSize 与 REGBASE_CCEC_CACHE_SIZE 阈值及 bytes 单位 2. embedding_hash_table_import_infershape.cpp:输入数量校验失败日志补充期望输入个数("expected InputNum is %ld, but got %ld") ## 自测 仅修改日志文案,不涉及功能逻辑变更 关联issue: #5396 See merge request: cann/ops-nn!9591 | 1 个月前 | |
优化gather_elements算子性能 gather_elements算子tik转ascendc实现 gather_elements算子tik转ascendc实现 gather_elements算子tik转ascendc实现 gather_elements算子tik转ascendc实现 gather_elements算子tik转ascendc实现 gather_elements算子tik转ascendc实现 gather_elements算子tik转ascendc实现 | 1 个月前 | |
[CANNBot] SigmoidFocalLossGrad 算子支持ascend950 AscendC Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !9433 merge SigmoidFocalLossGrad into master [CANNBot] SigmoidFocalLossGrad 算子支持ascend950 AscendC Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 将 SigmoidFocalLossGrad 迁移到 ops-nn/loss/sigmoid_focal_loss_grad,补齐 Ascend 950 的 OpDef、GEIR 图推导、Tiling 与 AscendC Kernel 实现。 本算子在 canndev 和 ops-nn 中均没有 ACLNN 接口契约,因此本变更不新增 ACLNN API、ACLNN 实现、ACLNN 文档或 ACLNN 用例。构建侧使用 ACLNNTYPE aclnn_exclude 明确禁止生成 ACLNN,原 ACLNN 测试场景已转换为 Kernel 直调或 GEIR 用例。 主要变更: - 新增 Ascend 950 OpDef、图原型、InferShape/InferDataType、Tiling 和 Kernel。 - 支持 pred/dout/weight 的 FLOAT16/FLOAT 组合、可选 weight,以及 mean/sum/none reduction。 - Golden 按 LongTailInfo/Sinh/golden文件/sinh.py 的 TestSpec 结构改造,仅注册 Kernel/GEIR 共用的 raw op;Torch 小算子组合注册为 third_party,精度规范为 L0 cross_check,计算顺序严格复用用户指定 sigmoid_focal_loss_grad_golden.py。 - 新增 Kernel 与 GEIR 正向/反向测试用例、README、算子列表和共性问题排查报告。 共性准入当前为 PARTIAL:已确认 canndev/目标仓原型与 InferShape 重复、未知 Rank/9D/Cast E2E/性能证据缺失,以及 alpha/gamma NaN/Inf 的 6 个反向用例未按预期拦截。详情见 loss/sigmoid_focal_loss_grad/COMMON_ISSUE_SCAN.md,本 PR 不将功能精度通过表述为完整转测准入通过。 ## 关联的Issue 关联 Issue #5283:https://gitcode.com/cann/ops-nn/issues/5283 ## 测试 - 构建:Ascend 950 operator package 构建成功;最终包 SHA256 62a5f24f23ad2370179e4f07b5d14dd8098b8c999ecbe9d2b9f43091d97d602c。 - Golden 源一致性:指定 LongTailInfo 源文件 SHA256 c10e2a95a87e50702f73091e3f6c57d9919496975c839e6fb978907c35faf35b;TestSpec 适配器与 canonical Golden 108/108 逐 bit 一致,Torch third_party 本地计算链 108/108 逐 bit 一致,最大绝对差均为 0。 - Kernel L0 三方:启动本机 xpu-server 的 CPU Torch provider 后,TTK 真实 cross_check 36/36 精度 PASS、36/36 provider PASS、36/36 memory OOB PASS。 - Kernel 本地 NPU↔Golden 回归(显式 stat_rel_err 诊断覆盖):544/544 精度 PASS,544/544 memory OOB PASS。 - Kernel target=2 数值语义:1/1 PASS。 - GEIR 本地 NPU↔Golden:静态 Shape 3/3 PASS,未知维动态 Shape 2/2 PASS。 - GEIR 反向:14 例中 8 例有效拦截;alpha/gamma NaN/Inf 6 例未拦截,已在共性报告中记录为确认问题。 - 提交门禁:trailing whitespace、EOF、large files、merge conflict、private key、clang-format、ruff、codespell、OAT 全部通过。 ## 文档更新 - 新增 loss/sigmoid_focal_loss_grad/README.md。 - 更新 docs/zh/op_list.md。 - 新增 loss/sigmoid_focal_loss_grad/COMMON_ISSUE_SCAN.md。 - 未新增 ACLNN 接口文档或 ACLNN 描述。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9433 | 1 个月前 | |
隔离fused_linear_online_max_sum不支持A5(ascend950)的example用例到arch22目录 Co-authored-by: ztj0209<zhangtianjiao6@huawei.com> # message auto-generated for no-merge-commit merge: !9525 merge fix_a5_isolate_fused_linear_online_max_sum into master 隔离fused_linear_online_max_sum不支持A5(ascend950)的example用例到arch22目录 Created-by: ztj0209 Commit-by: ztj0209 Merged-by: cann-robot Description: ## 描述 fused_linear_online_max_sum 算子中 aclnnFusedLinearOnlineMaxSum 接口不支持 ascend950,其 example 用例 test_aclnn_fused_linear_online_max_sum.cpp 原先位于 examples 顶层目录,A5 环境(--soc=ascend950)执行时因接口不支持而报错。 参照 arch 用例隔离机制(参考 !9152),将该用例移动到 examples/arch22/ 下:A5 环境不再扫描执行,910B 环境通过 arch22 目录正常运行。涉及 README 的用例路径链接已同步更新。 ## 关联的Issue [Issue #5205](https://gitcode.com/cann/ops-nn/issues/5205) ## 测试 - 本机 910B3 实测 bash build.sh --run_example fused_linear_online_max_sum eager --soc=ascend910b,test_aclnn_fused_linear_online_max_sum.cpp 经 arch22 目录正常运行(success) - 模拟 build.sh 扫描逻辑验证:--soc=ascend950 下该失败用例不再被扫描 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9525 | 1 个月前 | |
fix(bn_inference): 修复 CANN 9.0.0 编译失败 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9813 merge fix/bn-inference-cann900-compile into master fix(bn_inference): 修复 CANN 9.0.0 编译失败 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修复 BNInference 在 CANN 9.0.0 Ascend 950 动态 kernel 编译阶段找不到 platform_util.h 的问题。将 kernel 公共头文件引用调整为算子包公共源码目录使用的相对路径,不改变算子接口、REG_OP、tiling 或计算语义。 ## 关联的Issue #5534 ## 测试 - CANN 9.0.0 独立环境:bash build.sh --pkg --ops=bn_inference --soc=ascend950 --cann_3rd_lib_path=<third_party> --ccache=off -j8 - 修改前:动态 kernel PRECOMPILE 阶段稳定复现头文件缺失。 - 修改后:55 个 BNInference 动态 kernel 全部编译完成,整包生成成功。 - 本地定向 CI:仅检查 BNInference 影响范围;Ascend 950 package/opkernel 与 Ascend 910B package/opkernel 均通过。 - 提交钩子:通过。 - 远程 CI:已通过 compile 评论触发。 ## 文档更新 无文档变更。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9813 | 1 个月前 | |
FusedAdam算子950实现 Co-authored-by: Tower19<liudingming3@huawei.com> # message auto-generated for no-merge-commit merge: !8934 merge master into master FusedAdam算子950实现 Created-by: Tower19 Commit-by: Tower19 Merged-by: cann-robot Description: ## 描述 完成FusedAdam算子kernel实现 ## 关联的Issue 待补充 ## 测试 待补充 ## 文档更新 更新了相关readme文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!8934 | 1 个月前 | |
[CANNBot]修复max_pool3d_grad_with_argmax算子example在ascend950上执行失败 Co-authored-by: qq_52056150<24171214023@stu.xidian.edu.cn> # message auto-generated for no-merge-commit merge: !9812 merge fix_maxpool3dgrad_example_arch22 into master [CANNBot]修复max_pool3d_grad_with_argmax算子example在ascend950上执行失败 Created-by: qq_52056150 Commit-by: qq_52056150 Merged-by: cann-robot Description: ## 描述 修复 bash build.sh --run_example max_pool3d_grad_with_argmax eager --soc=ascend950 执行失败问题。 **根因**:examples/test_aclnn_max_pool2d_with_mask_backward_exec2d.cpp 调用的 aclnnMaxPool2dWithMaskBackward 为自定义mask语义接口,仅910/910B系列支持;在Ascend950(Regbase)上 op_api 入口(op_api/aclnn_max_pool2d_with_indices_backward.cpp 的 aclnnMaxPool2dWithMaskBackwardGetWorkspaceSize)直接返回 ACLNN_ERR_PARAM_INVALID(161002) 并提示改用 aclnnMaxPool2dWithIndicesBackward(docs/aclnnMaxPool2dWithMaskBackward.md 声明 Ascend 950PR/950DT 不支持)。 **修复**:按仓库芯片专属示例惯例(同 arch35/arch20),将该示例移入 examples/arch22/,--soc=ascend950 时不再收集;950 路径已由同目录 test_aclnn_max_pool2d_with_indices_backward.cpp 覆盖(该接口在950上支持)。改动为纯文件移动(0行变更)。 ## 关联的issue (https://gitcode.com/cann/ops-nn/issues/5095) ## 测试 - [x] ascend950 实卡验证:bash build.sh --run_example max_pool3d_grad_with_argmax eager --soc=ascend950 EXIT=0,max_pool3d_with_argmax_backward、max_pool2d_with_indices_backward 两个示例执行成功且结果正确 - [x] 移动后文件按 build.sh 相同编译参数编译通过(910b 路径不受影响) ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述 ## AI/Agent 生成声明 代码来源: - [ ] 纯人工手写 - [x] AI 辅助编写 - [ ] AI 完全生成 人工审查:已完成 测试验证:已通过 合规检查:已完成 See merge request: cann/ops-nn!9812 | 1 个月前 | |
README Rectification Co-authored-by: TH<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !9746 merge readmeFix into master README Rectification Created-by: TH_HW Commit-by: TH Merged-by: cann-robot Description: ## 描述 整改 GroupedDynamicMxQuant 算子(含 aclnnGroupedDynamicMxQuant 与 aclnnGroupedDynamicMxQuantV2 接口)的资料与校验逻辑:统一文档命名、修正 dstTypeMax 取值区间描述、补充 FP4 输出时尾轴为偶数的参数约束,并新增对应的 V2 接口单测与 ST 用例回归。 主要改动如下: 1. **资料整改**:README.md 与 aclnnGroupedDynamicMxQuant / aclnnGroupedDynamicMxQuantV2 接口文档中,统一将 groupedIndex 命名为 groupIndex;修正公式描述中 mxscale 与 mxscale_pre 的混用及不可见字符;dstTypeMax 取值由 1.75-3.5、6.0-12.0 修正为区间表达 [1.75, 3.5)、[6.0, 12.0](FLOAT4_E1M2 为左闭右开,3.5 不在支持范围内);删除 aclnnGroupedDynamicMxQuant.md 中与实际校验不符的错误场景描述行(approximate、quantMode);V2 文档补充"y 为 FLOAT4_E2M1/FLOAT4_E1M2 时不支持非连续 Tensor"的异常场景;调用示例代码中的变量命名与 fp4/fp8 注释一并修正。 2. **op_api 参数校验修复**:aclnn_grouped_dynamic_mx_quant_v2.cpp 的 CheckShape 新增约束校验——当输出 y 的数据类型为 FLOAT4_E2M1/FLOAT4_E1M2 且 x 尾轴已知时,x 尾轴(第 1 维)长度必须为偶数;FP8 输出与动态尾轴(-1)不受此限制(按蕴含条件"非 FP4,或尾轴未知,或尾轴为偶数"校验),避免将文档仍声明支持的 FP8 合法调用误判为参数非法。 3. **tiling 属性校验修正**:grouped_dynamic_mx_quant_tiling_arch35.cpp 中 dst_type_max 对 FLOAT4_E1M2 的合法区间修正为 [1.75, 3.5),取值 3.5 时不再放行,与资料描述保持一致。 4. **单测新增**:新增 tests/ut/op_api/test_aclnn_grouped_dynamic_mx_quant_v2.cpp,共 14 个用例覆盖 FP8(E4M3FN/E5M2)与 FP4(E2M1/E1M2)输出在偶数、奇数、动态尾轴下的成功与失败(ACLNN_ERR_PARAM_INVALID)场景,其中 FP8 用例为本次校验修复的回归用例。 5. **ST 用例更新**:ttk_kernel_grouped_dynamic_mx_quant_st.csv 用例更新,覆盖 fp8/fp4 各输出类型与 scale_alg、dst_type_max 属性的组合场景。 ## 关联的Issue 无。 ## 测试 - 新增 V2 接口 op_api UT(14 个用例):FP8 输出(含奇数、动态尾轴)调用返回成功,FP4 输出偶数/动态尾轴返回成功,FP4 输出奇数尾轴返回 ACLNN_ERR_PARAM_INVALID,全部通过。 - ST 用例在 ascend950 上回归通过,覆盖 FP8/FP4 输出与 scale_alg、dst_type_max 属性组合。 ## 文档更新 更新了以下文档: - quant/grouped_dynamic_mx_quant/README.md - quant/grouped_dynamic_mx_quant/docs/aclnnGroupedDynamicMxQuant.md - quant/grouped_dynamic_mx_quant/docs/aclnnGroupedDynamicMxQuantV2.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 新特性 - [x] Bug修复 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9746 | 1 个月前 | |
Gru GruGrad添加st用例 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !9779 merge gru_st_0901 into master Gru GruGrad添加st用例 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 增加Gru、GruGrad算子的st用例和标杆文件 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5524 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ST验证已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:st用例补充 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9779 | 1 个月前 | |
fix(common): 迁移 AdaCast onnx 插件解耦 protobuf,并使 common 集中目录 onnx 变更可被 CI 触发执行 framework UT Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !9618 merge fix-onnx-0831 into master fix(common): 迁移 AdaCast onnx 插件解耦 protobuf,并使 common 集中目录 onnx 变更可被 CI 触发执行 framework UT Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 本 MR 含两部分: 1. 将 common/src/framework/ada_cast_onnx_plugin.cpp 的 ParseParamsFn 迁移到 ParseParamsByOperatorFn,从 op_src 的 attribute JSON 解析 pixel(INT),去掉 protobuf 依赖(onnx_common.h → plugin_util.h 等 proto-free 头),并补 common/tests/ut/framework/test_ada_cast_onnx_plugin.cpp 单测。 2. 补齐 ops-nn "framework UT 按算子 + op_host "中 common 集中 目录这一支的失效:改 common/.../framework 下 onnx 文件时 CI 静默跳过 (parse_changed_files.py 无 framework matcher、tests/ut/op_host 的 if(NOT ASCEND_OP_NAME) 在 --ops 下把 common framework UT 挡死)。 ## 实现说明 - scripts/util/parse_changed_files.py(改动1) 基类 match() 加 framework 短路 + OpHostUt._ut_match 正则提取算子名 ((?:^|/) 兼容相对路径),覆盖四种 onnx framework 路径:common 插件源、 common 插件 UT、算子级 UT、算子级插件源。非 framework 文件走原逻辑不变; 仅 op_host_ut 命中。顶部加 import re。 - tests/ut/op_host/CMakeLists.txt(改动2) 门槛 if(NOT ASCEND_OP_NAME) → 全量接入;--ops 仅命中 common 框架插件算子 才接入。结构上规避 ops-cv !1435 那种"非框架算子 PR 触发 framework cases_obj 零源"回归。framework static_lib 链接处本就有 $<TARGET_EXISTS:> 守卫, 非框架算子构建时链接为空,不影响他人。 - cmake/ut.cmake(改动3/5) 改动3:framework 分支按 test_<op>_onnx_plugin.cpp 文件名逐文件过滤。 改动5:add_opbase_ut_common(tiling/infershape/framework 三模块共享) 加 empty.cpp 兜底源——selective 下三个 opbase obj 目标都不存在时 add_library 无源会在 generate 阶段报错。 - scripts/util/dependency_parser.py(改动4) find_all_dependency 对不在依赖图的 framework-only 算子(ada_cast/hardmax/ size 无算子目录)由 raise RuntimeError 改为 warn+计入算子本身(无子依赖)。 否则 parse 与 build.sh --ops 依赖解析会崩、且 parse 输出 op 字段为空。 真实算子(在 all_ops)不受影响。 ## 关联的Issue Issue [#5115](https://gitcode.com/cann/ops-nn/issues/5115) ## 测试 容器(CANN 9.0.0,aarch64)端到端 CI -f 验证: - ada_cast(common 插件源)CI -f:Trigger Ut op_host_ut:ada_cast → OnnxAdaCastPluginTest 2 用例 PASSED,rc=0。 - elu(算子级插件源 activation/elu/framework/elu_onnx_plugin.cpp,扩展正则 新增覆盖)CI -f:Trigger Ut op_host_ut:elu → OnnxEluPluginTest 2 用例 PASSED,rc=0。 - relu(非框架算子、不涉及 onnx,回归)CI -f:门槛不命中 common framework, 无 No SOURCES 报错,7 用例 PASSED,rc=0(即不涉及 onnx 的 PR 不受影响)。 - ada_cast 迁移本身:protobuf-free 编译通过,硬标准 onnx_common.h/ge::onnx::/Message 零残留。 本地 git diff --check 通过;py_compile 通过。 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9618 | 1 个月前 | |
fix(common): 迁移 AdaCast onnx 插件解耦 protobuf,并使 common 集中目录 onnx 变更可被 CI 触发执行 framework UT Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !9618 merge fix-onnx-0831 into master fix(common): 迁移 AdaCast onnx 插件解耦 protobuf,并使 common 集中目录 onnx 变更可被 CI 触发执行 framework UT Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 本 MR 含两部分: 1. 将 common/src/framework/ada_cast_onnx_plugin.cpp 的 ParseParamsFn 迁移到 ParseParamsByOperatorFn,从 op_src 的 attribute JSON 解析 pixel(INT),去掉 protobuf 依赖(onnx_common.h → plugin_util.h 等 proto-free 头),并补 common/tests/ut/framework/test_ada_cast_onnx_plugin.cpp 单测。 2. 补齐 ops-nn "framework UT 按算子 + op_host "中 common 集中 目录这一支的失效:改 common/.../framework 下 onnx 文件时 CI 静默跳过 (parse_changed_files.py 无 framework matcher、tests/ut/op_host 的 if(NOT ASCEND_OP_NAME) 在 --ops 下把 common framework UT 挡死)。 ## 实现说明 - scripts/util/parse_changed_files.py(改动1) 基类 match() 加 framework 短路 + OpHostUt._ut_match 正则提取算子名 ((?:^|/) 兼容相对路径),覆盖四种 onnx framework 路径:common 插件源、 common 插件 UT、算子级 UT、算子级插件源。非 framework 文件走原逻辑不变; 仅 op_host_ut 命中。顶部加 import re。 - tests/ut/op_host/CMakeLists.txt(改动2) 门槛 if(NOT ASCEND_OP_NAME) → 全量接入;--ops 仅命中 common 框架插件算子 才接入。结构上规避 ops-cv !1435 那种"非框架算子 PR 触发 framework cases_obj 零源"回归。framework static_lib 链接处本就有 $<TARGET_EXISTS:> 守卫, 非框架算子构建时链接为空,不影响他人。 - cmake/ut.cmake(改动3/5) 改动3:framework 分支按 test_<op>_onnx_plugin.cpp 文件名逐文件过滤。 改动5:add_opbase_ut_common(tiling/infershape/framework 三模块共享) 加 empty.cpp 兜底源——selective 下三个 opbase obj 目标都不存在时 add_library 无源会在 generate 阶段报错。 - scripts/util/dependency_parser.py(改动4) find_all_dependency 对不在依赖图的 framework-only 算子(ada_cast/hardmax/ size 无算子目录)由 raise RuntimeError 改为 warn+计入算子本身(无子依赖)。 否则 parse 与 build.sh --ops 依赖解析会崩、且 parse 输出 op 字段为空。 真实算子(在 all_ops)不受影响。 ## 关联的Issue Issue [#5115](https://gitcode.com/cann/ops-nn/issues/5115) ## 测试 容器(CANN 9.0.0,aarch64)端到端 CI -f 验证: - ada_cast(common 插件源)CI -f:Trigger Ut op_host_ut:ada_cast → OnnxAdaCastPluginTest 2 用例 PASSED,rc=0。 - elu(算子级插件源 activation/elu/framework/elu_onnx_plugin.cpp,扩展正则 新增覆盖)CI -f:Trigger Ut op_host_ut:elu → OnnxEluPluginTest 2 用例 PASSED,rc=0。 - relu(非框架算子、不涉及 onnx,回归)CI -f:门槛不命中 common framework, 无 No SOURCES 报错,7 用例 PASSED,rc=0(即不涉及 onnx 的 PR 不受影响)。 - ada_cast 迁移本身:protobuf-free 编译通过,硬标准 onnx_common.h/ge::onnx::/Message 零残留。 本地 git diff --check 通过;py_compile 通过。 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9618 | 1 个月前 | |
add_rms_norm_dynamic_mx_quant算子新增可选输入x3及torch extension适配 Co-authored-by: wangqi_ai<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !8520 merge feat/add_rms_norm_dynamic_mx_quant_x0 into master add_rms_norm_dynamic_mx_quant算子新增可选输入x3及torch extension适配 Created-by: wangqi_ai Commit-by: wangqi_ai Merged-by: cann-robot Description: ## 描述 为 add_rms_norm_dynamic_mx_quant 算子新增可选输入 x3,支持 x = (x3+x1)+x2 三路残差加法融合。x3 位于 beta 之后(输入索引 4),dtype 为 {FLOAT16, BFLOAT16}。当 x3 缺省时算子行为与 V1 完全一致;当 x3 传入时,计算公式变为 x = (x3+x1)+x2,加法顺序匹配残差加法语义。 同时新增 aclnnAddRmsNormDynamicMxQuantV2 两段式 API,将 FP8/FP4 分离 kernel 统一为模板类,修复 SPLIT_R pipeline race,并补充全量泛化测试。 torch_extension 层接口从算子私有目录迁移至 nn 仓公共目录并更名为 add_rms_norm_dynamic_quant(去掉 mx,为后续多量化类型统一接口预留);ST 用例 CSV 按 TTK 规范迁入 tests/st/arch35/。 ### 改动原因 大模型推理场景中,RmsNorm 前的 Add 常需融合三路输入(残差 x3 + x1 + x2)。原算子仅支持两路(x1+x2),上层需额外调用一次 torch.add 再传入算子,引入一次额外的 GM 搬入搬出。本 MR 将三路加法融合进 kernel 内部,在 fp32 域完成累加,减少一次 kernel launch 和数据搬运。 ### 改动方法 **1. proto/def — 新增 x3 可选输入** - add_rms_norm_dynamic_mx_quant_proto.h: 在 beta 之后新增 .OPTIONAL_INPUT(x3, ...),dtype {DT_FLOAT16, DT_BF16} - add_rms_norm_dynamic_mx_quant_def.cpp: x3 声明为 OPTIONAL,tilingKey 增加 HAS_X3 维度 - add_rms_norm_dynamic_mx_quant_binary.json: 二进制配置新增 x3 输入绑定 **2. op_api — V2 两段式 API** - 新增 aclnnAddRmsNormDynamicMxQuantV2GetWorkspaceSize / aclnnAddRmsNormDynamicMxQuantV2 - 抽取 GetWorkspaceSizeImpl 共享逻辑:V1 传 x3=nullptr,V2 透传 x3 - CheckNotNull 不校验 x3(nullptr 合法,等价 V1);tiling 层 CheckX3Input() 校验 x3 存在时 shape/dtype 必须与 x1 一致 **3. tiling — HAS_X3 编译期模板参数 + GE const-compile fallback** - HAS_X3 作为编译期模板参数(非 tiling data 运行时字段),编译器消除所有 x3 运行时分支 - HAS_X3=false 变体保留用于二进制向后兼容(V1 API 复用原二进制) - tilingKey 从 5 → 10 variant(COMPUTE_MODE × Y_DATA_TYPE × HAS_X3) - 抽取 PostTilingImpl + GetTilingKeyCommon 到基类(DRY) - tiling_reduce_empty_arch35.cpp: 补充 perCorePerLoopElements < ubAlignElems 的 FloorAlign 归零 fallback 处理 - **GE const-compile fallback**(移植自 add_layer_norm_quant 模式):CompileInfo 新增 4 字段 isRegbase/vRegSize/ubBlockSize/sysWorkspaceSize,TilingPrepare 预存;CanUseRegbase/GetPlatformInfo/GetWorkspaceSize 在 platformInfo==null(GE 编译期)时从 CompileInfo 读取,解决 PreSmoke ATK const-compile 失败 **4. kernel — 统一 FP8/FP4 + 修复 SPLIT_R race** - 统一 kernel:将 4 个分离类合并为 2 个统一类,通过 IsFP4Type<T_Y> type trait 编译期推导 FP8/FP4 分支,if constexpr 消除运行时开销。净减约 916 行重复代码 - 删除死代码:移除未调用的 MxQuantDeletePadData - 修复 SPLIT_R MTE2→V pipeline race:Phase1 写 x_out 到 GM(MTE3),Phase2 读回(MTE2)。替换粗粒度 PipeBarrier 为精确的 MTE3_MTE2 + MTE2_V event flag - 修复加法顺序:(x3+x1)+x2,匹配残差加法语义 **5. torch_extension — 迁移公共目录 + 接口更名** - 代码从算子私有目录 norm/add_rms_norm_dynamic_mx_quant/torch_extension/ 迁移至 nn 仓公共目录 torch_extension/cann_ops_nn/ops/norm/add_rms_norm_dynamic_quant/,便于后续多个量化场景算子共用该 torch 接口 - torch API 更名为 add_rms_norm_dynamic_quant(去掉 mx,为后续扩展其他量化类型的统一接口预留;底层 aclnn API 名 aclnnAddRmsNormDynamicMxQuantV2 与 GE 算子名 AddRmsNormDynamicMxQuant 保持不变) - csrc/add_rms_norm_dynamic_quant.cpp: C++ binding(始终走 V2 API,x3 为 None 时传 nullptr 等价 V1) - add_rms_norm_dynamic_quant.py: Python wrapper(schema/meta/PrivateUse1,meta 校验 FP4 scale_alg==0 与 C++ 一致) - graph_convert_add_rms_norm_dynamic_quant.py: torchair dynamo GE 图转换,含 FP4 打包后处理(Reshape→Bitcast→Reshape 链将 GE 层未打包 FP4 输出转为 torch 层 uint8 打包) **6. ST 用例规范化(TTK 目录与命名约定)** - 用例 CSV 从 tests/assets/ 迁移至 tests/st/arch35/,按 TTK 规范命名:ttk_kernel/ttk_aclnn/ttk_e2e/ttk_geir_add_rms_norm_dynamic_mx_quant_st.csv,CI(ops_st_test.sh)可自动发现执行 - golden.py 适配新版 TTK:删除手写 FrameworkApiInfoKeeper.register() 参数注册(签名改由算子自带 schema 自动解析),__spec__ 注册 4 段名 torch.ops.cann_ops_nn.add_rms_norm_dynamic_quant - golden 新增 pre_compare 钩子:将 NPU 侧 uint8 打包 FP4 输出解包为 float4,使比对走 requant 判据 - 修复 golden bf16 输入静默提升为 fp32 的问题(位保留 view 转换),消除 SPLIT_R 边界场景 mxscale 1-bit 级偏差 **7. 文档** - 新增 aclnnAddRmsNormDynamicMxQuantV2.md,格式对齐 V1 文档 - README 更新 torch_extension 调用说明(包名 cann_ops_nn、接口名、新代码路径) ## 测试 ### 精度验证(TTK 框架,Ascend950PR,上机实测) - Kernel 模式:105/105 PASS(10 tilingKey variant × 边界场景,86 条含 x3) - ACLNN 模式:105/105 PASS(V1 + V2 API × 全 dstType/scaleAlg/roundMode 组合,105 条含 x3/V2) - E2E 模式(torch extension 标准包 cann_ops_nn,接口名 add_rms_norm_dynamic_quant):41/41 PASS(V1/V2 × FP8_E4M3/E5M2/FP4_E2M1/E1M2 × SPLIT_R 边界/bfloat16/beta=None/1D-4D,4 输出 y/x/mxscale/rstd 全比对) - GEIR 模式:18 条用例 - golden.py 合并 e2e spec(__spec__ + torch<->numpy 适配),--plugin tests 一条参数通吃 kernel/aclnn/e2e 三模式 ### torch_extension 套件(pytest,上机实测) - 104 passed, 0 skipped:全 tilingKey 变体、图模式(torchair + torch.compile)、FP4/FP8、fp16/bf16、SPLIT_R 性能基准 - FP4 性能用例改为偶数 R 参数化收集(替代运行时 skip,报告无跳过项) ### 端到端上机验证(Ascend950PR + CANN 9.2.0) - CMake 裁剪单算子 + build.sh --pkg --soc=ascend950 --vendor_name=custom_nn 整包编译,run 包安装后 torch.ops.cann_ops_nn.add_rms_norm_dynamic_quant JIT 编译执行通过 - 冒烟数值验证:rstd 误差 5.96e-08、x_out 达 fp16 精度上限、FP4 打包输出 shape/dtype 正确 ### UT(CMake 编译) - test_aclnn_add_rms_norm_dynamic_mx_quant.cpp: 17 个 TEST_F - test_add_rms_norm_dynamic_mx_quant_tiling.cpp: 33 个 TEST_F(新增 tiling_prepare_stores_const_compile_fields 验证 TilingPrepare 预存 GE const-compile fallback 字段;同步 UT 镜像 CompileInfo 至 6 字段,修复 OOB 越界读;更正 7 个 tiling-key 期望值,**全量 45 UT PASS**) - test_add_rms_norm_dynamic_mx_quant_apt.cpp: 5 个 TEST_F ### 代码质量 - golden.py monkey-patch 加版本锁 assert(上游 dynamic_mx_quant golden API 变更时 fail-fast) - pre-commit 全部通过(clang-format / ruff-check / ruff-format / codespell) ## 文档更新 - 新增 docs/aclnnAddRmsNormDynamicMxQuantV2.md - 更新 docs/zh/menu_aclnn_api.md、docs/zh/op_api_list.md - 更新 README.md ## 关联的Issue - #4693(需求:新增可选输入 x3) - #4939(需求:torch extension 适配) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8520 | 1 个月前 | |
modified md files (aclnnMultiScaleDeformableAttentionGrad and aclnnMultiScaleDeformableAttnFunction) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !9791 merge master into master modified md files (aclnnMultiScaleDeformableAttentionGrad and aclnnMultiScaleDeformableAttnFunction) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 modified md files (aclnnMultiScaleDeformableAttentionGrad and aclnnMultiScaleDeformableAttnFunction) ## 关联的Issue [#5527](https://gitcode.com/cann/ops-nn/issues/5527) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 vfusion/multi_scale_deformable_attention_grad/README.md vfusion/multi_scale_deformable_attention_grad/docs/aclnnMultiScaleDeformableAttentionGrad.md vfusion/multi_scale_deformable_attn_function/README.md vfusion/multi_scale_deformable_attn_function/docs/aclnnMultiScaleDeformableAttnFunction.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9791 | 1 个月前 | |
修改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 个月前 | |
动态库解耦 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 个月前 | |
aclnnQuantMatmulWeightNz 补充WeightQuantPreProcess接口aclnn资料 Co-authored-by: renzetao<renzetao2@huawei.com> # message auto-generated for no-merge-commit merge: !8866 merge data_revise into master aclnnQuantMatmulWeightNz 补充WeightQuantPreProcess接口aclnn资料 Created-by: renzetao Commit-by: renzetao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> aclnnQuantMatmulWeightNz补充weightQuantPreProcess的调用example ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4898](https://gitcode.com/cann/ops-nn/issues/4898) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> bash build.sh --run_example 测试通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> aclnnQuantMatmulWeightNz.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8866 | 2 个月前 | |
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 个月前 | |
update download ops-test-kit and update case for st Co-authored-by: he_kan<hekan4@huawei.com> # message auto-generated for no-merge-commit merge: !9537 merge ci into master update download ops-test-kit and update case for st Created-by: he_kan Commit-by: he_kan Merged-by: cann-robot Description: ## 描述 1. 更新ops_st_test.sh脚本中下载ops-test-kit的方式,由原有的配置make文件下载,改为直接用git clone下载 2. 针对线上CI模式,不返回失败,在正式上线前不阻塞CI 3. 更新非量化mm类用例,减少执行时间 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> Issue #4426 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9537 | 1 个月前 | |
产品文档中png文件改为英文名 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !8300 merge master into master 产品文档中png文件改为英文名 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 产品文档中的png图片名由中文改为英文 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#4260](https://gitcode.com/cann/ops-nn/issues/4260) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> png和相关的link md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8300 | 2 个月前 | |
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 个月前 | |
cannsim改名为npusim Co-authored-by: liangbinglong<liangbinglong@huawei.com> # message auto-generated for no-merge-commit merge: !8349 merge master into master cannsim改名为npusim Created-by: liangbinglong Commit-by: liangbinglong Merged-by: cann-robot Description: ## 描述 经TSC评审,cannsim工具正式更名为npusim,相关命令行、资料同步刷新,cannsim作为别名兼容一段时间,需要尽快切换 ## 关联的Issue NA ## 测试 使用最新链接版本测试,相关命令行已经全部更名为npusim ## 文档更新 更新doc下面的调优部分文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8349 | 2 个月前 | |
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 个月前 | |
将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9549 merge master into master 将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 主要修改内容: 1. nn仓完成和legacy common 动态库解耦后,卷积和matmul的不同版本 ophost ut 已经不能混合一起跑了。需要版本隔离 2. ascend950的ut全量编译 失败,需要修改 ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/5425](https://gitcode.com/cann/ops-nn/issues/5425) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9549 | 1 个月前 | |
fix matmul_emu_split_weight classify Co-authored-by: zhengyuhao3<zhengyuhao3@huawei.com> # message auto-generated for no-merge-commit merge: !9721 merge fix-mm_split_w-classify into master fix matmul_emu_split_weight classify Created-by: zhengyuhao3 Commit-by: zhengyuhao3 Merged-by: cann-robot Description: ## 描述 参考mat_mul_v3算子,修改matmul_emu_split_weight算子的classify_rule配置,区分arch35的扫描责任田 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 无代码改动,无需测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:classify配置调整 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9721 | 1 个月前 | |
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 个月前 | |
调整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 | 1 个月前 |
ops-nn
🔥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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。