本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix st_950 action Co-authored-by: he_kan<hekan4@huawei.com> # message auto-generated for no-merge-commit merge: !8795 merge ci into master fix st_950 action Created-by: he_kan Commit-by: he_kan Merged-by: cann-robot Description: ## 描述 修复st_950的action中的引号问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8795 | 18 天前 | |
fix(cmake): 消除aicpu目标_GLIBCXX_USE_CXX11_ABI编译宏冲突 intf_pub通过CANN_GLIBCXX_USE_CXX11_ABI target属性驱动ABI值,替代INTERFACE库 硬编码传播,aicpu目标设属性值为1,host侧目标默认为0,消除同一编译命令中 同时出现=0和=1的冲突。删除23个算子op_kernel_aicpu/CMakeLists.txt中的 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)。 | 13 天前 | |
fix(cmake): 恢复tiling_tmp目标_GLIBCXX_USE_CXX11_ABI=0定义 tiling_tmp目标未链接intf_pub变体,移除_GLIBCXX_USE_CXX11_ABI=0后 ABI定义丢失,GCC5+默认使用=1,与原始=0行为不一致 | 13 天前 | |
修改op_resource.h到op_resource_nn.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8788 merge rename_opresource into master 修改op_resource.h到op_resource_nn.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将 common/inc/op_api/op_resource.h 重命名为 common/inc/op_api/op_resource_nn.h,并同步更新文件内部的以下内容: - 文件头注释中的 \file 标识由 op_resource.h 改为 op_resource_nn.h。 - 头文件保护宏由 COMMON_NN_OP_RESOURCE_H 改为 COMMON_NN_OP_RESOURCE_NN_H。 - 文件末尾的 #endif 注释同步更新为 COMMON_NN_OP_RESOURCE_NN_H。 - 顺手修正了 AUTO_GEN_OP_RESOURCE 宏中 #kernelName 一行的缩进,使其与周围代码风格保持一致。 - 文件末尾补充了缺失的换行符。 改动原因:该头文件归属于 ops-nn 仓库,统一采用 _nn.h 命名后缀,可以与其它 op 资源头文件(如 xxx_op_resource.h)在命名上保持清晰区分,避免在整合或外部引用时发生命名冲突。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4955 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 确认重命名后文件内容仅涉及文件名、头文件保护宏和缩进的改动,未修改任何宏逻辑。 - 通过 git show HEAD 复核 diff,确认改动范围与预期一致。 - 全仓搜索 op_resource.h 的引用,确认仓库内源码无 #include "op_resource.h" 的直接引用(仅脚本中存在用于生成/改写的字符串匹配,不受影响)。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:头文件重命名及命名规范调整 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8788 | 14 天前 | |
fix(cmake): 消除aicpu目标_GLIBCXX_USE_CXX11_ABI编译宏冲突 intf_pub通过CANN_GLIBCXX_USE_CXX11_ABI target属性驱动ABI值,替代INTERFACE库 硬编码传播,aicpu目标设属性值为1,host侧目标默认为0,消除同一编译命令中 同时出现=0和=1的冲突。删除23个算子op_kernel_aicpu/CMakeLists.txt中的 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)。 | 13 天前 | |
Conv3D DX/DW算子单仓重名文件修改,arch35与arch22同名头文件添加_arch35后缀避免歧义 Co-authored-by: cheng_gao<cheng.gao@huawei.com> # message auto-generated for no-merge-commit merge: !8907 merge repeat_filename_0819 into master Conv3D DX/DW算子单仓重名文件修改,arch35与arch22同名头文件添加_arch35后缀避免歧义 Created-by: cheng_gao Commit-by: cheng_gao Merged-by: cann-robot Description: ## 描述 Conv3D DX/DW算子单仓重名文件修改,arch35与arch22同名头文件添加_arch35后缀避免歧义 ## 关联的Issue 单仓重名文件整改,不涉及Issue ## 测试 RDV验证 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x ] 其他,请描述:单仓重名文件整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8907 | 14 天前 | |
refactor(unique): move aclnnUnique APIs to owning operator directory Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !8848 merge codex/move-aclnn-unique into master refactor(unique): move aclnnUnique APIs to owning operator directory Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 aclnnUnique 和 aclnnUnique2 当前位于 scatter_elements/op_api 目录,与接口实际归属不一致。本次调整: - 将 aclnnUnique、aclnnUnique2 及共享实现 unique_common 迁移到 unique_consecutive/op_api。 - 将原有 aclnnUniqueConsecutive 及 UniqueConsecutive L0 接口从 unique_consecutive/op_host/op_api 迁移到根级 op_api,统一符合仓库当前目录规范。 - 950 核心路径由 Sort + UniqueConsecutive 实现;UniqueWithCountsAndSorting 保留为不支持 AI Core 路径时的回退实现。 - 同步迁移接口文档、示例、ST 和 UT。 - 将构建入口调整到算子根 CMakeLists.txt,更新依赖、文档索引和 classify_rule.yaml,并移除 scatter_elements 中不再使用的 Unique 依赖。 ## 关联的Issue [#4918](https://gitcode.com/cann/ops-nn/issues/4918) ## 测试 - git diff --check 通过。 - 目录、引用和依赖结构检查通过,旧路径无残留。 - 未运行单元测试。 ## 文档更新 - 迁移 aclnnUnique.md、aclnnUnique2.md。 - 更新 aclnn API 菜单及接口列表链接。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:目录结构调整 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8848 | 14 天前 | |
fix TorchNPU Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !7243 merge master into master fix TorchNPU Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 ① torch_npu名称合一TorchNPU ②《acl API》手册更名修改 ③ link修改commerical为community ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/3951 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7243 | 1 个月前 | |
【社区任务】IndexFillTensor算子新增INT16/INT8/UINT8/INT64/DOUBLE数据类型支持 Co-authored-by: yogstar<yogstar@163.com> # message auto-generated for no-merge-commit merge: !5694 merge submit-IndexFillTensor into master 【社区任务】IndexFillTensor算子新增INT16/INT8/UINT8/INT64/DOUBLE数据类型支持 Created-by: yogstar Commit-by: yogstar Merged-by: cann-robot Description: ## 描述 ## 一、需求背景 ### 1.1 需求来源 通过社区任务完成开源仓算子贡献的需求。扩展 aclnnIndexFillTensor 算子,使其支持 int16, int8, uint8, double 数据类型。 ### 1.2 背景介绍 #### 1.2.1 IndexFill算子现状分析 **1.2.1.1 原 Ascend C 算子支持的数据类型和数据格式** * **支持的数据类型:** FLOAT16、FLOAT、INT32、INT64、BOOL、BFLOAT16 * **支持的数据格式:** ND * **特性分析:** 原有实现主要覆盖了 2B、4B 以及部分原生支持的 8B 类型。对于底层的 Select、CompareScalar 等向量指令,NPU 硬件在原生指令级对 1B(如 int8、uint8)以及非标浮点类型的支持存在局限,直接透传会导致硬件指令报错或编译失败。 **1.2.1.2 原 Ascend C 算子实现描述** 原有 Ascend C 算子采用了泛化的 Tiling 策略,将输入 Tensor 根据计算轴 dim 的位置(是否为尾轴)和数据量大小,拆分为 5 个 tilingKey 分支(front_q, front_n, front_p, tail_n, tail_p)。 在 Kernel 侧的实现逻辑中,所有支持的数据类型在 UB(Unified Buffer)中被统一视作标准位宽数据,按照“搬入索引 -> 构建掩码(Compare 得到 uint8 掩码) -> 搬入原数据 -> 执行 Select 替换 -> 搬出”的单一数据流进行处理。缺乏针对特异性位宽数据(如需要视图转换的 8B 或需要精度转换的 1B)的定制化内存排布与指令流水线设计。 **1.2.1.3 原 Ascend C 算子实现流程图**  ## 二、需求分析 ### 2.1 外部组件依赖 适配 CANN 底层的 ACLNN 算子调用框架,依赖 Ascend C 的 API(如 DataCopy, Select, CompareScalar, Cast, Gather 等)。 ### 2.2 内部适配模块 需要适配 index_fill_tiling.cpp(Host侧)以调整内存空间的预留,并修改所有 Kernel 侧的头文件(如 index_fill_tail_p.h 等)以支持新增的数据类型分支。 ### 2.3 需求模块设计 **2.3.1 Ascend C算子原型** 原型与原算子保持一致,API为 aclnnIndexFillTensor。扩充了其 Input x 和 value,以及 Output y 的 DataType 集合,增加 DT_INT16, DT_INT8, DT_UINT8, DT_DOUBLE。 更新后的算子原型如下,已明确增加对 INT16、INT8、UINT8、DOUBLE 、INT64的支持: | 参数名 | 输入/输出/属性 | 描述 | 使用说明 | 数据类型 | 数据格式 | 维度(shape) | 非连续Tensor | | --- | --- | --- | --- | --- | --- | --- | --- | | self | 输入 | 输入Tensor。 | 待被在指定位置的值用value替换的张量 | FLOAT16、FLOAT、INT32、INT64、BOOL、BFLOAT16、**INT16**、**INT8**、**UINT8**、**DOUBLE** | ND | [1,8] | √ | | dim | 属性 | 指定了self将要填充的维度。 | dim取值范围在[-self.dim(), self.dim()),0维时为[-1, 1) | INT64 | - | - | - | | index | 输入 | 指定self在dim维度将要填充的下标。 | 元素值小于self对应dim的维度大小 | INT32、INT64 | - | - | - | | value | 输入 | 指定填充的数据值。 | 需要可转化为self的数据类型。 | FLOAT16、FLOAT、INT32、INT64、BOOL、BFLOAT16、**INT16**、**INT8**、**UINT8**、**DOUBLE** | - | - | - | | out | 输出 | 指定的输出张量。 | - | 与self一致 | ND | 与self一致 | √ | **2.3.2 Ascend C算子相关约束** * **内存约束:** 针对 8B(double)数据,由于需要利用 ReinterpretCast 翻倍扩展,UB 内存压力剧增。必须通过硬编码缩小 pUbLength 等每次处理的块大小,以防止触发 MPU 越界报错。 * **对齐约束:** CompareScalar 等 Vector 指令要求计算长度必须满足 256 字节(COMPARE_ALIGNED)对齐,否则将触发 VEC supports illegal configurations 硬件拦截。 * **算子泛化:** 必须满足非连续 Tensor 的输入场景。 ## 三、需求详细设计 ### 3.1 使能方式 基于 ACLNN 框架,通过修改 OP Def 定义和算子信息库使能新增的数据类型。 ### 3.2 需求总体设计 #### 3.2.1 Host侧设计 **3.2.1.1 分核策略** 沿用原算子的分核逻辑,通过判定 N >= coreNum * 256 等阈值条件,决定在 P、N 或 Q 轴上进行多核切分。新增数据类型不影响宏观的分核维度。 **3.2.1.2 数据分块和内存优化策略** * **内存池扩容:** 在 Tiling 阶段,由于 8B 数据的特殊处理(掩码对应倍增),需要为 gatherGm 和相关的 Workspace 预留翻倍的内存空间。通过引入 qMultiplier 因子(对于 INT64、UINT64、DOUBLE 设为 2),动态调整 userWorkspaceSize。 * **UB 块划分优化:** 对于 DOUBLE 类型,主动在 Tiling 及 Kernel 初始化阶段压低 ubNBlockLength 或 pUbLength,牺牲单次处理的元素个数,换取 UB 空间的安全,杜绝 OOM。 **3.2.1.3 tilingKey规划策略** 与原有逻辑保持一致,TilingKey 0-4 分别对应大 Q 轴、N 切分(非尾轴)、P 切分(非尾轴)、N 切分(尾轴)和 P 切分(尾轴)。 #### 3.2.2 Kernel侧设计 **3.2.2.1 kernel侧实现描述** 利用 C++ 的模板实例化与 if constexpr (sizeof(T) == X) 进行编译期分支路由,实现数据类型的无感支持: * **针对 1B (int8, uint8) / 2B (int16):** 在 UB 中申请一块连续的 half 内存区域。利用 Cast 指令将 1B 数据提升精度到 half,利用 Select 执行替换后,再使用 Cast 降回 1B 原类型。 * **针对 8B (double):** 采用零拷贝视角的极致优化。使用 ReinterpretCast<float>() 将 8B 数据在视图上变为两倍数量的 4B 浮点数。利用纯 UB 内部的标量循环或 Gather 指令,将原始掩码按元素进行倍增(如 [1, 0] 扩展为 [1, 1, 0, 0])。随后利用 SELMODE::VSEL_TENSOR_TENSOR_MODE 进行 Tensor 到 Tensor 的替换。同时通过 AlignedToTarget 函数严格保证所有向量处理长度对齐到 256 字节。 **3.2.2.2 Ascend C实现流程图**  **“3.2.2.3 Ascend C实现流程图与TBE流程图存在的差异点和原因”** 1. **去 Fallback 化(Host侧差异)**:原设计中因为搞不定 8B 和 1B 在复杂切分下的逻辑,强行将它们打回单核/效率低下的 TilingKey=0。现在将其修改泛化实现,让这些类型拥有和常规数据一样的并发切分能力。 2. **MPU 物理级防护(Device侧差异)**:原版代码默认按照 256KB 的满载算率去分配 N/P 的步长。但在 8B 的双向映射下(掩码和数据都需要倍增扩容),直接导致 MPU 击穿。新的流程图明确展现了通过硬编码防线(pUbLength = 4096)来护航硬件安全的机制。 3. **DataCopy 替代 GM 广播(Device侧差异)**:新的流程图体现了抛弃了原版通过 repeatGm 存在“非 32 字节对齐 GM 覆盖脏写”的情况,转而采用纯 UB 内的 DataCopy 倍增(倍增复制算法),这不仅提升了访存速度,更是保证了绝对的内存安全。 ### 3.3 支持硬件 Atlas A2 训练系列产品 / Atlas A3 系列产品。 ### 3.4 算子约束限制 无特殊业务约束。泛化场景下支持 aclnnIndexFillTensor 的所有标准维度与非连续 Tensor 输入。 ## 四、特性交叉分析 新增数据类型不对原有特性(如 Dim 维度推导、负数索引规整、性能阈值切分等)产生负面交叉影响。由于 8B 处理独立占用编译期分支,原有 FLOAT16/FLOAT 等性能敏感类型的执行流被零开销保留,确保绝对隔离。 ## 五、可维可测分析 ### 5.1 精度标准/性能标准 * **精度标准:** 新增的 int8, uint8, int16, double 精度均通过 AscendOpTest 工具验证,结果精度 100% 对齐 Golden 数据。 * **性能标准:** * int8, uint8, int16 不劣化于 int32 数据类型。 * double 采用纯 UB Reinterpret 倍增方案后,规避了外部 Gather 的 IO 瓶颈,性能不劣化于 int64。 ### 5.2 兼容性分析 修改对原本上层的调用接口 aclnnIndexFillTensor 完全透明,调用方无需修改业务逻辑即可直接传递新类型参数,完全向后兼容。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue #3107 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 进行AscendOpTest测试。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了README.md, aclnnIndexFillTensor.md, aclnnIndexFill.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5694 | 14 天前 | |
feat: rename op_api_def.h to op_api_def_nn.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8360 merge rename_opapidef into master feat: rename op_api_def.h to op_api_def_nn.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 本次改动将 op_api/op_api_def.h 重命名为 op_api/op_api_def_nn.h,并同步更新了所有引用该头文件的源文件与测试文件中的 #include 路径,共涉及 161 个文件。 改动原因:将 op_api 定义头文件统一命名为 op_api_def_nn.h,以更好地体现其所属模块(NN 算子)的语义,便于后续与其他模块的头文件区分管理。 此外,在提交过程中发现 4 个文件(aclnn_foreach_addcmul_scalar_v2.cpp、aclnn_max_unpool3d.cpp、test_aclnn_addmv.cpp、test_aclnn_fast_batchnorm_backward.cpp)的许可证头使用了非标准的旧格式,导致 OAT 合规检查失败。本次一并将其更新为标准的 CANN 开源许可证头格式,确保通过合规校验。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4954 ## 测试 - 通过 pre-commit 钩子校验:trailing whitespace、end-of-file-fixer、clang-format 均通过 - 通过 OAT 合规检查(161 个文件全部通过) - 本次为头文件重命名改动,不涉及逻辑变更,编译依赖关系保持不变 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:头文件重命名与许可证头修复 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8360 | 14 天前 | |
fix schedule mode & embeddingHash Doc & groupNormSilu codecheck Co-authored-by: xieshengwei1024<xieshengwei3@huawei.com> # message auto-generated for no-merge-commit merge: !7076 merge master into master fix schedule mode & embeddingHash Doc & groupNormSilu codecheck Created-by: xieshengwei1024 Commit-by: xieshengwei1024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1.系列SyncAll算子添加scheduleMode 2.embeddingHash算子文档错误修改 3.groupNormSilu修改超大圈复杂度问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联issue3858 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 已进行本地编译测试、ut测试及上板aclnn测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了embeddingHash系列算子的readme文档 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7076 | 1 个月前 | |
fix(cmake): 消除aicpu目标_GLIBCXX_USE_CXX11_ABI编译宏冲突 intf_pub通过CANN_GLIBCXX_USE_CXX11_ABI target属性驱动ABI值,替代INTERFACE库 硬编码传播,aicpu目标设属性值为1,host侧目标默认为0,消除同一编译命令中 同时出现=0和=1的冲突。删除23个算子op_kernel_aicpu/CMakeLists.txt中的 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)。 | 13 天前 | |
fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !8943 merge q_work8 into master fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 CANN 9.0.0 中 ReduceType 枚举移至 AscendC::Reg 命名空间,arch35 算子文件中通过 using namespace AscendC 已无法将 ReduceType 引入当前作用域,导致编译时 ReduceType::SUM/ReduceType::MAX 无法解析。 本次改动将 arch35 目录下 62 个算子头文件中的 ReduceType::SUM(502 处)和 ReduceType::MAX(32 处)显式限定为 AscendC::Reg::ReduceType::SUM 和 AscendC::Reg::ReduceType::MAX,修复编译兼容性问题。 涉及的算子模块:activation、norm、loss、index、quant,均为 arch35 架构专用文件,不影响其他架构。 ## 关联的Issue #4937 ## 测试 在 CANN 9.0.0(ascend950)环境下对 62 个文件涉及的算子进行编译验证,全部编译通过。 ## 文档更新 无文档更新,本次为编译兼容性修复。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8943 | 14 天前 | |
修复 matmul 相关算子的日志规范问题 Co-authored-by: yangyang016<yangyang306@hisilicon.com> # message auto-generated for no-merge-commit merge: !8995 merge master into master 修复 matmul 相关算子的日志规范问题 Created-by: yangyang016 Commit-by: yangyang016 Merged-by: cann-robot Description: ## 描述 本 PR 统一修复 matmul 相关算子的日志规范问题: - 修复 quant_batch_matmul_v3 日志中的拼写错误: - faild 修改为 failed。 - deminsion 修改为 dimension。 - 将 quant_batch_matmul_v3/tests 中含中文字符、中英文混杂的运行时日志统一为英文。 - 删除 sparse4to2quant_matmul/op_host/op_api 中直接使用的 std::cout 调试输出,保留规范的 OP_LOGE 错误日志。 - 按仓库格式要求整理相关 C++ 文件。 本次修改仅涉及日志文本、调试输出及代码格式,不改变算子计算逻辑。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4964 ## 测试 - 扫描 quant_batch_matmul_v3,确认不存在 faild、deminsion。 - 扫描测试运行时日志,确认不存在中文字符。 - 扫描 sparse4to2quant_matmul/op_host/op_api,确认不存在直接使用的 std::cout。 - git diff --check --cached 检查通过。 ## 文档更新 不涉及。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8995 | 14 天前 | |
fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !9003 merge fix-geir-test-log-level-mismatch into master fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 14 个算子 geir 测试文件中日志级别与描述不一致的问题:3 类失败消息被误标记为 INFO,而同文件内其他失败消息均正确标记为 ERROR,构成内部不一致。本次将这 3 类失败消息的日志级别从 INFO 改为 ERROR。 ### 改动原因 geir 测试文件统一使用 printf("%s - LEVEL - [XIR]: message") 格式输出日志。在以下 3 类失败分支中,消息内容明确表示失败,但日志级别却写成 INFO,与同文件内其他失败消息(如 Generate input data failed、Create ir session using build options failed、Session add ir compute graph failed、Output verification FAILED,均标记为 ERROR)不一致,会误导日志排查: - Initialize ge using ge global options failed - Run graph failed - Finalize ir graph session failed ### 改动方法 仅将上述 3 类失败消息的日志级别标签 - INFO - 改为 - ERROR -,不修改任何测试逻辑、消息文本或参数。 ### 涉及文件(每个 3 处,共 42 处,14 文件 +42 -42) - activation/log_softmax_v2 - activation/confusion_softmax_grad - index/broadcast_gradient_args - norm/add_layer_norm_quant - norm/add_rms_norm_dynamic_quant_v2 - norm/batch_norm - norm/group_norm_v2 - norm/instance_norm - norm/layer_norm - norm/layer_norm_v3 - norm/sync_batch_norm_backward_elemt - norm/sync_batch_norm_backward_reduce - norm/sync_batch_norm_gather_stats - norm/sync_bn_training_update ## 关联的Issue - #4973 ## 测试 - 仅日志级别字符串修改,无逻辑变更,不影响测试编译与运行结果。 - 通过 git diff 逐项核对:仅 - INFO - → - ERROR -,消息文本与参数不变。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9003 | 14 天前 | |
修复 InplaceApplyAdagradDA 和 InplaceApplyAdagradV2 在 Ascend950 场景下异常输入校验不完整及 GE IR 异常用例误判的问题 Co-authored-by: zhongheng<m202474569@hust.edu.cn> # message auto-generated for no-merge-commit merge: !8857 merge codex/transfer-test-adagrad-exception-fix into master 修复 InplaceApplyAdagradDA 和 InplaceApplyAdagradV2 在 Ascend950 场景下异常输入校验不完整及 GE IR 异常用例误判的问题 Created-by: zhongheng Commit-by: zhongheng Merged-by: cann-robot Description: ## 描述 修复 InplaceApplyAdagradDA 和 InplaceApplyAdagradV2 在 Ascend950 场景下异常输入校验不完整及 GE IR 异常用例误判的问题。 主要改动如下: 1. 完善 InplaceApplyAdagradDA Host Tiling 校验: - 校验 var Rank 范围为0~8; - 校验所有输入和输出均为 ND format; - 校验 gradient_accumulator、gradient_squared_accumulator、grad 与 var 的 Shape 完全一致; - 校验 lr、l1、l2、global_step 的 Shape 必须为 [1]; - 校验 var、gradient_accumulator、gradient_squared_accumulator、grad、lr、l1、l2 均为 FLOAT/FLOAT16,且 dtype 与 var 一致; - 校验 global_step 为 INT32或INT64。 2. 修正 InplaceApplyAdagradDA 算子信息库签名: - FLOAT、FLOAT16 分别与 INT32、INT64 global_step 组成完整的4组合法签名; - 移除 global_step dtype 与其他输入 dtype 的错误固定配对关系。 3. 完善 InplaceApplyAdagradV2 Host Tiling 校验: - 校验 var Rank 范围为0~8; - 校验所有输入均为 FLOAT; - 校验输入和输出均为 ND format; - 校验 accum、grad 与 var 的 Shape 完全一致; - 校验 lr 的 Shape 必须为 [1]。 4. 完善两个算子的 GE IR example 5. 补充并统一 Ascend950 Host UT,更新 InplaceApplyAdagradDA README 中 global_step dtype组合及0~8维约束。 本 PR 不修改两个算子的 Kernel 计算实现和性能路径。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4666 ## 测试 - Ascend950 Host UT:38/38 PASS - InplaceApplyAdagradDA:22/22 PASS - InplaceApplyAdagradV2:16/16 PASS - GE IR exception:51/51 PASS - InplaceApplyAdagradDA:36/36 PASS - InplaceApplyAdagradV2:15/15 PASS - 41个非法输入在目标 Kernel 前被拒绝; - 10个合法输入或GE自动Cast场景成功执行。 - 静态 GE IR example:PASS。 - 动态 Shape: - unknown-dim -1:两个算子分别3/3 PASS; - unknown-rank [-2]:两个算子分别3/3 PASS。 - TTK Kernel回归: - InplaceApplyAdagradDA:dynamic 520/520 PASS,binary 520/520 PASS; - InplaceApplyAdagradV2:dynamic 497/497 PASS、binary 497/497。 - Ascend950 JIT包生成成功、SHA256校验成功,并在独立目录安装成功。 - pre-commit、clang-format、codespell、OAT、git diff check全部通过。 - 冒烟通过 ## 文档更新 更新 optim/inplace_apply_adagrad_da/README.md: - 明确 global_step 在FLOAT/FLOAT16输入下均支持INT32、INT64; - 将输入维度范围明确为0~8维。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8857 | 13 天前 | |
fix(cmake): 消除aicpu目标_GLIBCXX_USE_CXX11_ABI编译宏冲突 intf_pub通过CANN_GLIBCXX_USE_CXX11_ABI target属性驱动ABI值,替代INTERFACE库 硬编码传播,aicpu目标设属性值为1,host侧目标默认为0,消除同一编译命令中 同时出现=0和=1的冲突。删除23个算子op_kernel_aicpu/CMakeLists.txt中的 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)。 | 13 天前 | |
fix: 移除elu_grad_v2和grouped_dynamic_mx_quant的重复op_api头文件并修正测试include路径 Co-authored-by: wenqi_wu<wenqiwu0628@163.com> # message auto-generated for no-merge-commit merge: !8610 merge fix/remove-duplicate-op-api-headers into master fix: 移除elu_grad_v2和grouped_dynamic_mx_quant的重复op_api头文件并修正测试include路径 Created-by: wenqi_wu Commit-by: wenqi_wu Merged-by: cann-robot Description: ## 描述 移除 elu_grad_v2 和 grouped_dynamic_mx_quant 两个算子在 op_host/op_api/ 目录下的重复头文件,并修正对应 UT 测试文件的 include 路径,统一指向规范位置 op_api/。 ### 改动原因 经 git ls-tree 比对,op_host/op_api/ 下的头文件与 op_api/ 下的同名文件 blob hash 完全一致,属内容完全相同的重复副本。重复头文件会导致: - include 路径歧义(测试代码引用了重复副本而非规范位置) - 潜在 ODR(单一定义规则)冲突风险 - 维护成本增加(修改需同步两处) ### 改动方法 1. 删除 activation/elu_grad_v2/op_host/op_api/ 下 2 个重复头文件: - aclnn_elu_backward.h(与 op_api/aclnn_elu_backward.h blob 一致:2508e099...) - elu_grad_v2.h(与 op_api/elu_grad_v2.h blob 一致:0f8740b1...) 2. 删除 quant/grouped_dynamic_mx_quant/op_host/op_api/ 下 3 个重复头文件: - aclnn_grouped_dynamic_mx_quant.h(blob 一致:1cf0b8cc...) - aclnn_grouped_dynamic_mx_quant_v2.h(blob 一致:18aacd89...) - grouped_dynamic_mx_quant.h(blob 一致:2324f36c...) 3. 修正 2 个 UT 测试文件的 include 路径: - test_aclnn_elu_backward.cpp:../../../op_host/op_api/aclnn_elu_backward.h → ../../../op_api/aclnn_elu_backward.h - test_aclnn_grouped_dynamic_mx_quant.cpp:../../../op_host/op_api/aclnn_grouped_dynamic_mx_quant.h → ../../../op_api/aclnn_grouped_dynamic_mx_quant.h ## 关联的Issue #4922 ## 测试 - 更新了 test_aclnn_elu_backward.cpp 和 test_aclnn_grouped_dynamic_mx_quant.cpp 的 include 路径,指向规范的 op_api/ 头文件位置 - 删除的文件与保留文件内容完全一致(git blob hash 相同),不影响编译产物 ## 文档更新 无需更新文档 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8610 | 14 天前 | |
feat: rename op_api_def.h to op_api_def_nn.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8360 merge rename_opapidef into master feat: rename op_api_def.h to op_api_def_nn.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 本次改动将 op_api/op_api_def.h 重命名为 op_api/op_api_def_nn.h,并同步更新了所有引用该头文件的源文件与测试文件中的 #include 路径,共涉及 161 个文件。 改动原因:将 op_api 定义头文件统一命名为 op_api_def_nn.h,以更好地体现其所属模块(NN 算子)的语义,便于后续与其他模块的头文件区分管理。 此外,在提交过程中发现 4 个文件(aclnn_foreach_addcmul_scalar_v2.cpp、aclnn_max_unpool3d.cpp、test_aclnn_addmv.cpp、test_aclnn_fast_batchnorm_backward.cpp)的许可证头使用了非标准的旧格式,导致 OAT 合规检查失败。本次一并将其更新为标准的 CANN 开源许可证头格式,确保通过合规校验。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4954 ## 测试 - 通过 pre-commit 钩子校验:trailing whitespace、end-of-file-fixer、clang-format 均通过 - 通过 OAT 合规检查(161 个文件全部通过) - 本次为头文件重命名改动,不涉及逻辑变更,编译依赖关系保持不变 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:头文件重命名与许可证头修复 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8360 | 14 天前 | |
kernel编译配置项优化 Co-authored-by: XianyongWang<aaronhkw@163.com> # message auto-generated for no-merge-commit merge: !8811 merge feat/conv-kernel-compile-opt into master kernel编译配置项优化 Created-by: XianyongWang Commit-by: XianyongWang Merged-by: cann-robot Description: ## 描述 在算子的kernel目录下,增加对应的makefile文件,利用add_kernel_sources函数,参考原本的若干个配置文件设置编译参数,同时删除原配置文件/配置项,实现算子编译配置就近管理,符合ops-nn仓的统一规范。 ## 关联的Issue 关联Issue [#4857](https://gitcode.com/cann/ops-nn/issues/4857) ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8811 | 14 天前 | |
kernel ut 增加防卡死超时,快速模式,覆盖率控制 Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !8187 merge master into master kernel ut 增加防卡死超时,快速模式,覆盖率控制 Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 提交总结:kernel ut 增加防卡死超时、快速模式、覆盖率控制 **修改背景**:Kernel UT 存在单测卡死导致整套测试挂起、运行慢(addr2line 符号化耗时)、gcov 覆盖率始终链接带来不必要开销等问题。 **修改方案**: 1. **防卡死超时**:新增 run_kernel_ut.sh,按 case 逐个执行并用 timeout 限时(默认 120s,--ut_timeout 可配),超时即标记失败并继续,避免单点卡死阻塞全流程。 2. **快速模式**:新增 --ut_mode=fast/debug。fast 模式关闭符号化(注入 fake addr2line 跳过慢解析)、改用 -g0 -O2,用于快速验证;debug 模式保留 -g 与符号化,用于开发调试。 3. **覆盖率控制**:将 ut.cmake 中 gcov 的无条件链接改为 $<$<BOOL:${ENABLE_COVERAGE}>:gcov> 条件链接,仅在开启覆盖率时引入; 4. **修复失败的kernel ut**:TensorFlow 依赖替换为md_dtypes, 修复部分block 越界,缺少SetKernelMode 设置导致核获取错误等问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4606 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 通过kernel ut 测试,bash build.sh -u --opkernel --ut_mode=fast --ut_timeout=60 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8187 | 28 天前 | |
DequantSituQuant和SituMxQuant算子实现及torch extension适配 Co-authored-by: demoauguste<zhanghao418@huawei.com> # message auto-generated for no-merge-commit merge: !8798 merge master into master DequantSituQuant和SituMxQuant算子实现及torch extension适配 Created-by: demoauguste Commit-by: demoauguste Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 实现DequantSituQuant和SituMxQuant算子,并适配torch extension接口。 torch接口评审:https://gitcode.com/cann/ops-nn/issues/4749 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4850 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 自测试结果如下:  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8798 | 16 天前 | |
modified md files (aclnnMultiScaleDeformableAttentionGrad.md and aclnnLinalgVectorNorm.md) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !8458 merge master into master modified md files (aclnnMultiScaleDeformableAttentionGrad.md and aclnnLinalgVectorNorm.md) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 - aclnnMultiScaleDeformableAttentionGrad supports A5, updates aclnnMultiScaleDeformableAttentionGrad, the corresponding README.md for the operator, and op_api_list.md. - Updates the return codes in aclnnLinalgVectorNorm.md. ## 关联的Issue [#4474](https://gitcode.com/cann/ops-nn/issues/4474) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 docs/zh/op_api_list.md vfusion/multi_scale_deformable_attention_grad/README.md vfusion/multi_scale_deformable_attention_grad/docs/aclnnMultiScaleDeformableAttentionGrad.md norm/lp_norm_v2/docs/aclnnLinalgVectorNorm.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8458 | 24 天前 | |
修改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 | 1 个月前 | |
index kernel ut Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !5501 merge master into master index kernel ut Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Kernel UT 中存在大量分散的测试数据准备代码,使用 system() 调用执行 shell 命令: 重复样板代码多:至少 131 个文件包含 system() 调用 依赖 GNU/Linux 工具:cp、chmod、rm、get_current_dir_name(非跨平台) 错误定位困难:system() 返回码粗糙,无法区分路径错误、权限问题、Python缺失等 维护成本高:同一套逻辑散落在大量算子测试中 修改方案 统一测试数据生命周期管理:拷贝、清理、生成、比对 改善报错体验:使用项目标准日志宏 OP_LOGI/OP_LOGE,区分路径错误、脚本执行失败等 降低贡献门槛:开发者只需声明数据目录和参数 本次修改对index 目录下的部分算子 迁移过程中 代码格式做整改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/2337 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5501 | 3 个月前 | |
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 | 16 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
refactor: init_cann_project() 移至 dependencies.cmake 之后调用 Co-authored-by: zhaoyingdong<zhaoyingdong@huawei.com> # message auto-generated for no-merge-commit merge: !8702 merge master into master refactor: init_cann_project() 移至 dependencies.cmake 之后调用 Created-by: zhaoyingdong Commit-by: zhaoyingdong Merged-by: cann-robot Description: ## 描述 refactor: init_cann_project() 移至 dependencies.cmake 之后调用 add_cann_third_party()依赖init_cann_project() 中的变量,所以需要放到add_cann_third_party()前面 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x ] AI辅助编写 See merge request: cann/ops-nn!8702 | 21 天前 | |
产品文档中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 | 30 天前 | |
init | 10 个月前 | |
add hard_sigmoid for ascend950 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !7874 merge master into master add hard_sigmoid for ascend950 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> add hard_sigmoid for ascend950 hard_sigmoid适配950 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT/ST pass ; ops-test-kit 测试900+ 用例pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> activation/hard_sigmoid/README.md activation/hard_sigmoid/docs/aclnnHardsigmoid&aclnnInplaceHardsigmoid.md docs/zh/op_api_list.md docs/zh/op_api_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7874 | 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 | 28 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
fix Third_Party_Open_Source_Software_List.yaml Co-authored-by: liuyufan0725<liuyufan9@huawei.com> # message auto-generated for no-merge-commit merge: !1879 merge fix_yaml into master fix Third_Party_Open_Source_Software_List.yaml Created-by: liuyufan0725 Commit-by: liuyufan0725 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新三方依赖清单Third_Party_Open_Source_Software_List.yaml 1、增加protobuf 2、将nlohmann/json修改为json ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#1042](https://gitcode.com/cann/ops-nn/issues/1042) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了Third_Party_Open_Source_Software_List.yaml ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1879 | 6 个月前 | |
【描 述】 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 | 6 个月前 | |
修复matmul ut 编译失败的问题 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !8409 merge master into master 修复matmul ut 编译失败的问题 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 1. 删除冗余的测试代码 2. build.sh build ut 增加-k,即使ut失败,任可以继续构建,最后报错 ## 关联的Issue [#4734](https://gitcode.com/cann/ops-nn/issues/4734) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8409 | 23 天前 | |
refactor(unique): move aclnnUnique APIs to owning operator directory Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !8848 merge codex/move-aclnn-unique into master refactor(unique): move aclnnUnique APIs to owning operator directory Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 aclnnUnique 和 aclnnUnique2 当前位于 scatter_elements/op_api 目录,与接口实际归属不一致。本次调整: - 将 aclnnUnique、aclnnUnique2 及共享实现 unique_common 迁移到 unique_consecutive/op_api。 - 将原有 aclnnUniqueConsecutive 及 UniqueConsecutive L0 接口从 unique_consecutive/op_host/op_api 迁移到根级 op_api,统一符合仓库当前目录规范。 - 950 核心路径由 Sort + UniqueConsecutive 实现;UniqueWithCountsAndSorting 保留为不支持 AI Core 路径时的回退实现。 - 同步迁移接口文档、示例、ST 和 UT。 - 将构建入口调整到算子根 CMakeLists.txt,更新依赖、文档索引和 classify_rule.yaml,并移除 scatter_elements 中不再使用的 Unique 依赖。 ## 关联的Issue [#4918](https://gitcode.com/cann/ops-nn/issues/4918) ## 测试 - git diff --check 通过。 - 目录、引用和依赖结构检查通过,旧路径无残留。 - 未运行单元测试。 ## 文档更新 - 迁移 aclnnUnique.md、aclnnUnique2.md。 - 更新 aclnn API 菜单及接口列表链接。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:目录结构调整 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8848 | 14 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 1 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 1 个月前 | |
Remove the dependency asc-tool Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !5220 merge eng into master Remove the dependency asc-tool Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 Remove the dependency asc-tool ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 工程编译验证 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5220 | 3 个月前 |
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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。