本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
add check ops list Co-authored-by: he_kan<hekan4@huawei.com> # message auto-generated for no-merge-commit merge: !9797 merge ci into master add check ops list Created-by: he_kan Commit-by: he_kan Merged-by: cann-robot Description: ## 描述 新增对于pr_filelist.txt是否在白名单中的check 如果不在,则不执行线上st <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9797 | 1 个月前 | |
fix: 补齐激活算子dtype文档并修复Quantize错误日志格式 Co-authored-by: jiaoyiming<jiaoyiming2@huawei.com> # message auto-generated for no-merge-commit merge: !10091 merge fix/b-type-dtype-compliance into master fix: 补齐激活算子dtype文档并修复Quantize错误日志格式 Created-by: jiaoyiming Commit-by: jiaoyiming Merged-by: cann-robot Description: ## 描述 部分激活算子的接口文档遗漏已有支持类型,与 API 错误日志列表不一致;Quantize 的支持列表重复包裹方括号,影响类型识别。 - Elu、LeakyRelu 的 self/out 文档补齐 DOUBLE。 - Relu 的 self/out 文档补齐 UINT8,并同步 Elu、Relu 的 Atlas 训练系列说明。 - Sigmoid 的 self 文档补齐 DOUBLE、INT8、INT16、INT32、INT64、UINT8、BOOL、COMPLEX64、COMPLEX128;out 文档补齐 DOUBLE、COMPLEX64、COMPLEX128。 - Quantize 将 support list [%s] 改为 support list %s,避免 ToString 自带方括号导致 [[...]]。 本次不改变类型校验范围或计算逻辑。Quantize 当前文档已包含 zeroPoints 的 FLOAT32 及输出 FLOAT8 类型,无需重复修改。 ## 关联的Issue Fixes #5688 https://gitcode.com/cann/ops-nn/issues/5688 ## 测试 - git diff --check 通过。 - 对照 API 类型列表静态核对相关文档,确认一致。 - 检查 Quantize 日志格式只保留类型列表自身的一层方括号。 - 当前环境未执行 CANN 编译、UT、二级冒烟或设备日志复测,需由后续 CI/设备环境验证。 ## 文档更新 更新 activation/elu、activation/leaky_relu、activation/relu、activation/sigmoid 下对应的 aclnn 接口文档。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10091 | 1 个月前 | |
修复--jit包没有kernel源码无法在线编译,不符合资料的问题 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9952 merge new_set into master 修复--jit包没有kernel源码无法在线编译,不符合资料的问题 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 本 PR 主要解决 JIT 包因缺少 kernel 源码而无法在线编译、与资料描述不符的问题,核心是调整二进制产物构建与算子信息生成的触发条件:将 ENABLE_BINARY 的赋值时机前移到编译选项解析阶段,并取消 build_binary 与 ENABLE_JIT/ENABLE_CUSTOM 的耦合,改为由 ENABLE_BINARY/ENABLE_PACKAGE 驱动,从而保证相关场景下 kernel 二进制能被正确生成; ### 主要改动 * build.sh 中 ENABLE_BINARY 赋值时机前移:在 checkopts() 处理自定义算子编译选项 ops=* 时即置 ENABLE_BINARY=TRUE,删除原先位于 assemble_cmake_args() 中 ENABLE_CUSTOM == TRUE 才置位的逻辑,使二进制构建开关在更早阶段生效。 * build.sh 中 build_binary 触发条件调整:main() 内条件由「ENABLE_BINARY 或 ENABLE_CUSTOM 且 ENABLE_JIT == FALSE」改为「ENABLE_BINARY 或 ENABLE_PACKAGE」,解除了 JIT 场景下不构建二进制的限制,并纳入 ENABLE_PACKAGE 场景。 * cmake/gen_ops_info.cmake 条件收紧:gen_ops_info_and_python 中按计算单元生成算子编译信息的判断由 ENABLE_BINARY OR ENABLE_CUSTOM 改为仅 ENABLE_BINARY,使该流程只受二进制构建开关控制。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9952 | 1 个月前 | |
Conv3DTranspose算子950代码与tbe解耦,tbe_tiling_api迁移至conv/common/op_host并独立出OpTypeV2枚举定义 Co-authored-by: cheng_gao<cheng.gao@huawei.com> # message auto-generated for no-merge-commit merge: !9769 merge tbe_move_20260902 into master Conv3DTranspose算子950代码与tbe解耦,tbe_tiling_api迁移至conv/common/op_host并独立出OpTypeV2枚举定义 Created-by: cheng_gao Commit-by: cheng_gao Merged-by: cann-robot Description: ## 描述 Conv3DTranspose算子950代码与tbe解耦,tbe_tiling_api迁移至conv/common/op_host并独立出OpTypeV2枚举定义 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5641 ## 测试 RDV基本功能 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9769 | 1 个月前 | |
NPUAllocFloatStatus算子编码规范问题修复 Co-authored-by: wkkk0528<wangkai578@huawei.com> # message auto-generated for no-merge-commit merge: !9936 merge fix_npu_alloc_float_status into master NPUAllocFloatStatus算子编码规范问题修复 Created-by: wkkk0528 Commit-by: wkkk0528 Merged-by: cann-robot Description: ## 描述 修复 npu_alloc_float_status 算子的编码规范门禁缺陷: - G.PRE.09:宏定义末尾不以分号结尾(examples/test_geir) - G.FUU.21:memset 替换为安全函数 memset_s 并检查返回值 - G.CNS.04-CPP:ValidateDtype/ValidateFormat/ValidateShape 指针参数补充 const 修饰 - G.INC.03-CPP:npu_alloc_float_status_tiling_data.h 头文件自包含(补充 <cstdint>) ## 关联的issue https://gitcode.com/cann/ops-nn/issues/5612 ## 测试 已通过st测试、算子冒烟测试 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:编码规范门禁缺陷修复 See merge request: cann/ops-nn!9936 | 1 个月前 | |
修正Conv3D Transpose N2H方案准入规则 Co-authored-by: hexinhui<hexinhui5@huawei.com> # message auto-generated for no-merge-commit merge: !9726 merge N2H into master 修正Conv3D Transpose N2H方案准入规则 Created-by: hexinhui Commit-by: hexinhui Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 问题现象: 当前 Conv3D Transpose 的 N2H 转置方法为数学上的等价性能优化方案,其路径准入判断( CheckTransposeN2HEnable,位于 conv/convolution_forward/op_host/op_api/convolution.cpp)仅检查 groups、stride/dilation/pad 属性及 N/D/H/W/C 形状范围(cout/cin ∈ [1,128] 等)。 当前的准入规则未评估 tiling中HkWk 模板对 L1 内存的容量需求,L1 容量不足的 shape 经过N2H转置后,进入该模板会导致性能劣化。 改动方案为: 1. CheckTransposeN2HEnable 签名新增 outputPadding5 参数,调用点(aclnn_convolution.cpp 的 CheckN2HAndTranspose)传入 params->adaptoutputPad; 2. 新增 CheckN2HTransposeDtypeAvailable:要求 input/weight dtype 一致且 ∈ {FP16, BF16, FP32},否则记录 [N2H] only FP16, BF16 and FP32 are supported 并拒绝;仅当 GetCurNpuArch() == DAV_3510 时启用该检查; 3. 新增 CheckN2HNoHkWkL1Probe:按 no-HkWk 模板 base M=1024、base N=16、cube block 32 字节估算所需 L1(aProbe = min(batch, calHo) × wi × strideW × 32,其中 calHo 由 wo=(wi-1)×strideW+wk+outputPaddingW 推导;bProbe = wk × 32 × 16),requiredL1 = aProbe + bProbe,与平台 GetLocalMemSize(L1) 实际容量比较,requiredL1 ≤ availableL1 才允许进入 N2H 路径。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5653](https://gitcode.com/cann/ops-nn/issues/5653) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 泛化用例通过,冒烟用例通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9726 | 1 个月前 | |
[Docs] 补充QuantBatchMatmulV3TransposeFusionPass和QuantBatchMatmulV4ToV3FusionPass开源资料 Co-authored-by: guiruoyu<guiruoyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9939 merge codex/quant-bmm-fusion-docs into master [Docs] 补充QuantBatchMatmulV3TransposeFusionPass和QuantBatchMatmulV4ToV3FusionPass开源资料 Created-by: guiruoyu Commit-by: guiruoyu Merged-by: cann-robot Description: ## 描述 新增 QuantBatchMatmulV3TransposeFusionPass 和 QuantBatchMatmulV4ToV3FusionPass 的开源资料,说明融合结构、适用约束、输入连接和属性变化。最终改动为两份融合文档和八张 PNG,共 10 个新增文件。 - V3 配七张图:仅 x1 侧、仅 x2 侧、双侧转置、普通 scale Reshape、MX scale Reshape、Bitcast 和动态 Reshape。每张图分别展示 x1、x2、x1_scale(pertoken_scale)、x2_scale(scale)四路输入及端口,标明连接和转置属性变化。 - V4 配一张图:展示六路输入映射、属性迁移和 group_size 默认值转换;正文说明两类保留 V4 的场景及未迁移输入的适用边界。 - 八张图统一使用方正兰亭黑简体,按 PassName_编号.png 命名,并沿用仓库 Git LFS 规则。 资料参考 PR #9725、仓库中 Matmul/Gather/LayerNorm 等融合说明、docs/CONTRIBUTING_DOCS.md 及 CANN 文档写作规范,并对照两个 pass 实现、算子 IR/README 和配套 UT/CSV 校核。已有 README 和算子代码无改动。 ## 关联的Issue 关联 Issue:[#5671](https://gitcode.com/cann/ops-nn/issues/5671)。参考资料:[PR #9725](https://gitcode.com/cann/ops-nn/pull/9725)。 ## 测试 - git diff --check 通过。 - 两份文档的 12 个相对文件链接、3 个内部锚点及 UTF-8 无 BOM 编码检查通过。 - 八张 PNG 完整性检查通过,并逐张检查连线、端口、字体、文字和属性变化。 - 八张 Git LFS 图片已推送;两个 README 与 PR 基线比较无差异。 - 已对照现有 UT/CSV 校核场景和预期结果;本机未运行 CANN 图融合 UT 或 NPU 实测。 - 最新提交 ea4121988 已通过 /compile 触发流水线,结果以 Actions 为准。 ## 文档更新 - matmul/quant_batch_matmul_v3/docs/QuantBatchMatmulV3TransposeFusionPass.md - matmul/quant_batch_matmul_v4/docs/QuantBatchMatmulV4ToV3FusionPass.md - docs/zh/figures/QuantBatchMatmulV3TransposeFusionPass_1.png 至 QuantBatchMatmulV3TransposeFusionPass_7.png - docs/zh/figures/QuantBatchMatmulV4ToV3FusionPass_1.png ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9939 | 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 个月前 | |
AIDD拼写和标点问题修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !10060 merge master into master AIDD拼写和标点问题修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 AIDD拼写和标点问题修改 ## 关联的Issue 关联Issue #5680 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10060 | 1 个月前 | |
fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10093 merge fix/foreach-aclnn-tp-binding into master fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 foreach 八个 inplace 算子在 **aclnn 通路**上三方腿按名绑定失败的问题。 该缺陷导致这八个算子 aclnn 通路的 cross_check 判据**从未生效**——三方腿一次都没起来, 结果恒为 GOLDEN_FAILURE,即该通路的精度实际上从未被验证。 ### 根因 TTK 的 aclnn 通路对 third_party 是**按名绑定**,入参池的 key 取自 **aclnn 头文件形参名**: core_modules/npu/op_api/profiling.py::_aclnn_xpu_input_names -> OpApiInfoKeeper().info_of(api_name).tensors # 解析 aclnn 头文件 remote/server/executor.py::_invoke -> _bind -> remote/server/execution_container.py::bind_params # 按名取, 取不到即抛 而 golden 的 AclnnSpec.third_party 直接复用了 kernel 通路的竞品类 _TpKernelFaithful, 其签名是 **def 注册名** x / x1。inplace 算子的 aclnn 头文件则把首个被原地改写的形参 写作**带 Ref 后缀**的名字(实测 CANN 9.2.0 内置头): | aclnn 接口 | 头文件形参(pool key) | golden 三方腿签名 | |---|---|---| | aclnnForeachACosInplace | ['xRef'] | ['x'] | | aclnnForeachLogInplace | ['xRef'] | ['x'] | | aclnnForeachMulScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachSubScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachMulListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachDivListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachAddListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | | aclnnForeachSubListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | 八个算子无一匹配,服务端抛 UnknownParamError 并以 400 返回。 ### 为何一直没被发现 客户端把这个 400 吞成了连通性告警,日志读起来像是三方端点挂了: [WARNING] profiling.py:2067: cross_check configured but no third_party output (no XPU / endpoint down); cross_check outputs will GOLDEN_FAILURE 实际端点正常、请求也发出去了,是被服务端以 400 拒绝: [ERROR] executor.py:1019: request failed: bad params (api=ForeachMulScalarInplaceAclnnSpec): parameter 'x' of _TpKernelFaithful.__call__ is not a known input or attribute name xpu_server.py:555: _handle_run client-err: status=400 172.17.0.1 - "POST /v1/run HTTP/1.1" 400 - 同类对照:scatter_max/min/mul/div 的 golden 为 aclnn 通路另写了适配类 (def __call__(self, varRef, indices, updates),形参名取自头文件),故不受影响、一直 PASS。 ### 修改内容 1. **按头文件形参名另立 _TpAclnn 适配类**,内部转调同一个竞品类 _TpKernelFaithful, **不改变任何竞品语义**,只做形参名适配: python class _TpAclnn: def __call__(self, xRef, scalar, **kwargs): return _TpKernelFaithful()(xRef, scalar) class ForeachMulScalarInplaceAclnnSpec: third_party = {"torch": _TpAclnn} # 原为 _TpKernelFaithful 2. **订正两处已失效的注释**——其中一条正是当初未做适配的原因: -【预留】TTK 的 aclnn 通路当前不取用 third_party(仅 kernel/GEIR 取用), 写在此处不生效 - 也无副作用; 待该通路支持三方后自动接上。 + aclnn 通路同样取用 third_party(按名绑定), 见下方 _TpAclnn。 - third_party 走按名绑定(pool 的 key 取自头文件形参名), 复用 kernel 通路的竞品类 - ——其形参名即 def 注册名, 与头文件一致。 + third_party 走按名绑定(pool 的 key 取自头文件形参名), 因该名与 def 注册名不同, + 另由 _TpAclnn 适配后转调同一个竞品类。 涉及算子(8 个):foreach_a_cos_inplace / foreach_log_inplace / foreach_add_list_inplace / foreach_sub_list_inplace / foreach_mul_list_inplace / foreach_div_list_inplace / foreach_mul_scalar_inplace / foreach_sub_scalar_inplace 仅改 tests/assets/golden.py,**不涉及任何算子实现代码**。 ## 验证 | 项 | 修复前 | 修复后 | |---|---|---| | 三方腿按名绑定 | 8/8 失败(服务端 400 UnknownParamError) | 8/8 成功 | | aclnn 用例判定 | 8/8 GOLDEN_FAILURE / FAIL | **8/8 PASS** | | GPU 侧 UnknownParamError 新增 | 每算子必产生一条 | **零新增** | | CI 门禁 | — | ruff check / ruff format 均通过 | 八个算子逐一复测,cross_check 判据首次真实生效。 关联 Issue #5691 See merge request: cann/ops-nn!10093 | 1 个月前 | |
perf: float2/float4 for embedding_hash_table_export/import Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !9895 merge perf/export-import-b128 into master perf: float2/float4 for embedding_hash_table_export/import Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 EmbeddingHashTableExport / EmbeddingHashTableImport 算子(arch35)引入 SIMT 访存合并优化:values 拷贝由逐元素 4B 标量访存改为按对齐分档的 float4(B128)/float2(B64) 短向量批量访存。桶 values 区偏移 24B、仅 8B 对齐(24B 桶头为 hash 家族跨算子契约),桶侧封顶 float2(B64);外部张量行在 dim%4==0 且基址 16B 对齐时用 float4(B128)(运行时对齐检查兜底)。dim≤4 回退原始标量路径(小 dim 宽访存收益抵不过开销,实测 import dim=4 无回退路径慢 16%)。桶格式/tiling/flag 语义/哈希函数零改动,canndev 仓 evict 算子跨仓契约不受影响。 **改动文件**: - hash/embedding_hash_table_import/op_kernel/arch35/embedding_hash_table_import.h:新增 CopyImportValuesMerged __simt_callee__ helper,values 插入循环改为三档合并分派(+39 -7) - hash/embedding_hash_table_export/op_kernel/arch35/embedding_hash_table_export.h:新增 CopyExportValuesMerged helper(读桶 2×float2 组装、输出行 float4 写),ExportPerThread values 拷出循环改为三档分派(+43 -7) **性能数据**(950PR,N=2^20,B=2^21,min 耗时,对比 built-in 基线): - import:dim8 +13%;dim16/32/48/64/128 = 1.65×/1.70×/1.99×/2.11×/2.35×(dim128 10.05→4.29 ms) - export:dim8/16/32/48/64/128 = 1.15×/1.21×/1.22×/1.24×/1.26×/1.28×(收益受 CountPerThread 全桶 flag 扫描等固定开销稀释) - 两算子 dim1~4 持平(标量回退路径),全 dim 无回退 ## 关联的Issue 关联 Issue #5578 ## 测试 - e2e 真机五算子 canonical 精度全 PASS(init 3/3、lookup 9/9、export 3/3、import 3/3、adamw 6/6) - sweep 全场景矩阵 137 用例全 PASS(init 36/36、lookup 54/54、export 11/11、import 9/9、adamw 27/27,含全 dim 档/filter_key/多表/碰撞边界) - vendor 包 vs built-in 包:精度逐项一致;性能五算子对比,优化算子只升不降,未优化的 apply_adam_w 对照组两包持平(环境无漂移) ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9895 | 1 个月前 | |
修改nn仓部分算子license和format Co-authored-by: lihang_13123<lihang106@h-partners.com> # message auto-generated for no-merge-commit merge: !10082 merge scatter_nd_add into master 修改nn仓部分算子license和format Created-by: lihang_13123 Commit-by: lihang_13123 Merged-by: cann-robot Description: ## 描述 修改nn仓部分算子license和format ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5706 ## 测试 冒烟OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:修改部分算子license和format ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10082 | 1 个月前 | |
fix: restrict sigmoid cross entropy grad tiling to ascend950 Co-authored-by: zhouxuan78<zhouxuan78@huawei.com> # message auto-generated for no-merge-commit merge: !9984 merge master into master fix: restrict sigmoid cross entropy grad tiling to ascend950 Created-by: zhouxuan78 Commit-by: zhouxuan78 Merged-by: cann-robot Description: ## 描述 tiling使用错误,A2的kernel走入950的tiling,导致A2算子sigmoid cross entropy grad的精度出现错误,将950tiling全部放入arch35中,做隔离 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5683 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9984 | 1 个月前 | |
[Fix] fix mis-matched dtype in aclrtMemcpy of aclnnFusedLinearCrossEntropyLossGrad examples Co-authored-by: jisihuai<jisihuai@h-partners.com> # message auto-generated for no-merge-commit merge: !10010 merge test into master [Fix] fix mis-matched dtype in aclrtMemcpy of aclnnFusedLinearCrossEntropyLossGrad examples Created-by: jisihuai Commit-by: jisihuai Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决aclnnFusedLinearCrossEntropyLossGrad examples/markdown中float32与bf16类型冲突问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> example样例编译运行成功 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10010 | 1 个月前 | |
fix(instance_norm): 修复 ND 格式除零 UB 与 ReduceEmpty 小 N*C 对齐下溢 Co-authored-by: HelloWord-LuXin<luxin67@h-partners.com> # message auto-generated for no-merge-commit merge: !9740 merge fix-instancenorm-divzero-nd into master fix(instance_norm): 修复 ND 格式除零 UB 与 ReduceEmpty 小 N*C 对齐下溢 Created-by: HelloWord-LuXin Commit-by: HelloWord-LuXin Merged-by: cann-robot Description: 本 PR 包含 InstanceNorm(arch35)两个独立缺陷的修复。 ## 问题一:ND 格式 GetShapeAttrsInfo 除零 UB(issue #5010) ### 现象 ND 格式下 x 的第 0 维(N)或第 1 维(C)为 0 时,Host Tiling 进程整数除零(C++ 未定义行为),表现为 SIGFPE 宿主机崩溃而非干净报错。 ### 根因 ND 分支中 a1/a0 从 shape 维度赋值后,在零值校验之前就被用作除数: cpp a1 = xStorageShape.GetDim(DIM_0); a0 = xStorageShape.GetDim(DIM_1); r = xStorageShape.GetShapeSize() / a1 / a0; // 第138行:除法 ... if (a1 <= 0) return ge::GRAPH_FAILED; // 第144行:校验晚于除法 if (a0 <= 0) return ge::GRAPH_FAILED; // 第151行:校验晚于除法 上游的 CheckShapeAllNotNegative 仅检查 GetDim(i) < 0,不排除 0 值(有意放行 0 以支持空 tensor),因此 a1=0/a0=0 可到达除法。空 shape 专用处理器 InstanceNormReduceEmptyTiling 也无法拦截——其 IsCapable 在 GetShapeAttrsInfo 之后调用,UB 已发生。 其余格式分支(NCHW/NCDHW/NHWC/NDHWC)的 r 均由乘法计算,不受影响。 ### 修复 在 ND 分支的除法之前加入 a1 <= 0 || a0 <= 0 前置校验(OP_CHECK_IF),命中则记录原因并返回 GRAPH_FAILED。各格式分支共享的后置零值校验保持不变(它们对无除法的分支仍有效)。合法空 tensor(reduction 轴为 0、N>0、C>0)不受影响。 ## 问题二:ReduceEmpty tiling 对齐下溢(小 N*C 垃圾值) ### 现象 r=0(合法空 tensor)且 N\*C 小于 32B 对齐粒度(fp32 mean < 8,fp16/bf16 mean < 16)时,mean/variance 输出**垃圾值**而非 NaN。实测输出字节与 tiling data 内容完全一致(从未初始化的 UB 拷出),且输出非确定——同一用例时而 NaN 时而垃圾值,"碰巧对"比"稳定错"更具隐蔽性。典型触发:[1,7,0,0] fp32、[1,8,0,0] fp16 mean。 ### 根因链条 InstanceNormReduceEmptyTiling::DoOpTiling(头核,尾核对称): cpp perCorePerLoopElements = FloorAlign(min(perLoopMaxIndicesElements, perCoreElements), ubBlockSize / elemSize); // ① N*C < 粒度时下溢为 0 perCoreLoops = CeilDiv(perCoreElements, perCorePerLoopElements); // ② CeilDiv(x,0) 静默返回 x 1. FloorAlign(x, align) = x / align * align,当 x < align 时返回 0 2. CeilDiv(x, y) 定义 y == 0 时返回 x 而非报错,错误静默传播 3. kernel 侧(instance_norm_reduce_empty.h)以 perCorePerLoopElements=0 执行:InitBuffer(0 字节)、Duplicate(local, NaN, 0)(实际未写入)、末次 DataCopyPad 从 0 字节 local tensor 拷出 N\*C\*elemSize 字节 → 未初始化内存写入 mean/variance ### 修复 FloorAlign 结果下溢为 0 时回退为**单次全量拷贝**(DataCopyPad 本就支持字节级 blockLen,无需 32B 对齐),头核/尾核两处对称处理;对齐路径行为完全不变: cpp int64_t perCoreAligned = FloorAlign(min(perLoopMaxIndicesElements, perCoreElements), ubBlockSize / elemSize); // perCoreElements 小于对齐粒度时 FloorAlign 下溢为 0,回退为单次全量拷贝 perCorePerLoopElements = (perCoreAligned == 0) ? perCoreElements : perCoreAligned; 下溢分支健全性: - **下溢必为单核**:blockNum_ ≥ 2 ⟺ totalLength*elemSize > 32K ⟹ totalLength > 8192 ⟹ perCoreElements ≥ 4097 ≫ 对齐粒度(≤16),即 FloorAlign==0 仅在 blockNum_=1 时出现,头核/尾核两处对称兜底已完全覆盖 - **回退值必在 UB 内**:下溢时 min(perLoopMax, perCore) < align ≪ perLoopMax,故回退值 perCoreElements ≤ perLoopMax,InitBuffer 尺寸安全 ## UT 补充 test_instance_norm_tiling.cpp 此前对 reduce_empty 场景**零覆盖**(缺陷未被发现的原因),补充 6 例:fp32/fp16 mean × 下溢回退(N\*C=1/7/8)/ 对齐单拷贝(N\*C=8/16)/ 对齐多循环尾loop(N\*C=9),锁定 tiling 切分行为防回归。另有 ND N=0/C=0 两例锁定问题一的干净拒绝。 > 注:kernel UT(tikicpulib CPU 仿真)无法覆盖 ReduceEmpty 分支——仿真器不支持该路径 Duplicate 广播所需的 pset 谓词寄存器指令(dav_3510),故实机行为通过 TTK kernel 直调验证。 ## 验证 - **除零**:950PR 实机 TTK kernel 直调复现 SIGFPE 崩溃;替换修复库后变为干净报错("The N-dimension and C-dimension of input x must be positive numbers when the format of x is ND, where N is the 0th dim and C is the 1st dim"),恢复原库崩溃复现,因果闭环;5 种格式 N=0/C=0 全覆盖(唯 ND 崩溃,其余干净拒绝) - **下溢**:950PR 实机(TTK kernel 直调 + built-in libophost_nn.so 替换):小 N\*C 边界 6 例 6/6 PASS(mean/variance 全 NaN),大 shape reduce_empty(含多核 [433,90,0,...] blockNum=5、[221,90,150,0] blockNum=3)、各模板最小 shape(ar/ara 通路 10 例)、r=0 常规、正常对照均无回归 - **UT 红绿验证**:撤掉下溢修复后恰 3 个下溢用例失败、对齐用例不受影响;加修复后 26/26 全部通过 - **本地定向 CI**(ascend950 + ascend910b):pre-commit、pkg、ophost、opgraph 全部 PASS ## 关联 issue Fixes #5010 See merge request: cann/ops-nn!9740 | 1 个月前 | |
fix: 提升InplaceApplyFtrlV2精度并补充输入校验 Co-authored-by: Bright0313<liwenbo84@huawei.com> # message auto-generated for no-merge-commit merge: !9940 merge codex/inplace-apply-ftrl-v2-precision-review-fixes into master fix: 提升InplaceApplyFtrlV2精度并补充输入校验 Created-by: Bright0313 Commit-by: Bright0313 Merged-by: cann-robot Description: ## 修复内容 InplaceApplyFtrlV2 精度与约束修复(同一次三方精度测试和资料扫描发现): ### 1. kernel(op_kernel/arch35/inplace_apply_ftrl_v2_kernel.h) - FLOAT 的 accumulation_new 改用融合乘加,减少一次中间舍入。 - 针对 -0.05、-0.9、-1.5、-3 等指数增加分段幂差算法,降低相近幂值直接相减的消减误差。 - FLOAT 默认采用 (delta_power * var) / lr 的先乘后除顺序;-0.75 与低精度路径保留原顺序。 - 接口、dtype、输出定义和 Tiling 方案不变。 ### 2. host 校验(op_host/arch35/inplace_apply_ftrl_v2_tiling_arch35.cpp) - 显式拒绝 use_locking=true。 - 显式校验 9 路输入和 3 路输出均为 FORMAT_ND。 - 显式校验 3 路输出 dtype 与 var 一致。 ### 3. UT 与资料 - 新增 use_locking、非 ND format、输出 dtype 不一致的 Host UT。 - README 补充自动连续化说明。 ## 验证结果 - Ascend 950 Kernel 构建通过;Host UT 12/12 PASS。 - pre-commit 全项 PASS;pre-push 快速门禁中的 ophost UT、opkernel UT、Ascend950 pkg 均 PASS。 - 三方固定 200 条、seed=123:修改前 190/200,修改后 196/200;其余用例按 N=1000、Bootstrap 2000 次复检后满足复检通过标准。 - 两方 stat_rel_err、FP32 中间计算 Golden:183/204 PASS(BF16 57/60、FP16 56/61、FP32 70/83),accumulation_new 204/204 PASS;失败仅涉及 var_new 或 linear_new,与三方 cross_check 分开记录。 - 新增覆盖用例 4/4 PASS:rank 0、≥1 GiB FP16 压力、FLOAT -0.0、BF16 -0.0。 See merge request: cann/ops-nn!9940 | 1 个月前 | |
refactor(pooling): share ascend950 host and kernel helpers Co-authored-by: qq_52056150<wangshuo179@huawei.com> # message auto-generated for no-merge-commit merge: !10034 merge refactor/pooling-p2-host-tiling-common-20260908 into master refactor(pooling): share ascend950 host and kernel helpers Created-by: qq_52056150 Commit-by: qq_52056150 Merged-by: cann-robot Description: ## 描述 1. **Host/Tiling 公共逻辑收编**:统一 AvgPoolGrad/AvgPoolV2Grad 的公共结构、Padding 计算、Shape/Dtype 解析及维度常量。 2. **AdaptivePool3D 参数结构收编**:抽取 Avg/Max AdaptivePool3D 共用的 ComputeInfo 字段,保持原有内存布局和序列化行为不变。 3. **Big Kernel 公共能力收编**:复用 Pool3D 公共的 Cast、数据读写、索引计算、ReduceMaxWithIndex 及 Sum 计算逻辑。 4. **数据搬运逻辑收编**:统一 AvgPool/MaxPoolV3 的多行 CopyIn、UB Strided Copy 等重复搬运实现,保持偏移和 DataCopy 参数不变。 5. **Small Kernel 与 3D Grad 基类收编**:抽取公共 IO 初始化、队列、Buffer、Tiling 解析及成员字段,减少多个 Kernel 类重复代码。 6. **严格限定等价代码整改**:仅合并完全一致逻辑,不修改 IsCapable、TilingKey、UB 公式、切分策略、Workspace、精度及跨芯片实现。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5370 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 受影响的算子复跑门槛用例均无引入功能问题,性能无劣化,线上David冒烟和OBP冒烟均已通过 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 不涉及 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:池化算子重复代码收编 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10034 | 1 个月前 | |
fix: 补齐激活算子dtype文档并修复Quantize错误日志格式 Co-authored-by: jiaoyiming<jiaoyiming2@huawei.com> # message auto-generated for no-merge-commit merge: !10091 merge fix/b-type-dtype-compliance into master fix: 补齐激活算子dtype文档并修复Quantize错误日志格式 Created-by: jiaoyiming Commit-by: jiaoyiming Merged-by: cann-robot Description: ## 描述 部分激活算子的接口文档遗漏已有支持类型,与 API 错误日志列表不一致;Quantize 的支持列表重复包裹方括号,影响类型识别。 - Elu、LeakyRelu 的 self/out 文档补齐 DOUBLE。 - Relu 的 self/out 文档补齐 UINT8,并同步 Elu、Relu 的 Atlas 训练系列说明。 - Sigmoid 的 self 文档补齐 DOUBLE、INT8、INT16、INT32、INT64、UINT8、BOOL、COMPLEX64、COMPLEX128;out 文档补齐 DOUBLE、COMPLEX64、COMPLEX128。 - Quantize 将 support list [%s] 改为 support list %s,避免 ToString 自带方括号导致 [[...]]。 本次不改变类型校验范围或计算逻辑。Quantize 当前文档已包含 zeroPoints 的 FLOAT32 及输出 FLOAT8 类型,无需重复修改。 ## 关联的Issue Fixes #5688 https://gitcode.com/cann/ops-nn/issues/5688 ## 测试 - git diff --check 通过。 - 对照 API 类型列表静态核对相关文档,确认一致。 - 检查 Quantize 日志格式只保留类型列表自身的一层方括号。 - 当前环境未执行 CANN 编译、UT、二级冒烟或设备日志复测,需由后续 CI/设备环境验证。 ## 文档更新 更新 activation/elu、activation/leaky_relu、activation/relu、activation/sigmoid 下对应的 aclnn 接口文档。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10091 | 1 个月前 | |
AIDD拼写和标点问题修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !10060 merge master into master AIDD拼写和标点问题修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 AIDD拼写和标点问题修改 ## 关联的Issue 关联Issue #5680 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10060 | 1 个月前 | |
batch_norm/batch_norm_v3算子新平台支持 Co-authored-by: ASCEND222<dongfei16@h-partners.com> # message auto-generated for no-merge-commit merge: !10044 merge master into master batch_norm/batch_norm_v3算子新平台支持 Created-by: ASCEND222 Commit-by: ASCEND222 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> batch_norm/batch_norm_v3算子新平台支持 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5672 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10044 | 1 个月前 | |
fix asan test Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !9033 merge master into master fix asan test Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 修复 ASan(AddressSanitizer)测试中暴露的问题,主要包括:类型不匹配、越界访问、字段缺失及命名不一致。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 详细变更 ### 1. 类型修正(uint32_t/int32_t → int64_t/uint64_t) 使测试中的 CompileInfo 结构体字段类型与实际算子侧定义保持一致,消除 ASan 因类型宽度不匹配报告的问题。 | 文件 | 字段 | 旧类型 | 新类型 | |------|------|--------|--------| | test_add_layer_norm_tiling.cpp | aivCoreNum_, sysWorkspaceSize_, vecRegSize_, blockSize_ | uint32_t | int64_t | | test_embedding_dense_grad_v2_tiling.cpp | totalCoreNum | int32_t | uint64_t | | test_add_rms_norm_cast_tiling.cpp | totalCoreNum | uint32_t | uint64_t | | test_add_rms_norm_quant_tiling.cpp | totalCoreNum | uint32_t | uint64_t | ### 2. 命名规范化:isRegbase → isRegBase 修正大小写不一致,统一为驼峰命名 isRegBase。 - test_embedding_dense_grad_v2_tiling.cpp ### 3. 补充缺失字段 isRegBase 为以下测试的 CompileInfo 结构体补充 isRegBase 字段(默认 false),避免因结构体字段缺失导致的内存读取越界: - test_modulate_tiling.cpp(4 处) - test_multi_scale_deformable_attention_grad_tiling.cpp(1 处) - test_multi_scale_deformable_attn_function_tiling.cpp(9 处) ### 4. 补充缺失字段 blockSize / vlFp32 - test_layer_norm_grad_tiling.cpp: 为 LayerNormGradCompileInfo 补充 blockSize 和 vlFp32(均为 int64_t)字段。 ### 5. 移除硬编码值 - test_add_rms_norm_cast_tiling.cpp: 将 totalCoreNum = 40、totalUbSize = 196608 改为 0,避免与实际平台信息不一致。 - test_add_rms_norm_quant_tiling.cpp: 同上,并调整字段顺序与命名(socVersion → curSocVersion,totalUbSize → maxUbSize)。 ### 6. 越界访问修复 - tests/ut/common/tiling_context_faker.cpp:309: 添加 idx < inputInstanceNumPacked_.size() 边界检查,防止 inputInstanceNumPacked_ 越界访问。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9033 | 1 个月前 | |
support torch2.14 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9855 merge torch into master support torch2.14 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 torch_ext jit编译时,根据已有的torch选择不同的C++版本编译 ## 关联的Issue [#5543](https://gitcode.com/cann/ops-nn/issues/5543) ## 测试 在torch2.14.0环境编译构建,然后运行算子,成功 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9855 | 1 个月前 | |
legacy下线:整改NN算子图模式注册与日志规范 Co-authored-by: zhouxuan78<zhouxuan78@huawei.com> # message auto-generated for no-merge-commit merge: !8388 merge master into master legacy下线:整改NN算子图模式注册与日志规范 Created-by: zhouxuan78 Commit-by: zhouxuan78 Merged-by: cann-robot Description: ## 描述 本 PR 用于 ops-nn 仓 Legacy 下线整改,补齐部分算子的直调/图模式注册、InferShape / InferDataType 拆分、日志规范整改及必要的编译/预提交问题修复。 1. 补齐多个算子的 op_graph 侧 InferDataType / graph infer 注册文件,并同步补充对应 CMakeLists.txt: - 如 FastGeluV2、HardShrinkGrad、HardSigmoidGrad、HardSwish、HardSwishGrad、Selu、SeluGrad、Shrink、SoftplusGrad、SoftplusV2、SoftplusV2Grad、Softsign、SoftsignGrad、SmoothL1Loss、SoftMarginLoss、LpNormUpdateV2、ApplyFtrlV2、ApplyMomentum、ApplyRMSProp 等。 2. 调整部分算子的 op_host infer 文件: - 将 InferDataType 逻辑从 infershape 文件中拆分/迁移到 op_graph 侧; - 保留 InferShape 逻辑,避免 shape/type 混在同一处注册; - 收敛 IndexCheck infershape 日志,仅保留入口日志。 3. 补充 SoftMarginLoss 图模式原型: - 新增 loss/soft_margin_loss/op_graph/soft_margin_loss_proto.h; - 新增 OPS_PROTO_DEF_SOFTMARGINLOSS 去重宏,避免重复注册; - 补充 SoftMarginLoss 的 op_graph/CMakeLists.txt 和 graph infer 注册。 4. 日志整改: - 为 Arch35 tiling 入口补充统一入口日志; - 对本 PR 修改范围内新增/调整的外部输入错误日志,按规范使用 OP_LOGE_FOR_INVALID_* 系列上报接口; - 收敛部分过多的 tiling / infershape 日志打印,避免循环或冗余打印。 5. 回退/收敛不属于本次整改范围的 Softshrink 重命名相关改动: - Softshrink -> SoftShrink 的命名调整不放在本 PR 中,后续单独 PR 处理。 6. 修复 pre-commit 格式问题: - 按仓库 .clang-format 修复格式; - 不修改 .pre-commit-config.yaml。 影响范围 主要影响 activation、index、loss、norm、optim、quant、vfusion 等目录下 Legacy 下线相关算子的 op_graph 注册、InferDataType 拆分、tiling 入口日志和错误日志规范。 ## 变更内容 ## 关联的Issue ## 测试 ## 文档更新 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:Legacy包下线整改 See merge request: cann/ops-nn!8388 | 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 个月前 | |
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 个月前 | |
feat(cmake): prebed include/aicpu path in Findaicpu.cmake Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !9958 merge feat/prebed-include-aicpu-path into master feat(cmake): prebed include/aicpu path in Findaicpu.cmake Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 在 Findaicpu.cmake 中为已安装依赖包构建场景补充 include/aicpu 头文件搜索路径,预埋后续opbase中pkg_inc/aicpu头文件给include/aicpu/路径切换平稳过渡。 ### 变更 cmake if(BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG) set(AICPU_INC_DIRS ... ${ASCEND_DIR}/${SYSTEM_PREFIX}/include/experiment/datagw/aicpu/common ${ASCEND_DIR}/${SYSTEM_PREFIX}/pkg_inc ${ASCEND_DIR}/${SYSTEM_PREFIX}/pkg_inc/aicpu ${ASCEND_DIR}/${SYSTEM_PREFIX}/include/aicpu ← 新增 ) ### 涉及文件 | 文件 | 变更 | 说明 | |------|------|------| | cmake/modules/Findaicpu.cmake | +1 | AICPU_INC_DIRS 追加 include/aicpu 路径 | ## 关联的Issue include path增加一个路径,逻辑简单,不用创建issue了。 ## 测试 相关用例测试通过。 ## 文档更新 NA ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [x] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-nn!9958 | 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 个月前 | |
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 个月前 | |
修复--jit包没有kernel源码无法在线编译,不符合资料的问题 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9952 merge new_set into master 修复--jit包没有kernel源码无法在线编译,不符合资料的问题 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 本 PR 主要解决 JIT 包因缺少 kernel 源码而无法在线编译、与资料描述不符的问题,核心是调整二进制产物构建与算子信息生成的触发条件:将 ENABLE_BINARY 的赋值时机前移到编译选项解析阶段,并取消 build_binary 与 ENABLE_JIT/ENABLE_CUSTOM 的耦合,改为由 ENABLE_BINARY/ENABLE_PACKAGE 驱动,从而保证相关场景下 kernel 二进制能被正确生成; ### 主要改动 * build.sh 中 ENABLE_BINARY 赋值时机前移:在 checkopts() 处理自定义算子编译选项 ops=* 时即置 ENABLE_BINARY=TRUE,删除原先位于 assemble_cmake_args() 中 ENABLE_CUSTOM == TRUE 才置位的逻辑,使二进制构建开关在更早阶段生效。 * build.sh 中 build_binary 触发条件调整:main() 内条件由「ENABLE_BINARY 或 ENABLE_CUSTOM 且 ENABLE_JIT == FALSE」改为「ENABLE_BINARY 或 ENABLE_PACKAGE」,解除了 JIT 场景下不构建二进制的限制,并纳入 ENABLE_PACKAGE 场景。 * cmake/gen_ops_info.cmake 条件收紧:gen_ops_info_and_python 中按计算单元生成算子编译信息的判断由 ENABLE_BINARY OR ENABLE_CUSTOM 改为仅 ENABLE_BINARY,使该流程只受二进制构建开关控制。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9952 | 1 个月前 | |
add extend-conv-transpose-v2 Co-authored-by: YuanTianyi<yuantianyi1@huawei.com> # message auto-generated for no-merge-commit merge: !9823 merge add-extend-conv-transpose-v2 into master add extend-conv-transpose-v2 Created-by: YuanTianyi Commit-by: YuanTianyi Merged-by: cann-robot Description: ## 描述 合入ExtendConvTransposeV2算子,支持双输出功能,支持双路输出传入不同的反量化系数,融合图Dequant/Quant/Requant节点 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5540 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> rdv、自验证用例通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9823 | 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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。