本项目是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 | 28 天前 | |
修复SwigluGroup/Quant文档和空Tensor问题 Co-authored-by: taochangmin<taochangmin@huawei.com> # message auto-generated for no-merge-commit merge: !8708 merge master into master 修复SwigluGroup/Quant文档和空Tensor问题 Created-by: taochangmin Commit-by: taochangmin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复SwigluGroup和SwigluGroupQuant文档、tiling校验和空Tensor问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4949 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ut、st测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> activation/swiglu_group/README.md activation/swiglu_group/docs/aclnnSwigluGroup.md activation/swiglu_group/docs/torchapi_swiglu_group.md activation/swiglu_group_quant/README.md activation/swiglu_group_quant/docs/aclnnSwigluGroupQuant.md activation/swiglu_group_quant/docs/torchapi_swiglu_group_quant.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8708 | 24 天前 | |
update: dlog头文件查找路径变更,更新文件 Finddlog.cmake Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !8791 merge ops-nn-patch-1 into master update: dlog头文件查找路径变更,更新文件 Finddlog.cmake Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次变更适配 dlog 头文件目录调整,更新 cmake/modules/Finddlog.cmake 中 DLOG_HEAD_SEARCH_PATHS 的 CI 编译搜索路径: - 将 ${TOP_DIR}/abl/slog/inc/toolchain 替换为 ${TOP_DIR}/runtime/pkg_inc/base。 - 保留现有 Ascend 安装目录下的 toolchain/pkg_inc/base 查找路径,确保 dlog 头文件可从新的 runtime 包结构中定位。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 无 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 已验证构建出包正常,确认更新后的 dlog 头文件搜索路径可满足编译查找。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:构建配置适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8791 | 28 天前 | |
修改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 | 24 天前 | |
nn仓rnn 、vfusion、control文件夹打标签 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !8342 merge master into master nn仓rnn 、vfusion、control文件夹打标签 Created-by: yanglu-1 Commit-by: yanglu-1;y60124828 Merged-by: cann-robot Description: ## 描述 nn仓rnn 、vfusion、control文件夹打标签 ## 关联的Issue 例如:关联Issue [#4600](https://gitcode.com/cann/ops-nn/issues/4600) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8342 | 1 个月前 | |
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 | 24 天前 | |
新增算子cross_entropy_sum_exp_and_index_logit Co-authored-by: jzj007<jiangzhijie9@huawei.com> # message auto-generated for no-merge-commit merge: !8205 merge cross_entropy into master 新增算子cross_entropy_sum_exp_and_index_logit Created-by: jzj007 Commit-by: jzj007 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增算子 面向 vocab 并行(Tensor Parallel)场景的 CrossEntropy 本地计算融合算子。对按 vocab 维切分后的 TP rank 本地 logits,在 all_reduce(MAX) 之后、predicted_logits / sum_exp_logits 的 all_reduce(SUM) 之前,一次性完成 logits 平移(减全局最大值)、target 越界 mask 判定、本地 target offset 计算、target 对应 logit 的 gather,以及 exp 与沿 vocab 维的本地求和,降低小算子 launch、GM 读写和中间 tensor materialization 开销。面向超大词表大模型训练场景。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#4858](https://gitcode.com/cann/ops-nn/issues/4858) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本地完成ut测试、ttk各种通路的st测试,torchapi接口通路测试。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增算子接口文档aclnnCrossEntropySumExpAndIndexLogit.md、torchapi_cross_entropy_sum_exp_and_index_logit.md、README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8205 | 24 天前 | |
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 | 2 个月前 | |
【社区任务】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 | 24 天前 | |
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 | 24 天前 | |
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 | 2 个月前 | |
ScatterNdAdd perf Co-authored-by: lihang_13123<lihang106@h-partners.com> # message auto-generated for no-merge-commit merge: !8891 merge scatter_update into master ScatterNdAdd perf Created-by: lihang_13123 Commit-by: lihang_13123 Merged-by: cann-robot Description: ## 描述 1、优化ScatterNdAdd在索引无重复场景下simd模板的性能,预期对应场景性能提升3倍以上 2、修复simd模板非排序分支精度问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 批量验证OK,冒烟OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8891 | 24 天前 | |
新增算子cross_entropy_sum_exp_and_index_logit Co-authored-by: jzj007<jiangzhijie9@huawei.com> # message auto-generated for no-merge-commit merge: !8205 merge cross_entropy into master 新增算子cross_entropy_sum_exp_and_index_logit Created-by: jzj007 Commit-by: jzj007 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增算子 面向 vocab 并行(Tensor Parallel)场景的 CrossEntropy 本地计算融合算子。对按 vocab 维切分后的 TP rank 本地 logits,在 all_reduce(MAX) 之后、predicted_logits / sum_exp_logits 的 all_reduce(SUM) 之前,一次性完成 logits 平移(减全局最大值)、target 越界 mask 判定、本地 target offset 计算、target 对应 logit 的 gather,以及 exp 与沿 vocab 维的本地求和,降低小算子 launch、GM 读写和中间 tensor materialization 开销。面向超大词表大模型训练场景。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#4858](https://gitcode.com/cann/ops-nn/issues/4858) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本地完成ut测试、ttk各种通路的st测试,torchapi接口通路测试。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增算子接口文档aclnnCrossEntropySumExpAndIndexLogit.md、torchapi_cross_entropy_sum_exp_and_index_logit.md、README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8205 | 24 天前 | |
fix log | 24 天前 | |
fix(log): 修复 batch_norm/group_norm/instance_norm 系列算子日志格式名错乱、参数名错误及拼写问题 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !8734 merge fix/norm-batch-group-instance-log-quality into master fix(log): 修复 batch_norm/group_norm/instance_norm 系列算子日志格式名错乱、参数名错误及拼写问题 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 本PR对 ops-nn 仓库中 batch_norm / group_norm / instance_norm 系列算子的日志消息进行质量修复,仅修改日志字符串,不涉及任何功能逻辑变更。 ### 改动原因 代码审计发现该系列算子日志存在5D格式名错乱(H/W字母互换)、广播日志参数名错误、截断的op名、拼写错误等问题。 ### 改动方法 - aclnn_batch_norm.cpp:169-185 — "NCDWH" → "NCDHW"(4处)、"NDWHC" → "NDHWC"(2处) - aclnn_batch_norm_backward.cpp:183,190 — "NCDWH" → "NCDHW"、"NDWHC" → "NDHWC" - batch_norm_grad_v3_base_tiling.cpp:159 — "HCDHW" → "NDHWC" - batch_norm_grad_v3_tiling_infer_base.cpp:184 — "HCDHW" → "NDHWC" - batch_norm_grad_tiling.cpp:190 — 日志参数 "inputParamNames[i]" → "outputParamNames[i]"(输出shape校验循环) - group_norm_grad_empty_tiling_arch35.cpp:337 — "CalcuTilingData" → "CalculateTilingData" - group_norm_grad_tiling_arch35.cpp:61 — "initing" → "initializing";:788 — 日志标签 "nMainFlodCount" → "nMainFoldCount" - group_norm_grad_tiling.cpp:483 — "initing" → "initializing" - instance_norm_tiling_base_arch35.cpp:241 — "betta" → "beta";:247 — "varience" → "variance";:322 — "Betta" → "Beta" ## 关联的Issue #4816 ## 测试 本次修改仅涉及日志字符串,不影响算子功能逻辑,无需额外功能测试。 ## 文档更新 无文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8734 | 24 天前 | |
[CANNBot] 修复apply_keras_momentum标量输入时shape(var)!=shape(accum)的tiling报错 Co-authored-by: chen_chenn<chenchen167@huawei.com> # message auto-generated for no-merge-commit merge: !8913 merge fix_applyKerasMomentum into master [CANNBot] 修复apply_keras_momentum标量输入时shape(var)!=shape(accum)的tiling报错 Created-by: chen_chenn Commit-by: chen_chenn Merged-by: cann-robot Description: ## 描述 修复apply_keras_momentum标量输入时shape(var)!=shape(accum)的tiling报错 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4914 ## 测试 TTK ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8913 | 25 天前 | |
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 | 24 天前 | |
规范ActULQClampMaxGrad与ActsULQInputGrad的文件去重宏与原型去重宏 Co-authored-by: Coder_Nerd<shishuai5@huawei.com> # message auto-generated for no-merge-commit merge: !8894 merge master into master 规范ActULQClampMaxGrad与ActsULQInputGrad的文件去重宏与原型去重宏 Created-by: Coder_Nerd Commit-by: Coder_Nerd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ActULQClampMaxGrad与ActsULQInputGrad算子的算子原型的原型去重宏与文件去重宏使用不规范,新增 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4674 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8894 | 24 天前 | |
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 | 24 天前 | |
修改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 | 24 天前 | |
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 | 1 个月前 | |
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 | 26 天前 | |
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 | 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 | 2 个月前 | |
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 | 26 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 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 | 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 | 1 个月前 | |
init | 11 个月前 | |
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 | 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 | 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 | 1 个月前 | |
去重index-c的classify rule Co-authored-by: yue-ma<mayue54@huawei.com> # message auto-generated for no-merge-commit merge: !8947 merge master_bak into master 去重index-c的classify rule Created-by: yue-ma Commit-by: yue-ma Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 去重index-c的classify rule ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4824 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8947 | 25 天前 | |
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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。