本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
限制检测example仅master主线 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !12094 merge fix into master 限制检测example仅master主线 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 限制检测example仅master主线 ## 关联的Issue [#6759](https://gitcode.com/cann/ops-nn/issues/6759) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12094 | 21 小时前 | |
feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11972 merge feat/hi-f4-quant-ascend960dt into master feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增 hi_f4 量化算子,并同步若干算子的 Ascend960 平台支持(含公共件配套)。 - **新增算子**:rms_norm_hi_f4_quant / add_rms_norm_hi_f4_quant,Ascend960 专属(kernel 与 tiling 位于 arch92 目录),ReciprocalCast 接口适配,aclnn 接口位于算子根 op_api/ 目录(仓规范布局) - **数据类型兼容层**:算子内数据类型引用统一切换 Ops::NN:: 常量(复用 master 先行合入的 op_const_def_nn.h 兼容层,见 !11999),各版本 CANN 均可编译 - **batch_norm / batch_norm_v3**:tiling 核间均衡 + kernel block_split_r 优化 - **add_rms_norm_dynamic_quant_v2**:目标平台注册 + config - **lp_norm_v2**:tiling 平台管理器初始化补充 - **公共件配套**:ascendc_impl_build.py DTYPE_MAP 补 hifloat4 映射 - **工程配置**:ascendc_config 注册 ## 测试 已在 Ascend960 环境完成编译与功能验证;低版本 CANN(metadef 9.2.0)语法验证通过;A5 不受影响。 ## 类型标签 - [x] Feature 关联 Issue: #6687 See merge request: cann/ops-nn!11972 | 20 小时前 | |
feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11972 merge feat/hi-f4-quant-ascend960dt into master feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增 hi_f4 量化算子,并同步若干算子的 Ascend960 平台支持(含公共件配套)。 - **新增算子**:rms_norm_hi_f4_quant / add_rms_norm_hi_f4_quant,Ascend960 专属(kernel 与 tiling 位于 arch92 目录),ReciprocalCast 接口适配,aclnn 接口位于算子根 op_api/ 目录(仓规范布局) - **数据类型兼容层**:算子内数据类型引用统一切换 Ops::NN:: 常量(复用 master 先行合入的 op_const_def_nn.h 兼容层,见 !11999),各版本 CANN 均可编译 - **batch_norm / batch_norm_v3**:tiling 核间均衡 + kernel block_split_r 优化 - **add_rms_norm_dynamic_quant_v2**:目标平台注册 + config - **lp_norm_v2**:tiling 平台管理器初始化补充 - **公共件配套**:ascendc_impl_build.py DTYPE_MAP 补 hifloat4 映射 - **工程配置**:ascendc_config 注册 ## 测试 已在 Ascend960 环境完成编译与功能验证;低版本 CANN(metadef 9.2.0)语法验证通过;A5 不受影响。 ## 类型标签 - [x] Feature 关联 Issue: #6687 See merge request: cann/ops-nn!11972 | 20 小时前 | |
Ascend960新增hifloat4/hifloat4_scale兼容性适配 Co-authored-by: chaoying-zhang<zhangchaoying@huawei.com> # message auto-generated for no-merge-commit merge: !11999 merge hif4 into master Ascend960新增hifloat4/hifloat4_scale兼容性适配 Created-by: chaoying-zhang Commit-by: chaoying-zhang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本 PR 主要为 hif4(HIFLOAT4)相关数据类型提供兼容性支持,方式是新增头文件 common/inc/op_host/op_const_def_nn.h。该文件在 Ops::NN 命名空间内集中声明了一批数据类型常量,并以 static_cast 方式将整型字面量显式转换为 ::NpuArch 与 ge::DataType 类型,从而为算子侧提供统一的常量引用入口。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6744](https://gitcode.com/cann/ops-nn/issues/6744) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> Ascend950/910b/910_93编译成功 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11999 | 1 天前 | |
删除查看源码 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !12004 merge master into master 删除查看源码 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 删除查看源码 ## 关联的Issue 关联Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 无需测试 ## 文档更新 删除文档中的查看源码链接 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12004 | 1 天前 | |
conv/文件夹下AIDD扫描问题修改 Co-authored-by: XianyongWang<aaronhkw@163.com> # message auto-generated for no-merge-commit merge: !12005 merge fix/conv_doc into master conv/文件夹下AIDD扫描问题修改 Created-by: XianyongWang Commit-by: XianyongWang Merged-by: cann-robot Description: ## 描述 aidd问题修复 ## 关联的Issue 关联Issue [#6411](https://gitcode.com/cann/ops-nn/issues/6411) ## 测试 文档更新不涉及测试 ## 文档更新 修改md文档在扫描出来的aidd问题 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12005 | 1 天前 | |
feat(quant_matmul_activation_quant): support SiLU MX quantization | 19 小时前 | |
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 | 3 天前 | |
删除查看源码 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !12004 merge master into master 删除查看源码 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 删除查看源码 ## 关联的Issue 关联Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 无需测试 ## 文档更新 删除文档中的查看源码链接 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12004 | 1 天前 | |
feat: 长尾算子新增ascend350平台支持 Co-authored-by: onanfield<tianshang@huawei.com> # message auto-generated for no-merge-commit merge: !11839 merge ascend350-adapt-batch2 into master feat: 长尾算子新增ascend350平台支持 Created-by: onanfield Commit-by: onanfield Merged-by: cann-robot Description: ## 描述 9个算子新增ascend350平台支持(BNInference/BNInferGrad/Centralization/CosineEmbeddingLoss/DynamicQuantUpdateScatterV2/FakeQuantWithMinMaxArgs/ForeachAcos/ForeachCos/ForeachLerpList) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11839 | 21 小时前 | |
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 | 17 天前 | |
docs(scatter_add): 修正 src 和 out 的非连续支持说明 Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !12088 merge codex/docs-scatter-add-noncontiguous into master docs(scatter_add): 修正 src 和 out 的非连续支持说明 Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 aclnnScatterAddGetWorkspaceSize 的参数表将 src 和 out 的非连续 Tensor 支持标为“×”,与现有实现不一致:src 经 Contiguous 转连续后参与计算,结果经 ViewCopy 回写原始 out。 将这两项支持标记改为“√”,使文档准确反映现有接口行为。本次只修改参数表中的两处标记。 ## 关联的Issue Fixes #6753 https://gitcode.com/cann/ops-nn/issues/6753 ## 测试 - 核对最新主仓 aclnn_scatter.cpp 的 NoTranspose、通用及优化分支,确认输入转连续和输出回写路径。 - 检查参数表,确认 self、index、src、out 均标注支持非连续 Tensor。 - pre-commit run --files index/scatter_add/docs/aclnnScatterAdd.md:通过。基础检查、codespell、OAT 均通过,OAT 实际扫描 1 个文件;无适用文件的 YAML/JSON、C++、Python 检查跳过。 - git diff --check:通过。 - 仅修正文档,本轮未新增设备测试。 ## 文档更新 index/scatter_add/docs/aclnnScatterAdd.md:将 src、out 的“非连续Tensor”列从“×”改为“√”。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12088 | 20 小时前 | |
sigmoid_cross_entropy_with_logits_v2和swiglu_group算子支持Ascend960平台 Co-authored-by: taochangmin<taochangmin@huawei.com> # message auto-generated for no-merge-commit merge: !12041 merge sigmoid_to_blue into master sigmoid_cross_entropy_with_logits_v2和swiglu_group算子支持Ascend960平台 Created-by: taochangmin Commit-by: taochangmin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> sigmoid_cross_entropy_with_logits_v2和swiglu_group算子支持Ascend960平台 1.opdef增加ascend960dt配置 2.config中增加json文件 3.CMakeLists中新增ascend960dt编译选项 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6766 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ascend950和ascend960编译验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12041 | 20 小时前 | |
feat(quant_matmul_activation_quant): support SiLU MX quantization | 19 小时前 | |
feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11972 merge feat/hi-f4-quant-ascend960dt into master feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增 hi_f4 量化算子,并同步若干算子的 Ascend960 平台支持(含公共件配套)。 - **新增算子**:rms_norm_hi_f4_quant / add_rms_norm_hi_f4_quant,Ascend960 专属(kernel 与 tiling 位于 arch92 目录),ReciprocalCast 接口适配,aclnn 接口位于算子根 op_api/ 目录(仓规范布局) - **数据类型兼容层**:算子内数据类型引用统一切换 Ops::NN:: 常量(复用 master 先行合入的 op_const_def_nn.h 兼容层,见 !11999),各版本 CANN 均可编译 - **batch_norm / batch_norm_v3**:tiling 核间均衡 + kernel block_split_r 优化 - **add_rms_norm_dynamic_quant_v2**:目标平台注册 + config - **lp_norm_v2**:tiling 平台管理器初始化补充 - **公共件配套**:ascendc_impl_build.py DTYPE_MAP 补 hifloat4 映射 - **工程配置**:ascendc_config 注册 ## 测试 已在 Ascend960 环境完成编译与功能验证;低版本 CANN(metadef 9.2.0)语法验证通过;A5 不受影响。 ## 类型标签 - [x] Feature 关联 Issue: #6687 See merge request: cann/ops-nn!11972 | 20 小时前 | |
BNInfer,InplaceApplyRMSProp等4个算子检视意见闭环 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !12072 merge fix/ascend950-four-ops into master BNInfer,InplaceApplyRMSProp等4个算子检视意见闭环 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> BNInfer,InplaceApplyRMSProp,ApplyCamePart1,ApplyCamePart3等4个算子检视意见闭环: 1.BNInfer 的 UB 越界与对齐偏移问题闭环 2.统一 ApplyCamePart1/3 的 tilingKey=0 和 dtype 分发逻辑, 3.校正 InplaceApplyRMSProp 的 UT 预期。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12072 | 20 小时前 | |
fix(global_lp_pool): 补齐 tiling 异常/维护日志并消除魔法数字 Co-authored-by: andong_hw<andong2@huawei.com> # message auto-generated for no-merge-commit merge: !11954 merge fix-global-lp-pool-tiling-log into master fix(global_lp_pool): 补齐 tiling 异常/维护日志并消除魔法数字 Created-by: andong_hw Commit-by: andong_hw Merged-by: cann-robot Description: ## 描述 跟进 PR #11881(已合入)的 review 意见("很多魔鬼数字"、异常缺少日志),对 GlobalLpPool arch35 tiling 做可维护性整改(无计算路径变化): 1. **异常路径全量补日志**:GetPlatformInfoFromCtx / GetShapeAttrsInfo / ComputeAUbFactor / ComputeRUbFactor / ExpandAIfRFullyLoaded / ComputeAraTiling / ComputeNormalTiling / ComputeEmptyTiling / FillAndLogTilingData / ComputeTiling 的每个失败分支均输出含参数与原因的日志( OP_LOGE 或 OP_LOGE_FOR_INVALID_{ARGUMENT,DTYPE,SHAPEDIM}_WITH_REASON),风格对齐 reduction 范式 example(euclidean_norm tiling)。 2. **维护性日志**:新增入口与路由打点(EMPTY_A/EMPTY_R/ARA/AR)、各切分阶段 OP_LOGD(platform/input/FusedAxis/ComputeRUbFactor/ExpandA);FillAndLogTilingData 由单行扩为全量 INFO dump(pattern / split / loop / multicore / ub / attr 分段)。 3. **消除魔法数字**:新增 host/kernel 共享命名常量 GLLP_MAX_AXIS_NUM / GLLP_AXIS_INTERVAL / GLLP_AXIS_NUM_AR / GLLP_AXIS_NUM_ARA(axisShape/axisStride 数组长度、A/R 规整间距、模式轴数统一引用),kernel isTailR 运行期判定改用 GLLP_AXIS_INTERVAL;host 侧 DIM_NUM_4D/5D、MAX_SHAPE_DIM、FP32_SIZE 命名化。 4. **消除硬编码 32B 元素数**:cacheLevelStride / EMPTY_A / EMPTY_R 原 BLOCK_F32 = 32/sizeof(float) 改为按平台 blockSize 计算。 ## 关联的Issue Closes #6680 ## 测试 - 构建:bash build.sh --pkg --soc=ascend950 --ops=global_lp_pool -j32 通过,本地安装验证; - 聚焦回归 97 条 GEIR 全 PASS:受影响(R==1 且 A<一个 block)24 条 24/24、workdir18 18/18、ST 30/30、L0 24/24、perf c_s_008 1/1(cst_perf_us 22.7us,修复前 252.4us); - 抽查在 ttk 72ab72b 与 4b161e1 两个版本下均 PASS;前序全量 913 条回归(功能集零回退)已在 #11881 完成。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:可维护性整改(日志补齐 + 魔法数字消除),无行为变化 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11954 | 23 小时前 | |
docs: 修复issue#6713——4个量化算子文档示例代码问题(group资源泄漏/INT8输出拷贝越界/host数据类型不匹配/日志文案) Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !12032 merge doc-example-fix into master docs: 修复issue#6713——4个量化算子文档示例代码问题(group资源泄漏/INT8输出拷贝越界/host数据类型不匹配/日志文案) Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 修复 4 个量化算子 aclnn 接口文档示例代码中的问题(对应 issue #6713:资源泄漏 / INT8 拷贝越界 / Host 数据类型不匹配 / 日志文案): ### 1. aclnnDynamicBlockQuant(quant/dynamic_block_quant/docs/aclnnDynamicBlockQuant.md) - 修复 Host 数据类型不匹配:示例 1 中 xHostData 由 std::vector<float> 改为 std::vector<aclFloat16>(x 创建为 ACL_FLOAT16)、yHostData 由 std::vector<float> 改为 std::vector<int8_t>(y 为 INT8 输出)。 - 修复输出打印:PrintOutResult 中 host 缓冲由 std::vector<float> 改为 std::vector<int8_t>,避免按 sizeof(float) 拷贝 INT8 输出导致越界读取;打印格式由 %f 改为 %d(static_cast<int32_t>)。 - 修正日志文案:「mean result」→「result」。 ### 2. aclnnDynamicBlockQuantV2(quant/dynamic_block_quant/docs/aclnnDynamicBlockQuantV2.md) - 同上三处修复(PrintOutResult 越界拷贝/打印格式/文案;示例 1 xHostData/yHostData 类型),共享的 PrintOutResult 同时覆盖示例 2(FLOAT8_E5M2 输出)的 host 拷贝与打印。 ### 3. aclnnDynamicQuantV3(quant/dynamic_quant/docs/aclnnDynamicQuantV3.md) - PrintOutResult 重构为模板函数 template <typename T>,按 sizeof(T) 拷贝、以 static_cast<float> 配 %f 打印;调用处显式实例化 PrintOutResult<int8_t>(y 为 ACL_INT8 输出)。 - 修复资源泄漏:补充释放示例中创建的 group Tensor 与 device 内存(aclDestroyTensor(group)、aclrtFree(groupDeviceAddr))。 ### 4. aclnnDynamicQuantV4(quant/dynamic_quant/docs/aclnnDynamicQuantV4.md) - 修复 PrintOutResult:host 缓冲 float → int8_t、打印 %f → %d(static_cast<int32_t>)。 - 修复资源泄漏:补充 aclDestroyTensor(group)、aclrtFree(groupDeviceAddr)。 ## 关联的Issue - #6713 ## 测试 - 纯文档变更,无代码逻辑修改,不涉及编译与功能测试 - 已核对示例代码中 CreateAclTensor 的 ACL_FLOAT16/ACL_INT8/ACL_FLOAT8_E5M2 类型声明,确认修改后 host 数据类型与 aclTensor 类型一致 ## 文档更新 - quant/dynamic_block_quant/docs/aclnnDynamicBlockQuant.md - quant/dynamic_block_quant/docs/aclnnDynamicBlockQuantV2.md - quant/dynamic_quant/docs/aclnnDynamicQuantV3.md - quant/dynamic_quant/docs/aclnnDynamicQuantV4.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!12032 | 20 小时前 | |
fix: thnn_fused_gru_cell及single_layer_lstm_grad代码规范问题 Co-authored-by: xiafengkou<luojiangtao4@huawei.com> # message auto-generated for no-merge-commit merge: !12081 merge fix/thnn-gru-cell-coding-style into master fix: thnn_fused_gru_cell及single_layer_lstm_grad代码规范问题 Created-by: xiafengkou Commit-by: xiafengkou Merged-by: cann-robot Description: ## 描述 本次整改 CodeCheck 静态检查报告中 thnn_fused_gru_cell 前向 / 反向算子及 single_layer_lstm_grad op_api 的规范缺陷。 **改动明细(按规则):** 1. **G.INC.02 删除冗余 include** - thnn_fused_gru_cell/op_api/thnn_fused_gru_cell.h:删除未使用的 opdev/op_errno.h; - thnn_fused_gru_cell/op_host/thnn_fused_gru_cell_infershape.cpp:删除未使用的 graph/types.h。 2. **G.EXP.27 位运算操作数类型修正** - [thnn_fused_gru_cell_tiling_arch35.cpp]收敛为三个语义辅助函数:EncodeBiasFlags(位图编码)、HasBiasFlag(位图测试)、AlignDownUbBytes(32B 向下对齐),所有 |/& 位运算在 uint64_t 无符号域进行后回存。biasFlags 字段仍为 Host/Kernel 共享的 int64_t ABI,标志位仅 bit0/bit1,中转后与原写法逐位等值。 - [thnn_fused_gru_cell_grad_tiling_arch35.cpp]:FloorLog2 的有符号 >>= 改为无符号域右移,循环条件 x > 1 保证入参恒正,结果不变。 3. **G.EXP.36 控制表达式须为布尔值**:(biasFlags & FLAG) ? 1 : 0 改为经 HasBiasFlag 返回显式 bool 参与三元判断。 4. **G.RES.06 禁止 lambda 默认捕获**:PadAndSqueezeGateSpace 内 padToRank 的 [&] 改为显式捕获 [&RANK]。 5. **G.CNS.03 只读成员函数加 const**:ThnnFusedGruCellTiling::LogTilingData 仅做日志输出,增加 const 限定。 6. **G.EXP.22 除零保护**:ComputeUbSplit 在 (ubAvailable - postBufSize) / bytesPerRElem 前增加 bytesPerRElem == 0 检查,异常时 OP_LOGE 并返回 tiling 失败,规避理论上的除零未定义行为;正常路径数值不变。 7. **G.EXP.27 浮点判等**([aclnn_lstm_backward.cpp]:ascend950 分支中 dropout == 0.0 改为容差判断 IsDropoutZero(dropout)(容差 1e-6)。 ## 关联的Issue ## 测试 - **静态检查**:pre-commit 全量(trailing-whitespace / end-of-file / clang-format v18.1.8 / codespell / OAT)全部 Passed; - **编译**:bash build.sh --soc=ascend950 --ops=thnn_fused_gru_cell,thnn_fused_gru_cell_grad,single_layer_lstm_grad 编译通过,ophost_nn 库与 kernel binary 均 SUCCESS; - **主机侧 UT**:ophost 67 例 + opapi 54 例(L2 契约 / tiling / infershape / LstmBackward950Plan / ZeroHidden)共 **121 例全部通过**; - **opkernel 仿真**:thnn_fused_gru_cell 前向仿真用例在当前环境(CANN 9.1.0 模拟器报 scalar_pv unknown instr)失败,经**干净基线(不含本提交任何改动)对照**复现完全相同失败,确认为环境基线问题,与本次整改无关;反向算子 empty_r / empty_a kernel 用例在改动版本上均通过。 ## 文档更新 - 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:CodeCheck 静态检查缺陷整改(位运算类型 / 浮点判等 / 冗余 include / 捕获与 const 规范 / 除零保护),零逻辑改动 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12081 | 22 小时前 | |
feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11972 merge feat/hi-f4-quant-ascend960dt into master feat: batch_norm 等 4 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增 hi_f4 量化算子,并同步若干算子的 Ascend960 平台支持(含公共件配套)。 - **新增算子**:rms_norm_hi_f4_quant / add_rms_norm_hi_f4_quant,Ascend960 专属(kernel 与 tiling 位于 arch92 目录),ReciprocalCast 接口适配,aclnn 接口位于算子根 op_api/ 目录(仓规范布局) - **数据类型兼容层**:算子内数据类型引用统一切换 Ops::NN:: 常量(复用 master 先行合入的 op_const_def_nn.h 兼容层,见 !11999),各版本 CANN 均可编译 - **batch_norm / batch_norm_v3**:tiling 核间均衡 + kernel block_split_r 优化 - **add_rms_norm_dynamic_quant_v2**:目标平台注册 + config - **lp_norm_v2**:tiling 平台管理器初始化补充 - **公共件配套**:ascendc_impl_build.py DTYPE_MAP 补 hifloat4 映射 - **工程配置**:ascendc_config 注册 ## 测试 已在 Ascend960 环境完成编译与功能验证;低版本 CANN(metadef 9.2.0)语法验证通过;A5 不受影响。 ## 类型标签 - [x] Feature 关联 Issue: #6687 See merge request: cann/ops-nn!11972 | 20 小时前 | |
修正UT依赖安装与AddExample调测、安装指引 Co-authored-by: yangyang016<yangyang306@hisilicon.com> # message auto-generated for no-merge-commit merge: !11986 merge master into master 修正UT依赖安装与AddExample调测、安装指引 Created-by: yangyang016 Commit-by: yangyang016 Merged-by: cann-robot Description: ## 描述 修复安装、UT依赖和AddExample调测指引中的不一致,确保文档与当前代码及依赖配置对应。 - tests/requirements.txt 新增 -r ../requirements.txt,使UT依赖安装统一包含项目根目录的依赖及版本约束。 - 安装文档区分仅编译与执行UT两种场景,明确UT依赖已包含根目录依赖,无需重复安装。 - 更新AddExample的printf示例,移除与当前实现不一致的旧Tiling代码,明确在 Init 中的插入位置,使用 AscendC::printf 和与 int64_t blockLength_ 对应的 %lld。 - 补充自定义算子包安装时报 shared library validation failed 的处理说明:确认CANN版本与构建环境兼容后,可按需使用 --force 跳过共享库依赖检查;同时说明运行时加载失败风险,不建议默认使用。 ## 关联的Issue 关联Issue #6699:https://gitcode.com/cann/ops-nn/issues/6699 ## 测试 - 已执行 git diff --check HEAD^ HEAD,通过。 - 已静态核对UT依赖引用路径,以及printf示例中的变量类型与插入位置。 - 未执行实际依赖安装、CANN环境下的编译、UT及算子包安装验证,相关验证待补充。 ## 文档更新 - docs/QUICKSTART.md:更新printf调测示例,补充安装共享库校验失败时的处理说明。 - docs/zh/install/quick_install.md:区分编译依赖与UT依赖的安装场景。 - docs/zh/install/compile.md:明确UT依赖包含根目录依赖约束。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11986 | 1 天前 | |
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 | 26 天前 | |
fix(golden): 规范四个 NN 算子的 CPU 真值与 Torch 标杆 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !11783 merge fix/golden-three-leg-contract-20261012 into master fix(golden): 规范四个 NN 算子的 CPU 真值与 Torch 标杆 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修正 INTrainingReduceV2、NormalizeBBox、Relu6Grad、SGD 的 Golden,使其遵循 TTK 三腿比对与 Golden 编写规范。仅修改 4 个 tests/assets/golden.py。 - CPU Promote 直接使用框架下发的浮点类型,不再自行升精度或按输出元信息转换;INTrainingReduceV2 在普通模式按 FP32 计算并输出。 - GPU 标杆统一为 Torch,移除 TF provider。Relu6Grad 的 FP16/BF16 标杆在 FP32 计算后还原输出类型。 - Relu6Grad kernel/GEIR 的 CPU Golden 使用 TensorFlow Select 组合;TF E2E 复用 TTK 默认 CPU 原生 TF 通路及框架 Promote。Torch E2E 标杆保留 TF 乘掩码语义,区别于 kernel 的 Select 语义。 - 保留既有 kernel/GEIR、legacy 注册和全部输出 dtype 的 tolerance。算子实现、Host、Parser 和 TTK 均无改动。 ## 关联的Issue Closes #6534 https://gitcode.com/cann/ops-nn/issues/6534 ## 测试 - Golden CPU 回归 199/199 通过,基线为 32695b8b95ae266a9e5962925a6b9654098789de。 - 同一固定输入运行主线和整改版,另用独立参考校验整改结果;覆盖 FP16/BF16/FP32、Promote FP32/FP64、边界/非有限值、NormalizeBBox 反转布局与空输入、SGD 属性组合及无写回槽的位模式。 - 使用当前工作目录 TTK 的真实 TestSpec loader、参数绑定和 CPU Golden 模块检查注册、完整 dtype tolerance、Relu6Grad TF E2E 的普通及 Promote 默认通路。 - pre-commit run --files <本次4个golden.py>、git diff --check 通过。 - Torch GPU 标杆的 Python 组合在 CPU 执行验证;未执行 NPU/远程 GPU、算子性能或算子精度测试。本轮本地 CI 结果见下文。 预期变化:INTrainingReduceV2 普通模式不再额外 FP64 累加;Relu6Grad Promote 保留 FP64 结果;低精度 Torch 标杆窄回;TF E2E 普通模式不再无条件升精度。Relu6Grad 的 kernel 与原生 TF E2E 在带外 NaN/Inf 梯度下的既有语义差异分别保留,本 PR 不修改算子处理。 ## 文档更新 当前工作目录保留整改报告、主线 Golden 快照、可复现脚本和逐项结果;仓库文档未修改。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 ## 输入输出自查 修复 Relu6Grad 在标量输入下返回 NumPy scalar 的兼容问题,使用 np.asarray(output.numpy()) 保持原来的零维 ndarray,不转换 dtype 或改变数值。新增 legacy/Spec 的签名、返回容器、输出数量/顺序/shape/dtype、输入不被改写、Promote 元信息及真实 TTK 服务端 CPU 参数绑定检查。默认 TF E2E 标量输出另经真实 TTK 比对器验证兼容。 两仓累计 Golden CPU 自查 **447/447** 通过,本仓 **199/199**。未执行 NPU/远程 GPU、算子性能或算子精度测试。当前受检 HEAD:bc343e1d4ce2903950004650db77537d86bc4f4d。 ## 本地 CI 统一入口 /workspace/CI-skills/ci_local_check.sh 定向检查通过;pre-commit、隔离 oat-py 1.0.3、Ascend 950 与 A2(ascend910b)定向 package/UT 已通过。构建并行度最多 8,使用任务目录内 CANN_Revise 的 0923 Toolkit/ops。 受测 HEAD:bc343e1d4ce2903950004650db77537d86bc4f4d;rebase 主仓 master:6a9298a10aed1c98836aa3c93a96c2ac6b819ccc;本轮 CI 基线快照:2c28f2ba5426ac80347ccedc6ffa3f5a92f0db4c。每仓相对 rebase 基点仅 1 个提交,squash 前后完整 diff 和 tree 一致,7 个 Golden 内容不变。 覆盖边界:下列定向 UT 阶段未执行用例(0 项或仅构建目标):opapi/ascend950、opkernel/ascend950、opapi/ascend910b、opkernel/ascend910b。不将这些阶段的构建通过计为用例覆盖。 线上 CI 触发凭据:https://gitcode.com/cann/ops-nn/merge_requests/11783#note_193365204。仅记录已触发请求/现有任务,不表示线上 CI 已通过。 See merge request: cann/ops-nn!11783 | 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 | 20 小时前 | |
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 | 4 天前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 18 天前 | |
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 | 18 天前 | |
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 | 7 个月前 | |
【描 述】 eigen update to 5.0.0 Co-authored-by: j00427146<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !1152 merge master into master 【描 述】 eigen update to 5.0.0 Created-by: jialimin1 Commit-by: j00427146 Merged-by: cann-robot Description: ## 描述 现开源软件eigen 3.4.0 EOM,Eigen 从3.4.0版本升级到5.0.0,解决生命周期问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-nn/issues/975 https://gitcode.com/cann/ops-nn/issues/389 ## 测试   ## 文档更新 SECURITY.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Update Eigen to 5.0.0 See merge request: cann/ops-nn!1152 | 8 个月前 | |
工程框架支持兼容arch配置 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !11603 merge master into master 工程框架支持兼容arch配置 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 ### 变更摘要 本 PR 围绕 “arch” 主题,将原先以 socVersion(芯片版本号)为核心的构建匹配机制统一改为基于 npuArch 的匹配,并新增了供 bash 等外部脚本查询 CMake 变量与函数的脚本化入口。核心做法是新增 socVersion 到 npuArch 的映射定义与查询函数,在 add_modules_sources、add_kernel_sources、add_all_modules_sources 中引入 NPU_ARCH 参数(旧 COMPUTE_UNIT/COMPUTE_UNITS 作为兼容参数逐项转换为 npuArch),并让 build.sh 通过 cmake/query.cmake 获取芯片列表与 arch 值,替代原先硬编码的 SOC_TO_ARCH 映射。 ### 主要改动 * 新增 socVersion 与 npuArch 映射定义: 新增 cmake/soc_arch_variables.cmake,定义按位置一一对应的 ASCEND_ALL_COMPUTE_UNIT 与 SOC_TO_ARCH_VALUES,并去重生成 NPU_ARCH_LIST。 * 新增脚本化查询入口: 新增 cmake/query.cmake,支持缺省按 socVersion 查询 npuArch、Func 调用 get_npu_arch_by_soc_version、Value 查询变量三种用法,并通过 2>&1 输出供 bash 分词捕获。 * 新增 npuArch 转换函数并扩展构建接口: 在 cmake/func.cmake 中新增 get_npu_arch_by_soc_version,并在 add_modules_sources、add_kernel_sources、add_all_modules_sources 中新增 NPU_ARCH 参数,按 arch 统一匹配 tiling 目录与 op_kernel 支持芯片范围,旧 COMPUTE_UNIT(S) 保持兼容转换。 * 改造 build.sh 的芯片与 arch 获取方式: build.sh 移除硬编码的 SOC_TO_ARCH 映射,改为通过 cmake -P ${BASE_PATH}/cmake/query.cmake 查询 ASCEND_ALL_COMPUTE_UNIT 及指定 unit 的 arch,并将结果用于 SUPPORT_COMPUTE_UNIT_SHORT 与 SIMULATOR_PATH 拼接 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11603 | 5 天前 | |
chore(classify): 登记新算子 thnn_fused_gru_cell_grad / thnn_fused_gru_cell分类规则 Co-authored-by: dengguojie<dengguojie@huawei.com> # message auto-generated for no-merge-commit merge: !11091 merge classify-rule-thnn-fused-gru-cell-grad into master chore(classify): 登记新算子 thnn_fused_gru_cell_grad / thnn_fused_gru_cell分类规则 Created-by: dengguojie Commit-by: dengguojie Merged-by: cann-robot Description: ## 描述 登记新算子 thnn_fused_gru_cell_grad 分类规则。需要单独优先提交。 按检视意见(classify_rule.yaml:270 [Major])补齐 gru 族**前向算子**登记,与 lstm 族(前向+反向成对)保持一致: - ops/ops-nn/rnn/thnn_fused_gru_cell/(生产代码,置于 thnn_fused_gru_cell_grad/ 之前,对齐 lstm 前向→反向顺序) - ops/ops-nn/rnn/thnn_fused_gru_cell/tests/ 与 examples/(测试代码不进交付) 前向算子登记由本 PR 一并覆盖,无其它 PR 负责。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:登记新算子 thnn_fused_gru_cell / thnn_fused_gru_cell_grad 分类规则。需要优先独立提交才能支持文件夹配置方式 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11091 | 7 天前 | |
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 | 20 小时前 | |
调整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 | 24 天前 | |
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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。