本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
修改编译任务 Co-authored-by: chenyajie<chenyajie6@huawei.com> # message auto-generated for no-merge-commit merge: !7462 merge master into master 修改编译任务 Created-by: yajie_caroline Commit-by: chenyajie Merged-by: cann-robot Description: ## 描述 修改代码话编译任务始终跳过不跑的bug ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4069 ## 测试 在测试环境中验证修改过后可以正常识别条件跑编译 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7462 | 1 个月前 | |
fix:HardSwishGradV2,HardSigmoid,ApplyAdagrad,InplaceSub算子golden更新 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !8478 merge master into master fix:HardSwishGradV2,HardSigmoid,ApplyAdagrad,InplaceSub算子golden更新 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> HardSwishGradV2,HardSigmoid,ApplyAdagrad,InplaceSub算子golden更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> HardSwishGradV2,HardSigmoid,ApplyAdagrad,InplaceSub:golden验证OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8478 | 29 天前 | |
support soc suffix Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !8400 merge patch into master support soc suffix Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 支持soc指定950后缀 ophost、opapi、opgraph添加-Wno-error=deprecated-declarations 此 PR 主要实现了对 SoC 后缀的匹配支持,并优化了编译配置。build.sh 中将 SoC 参数匹配方式从严格全名匹配改为前缀匹配,新增 ascend350 支持并标注不区分大小写,同时在 assemble_cmake_args 中增加了 COMPUTE_UNIT_SHORT 的去重逻辑。cmake/dependencies.cmake 中新增 -Wno-error=deprecated-declarations 编译选项,将废弃声明相关的警告从错误降级。 主要改动 SoC 前缀匹配支持:build.sh 使用说明中将 SoC 参数从严格枚举(must only in)改为前缀匹配(supported prefixes),新增 ascend350 并标注 case-insensitive,使 --soc 参数可通过前缀灵活指定目标芯片。 COMPUTE_UNIT_SHORT 去重逻辑:assemble_cmake_args 函数中在拼接 COMPUTE_UNIT_SHORT 前增加了重复检查(if [[ ";${COMPUTE_UNIT_SHORT};" != *";${support_unit};"* ]]),防止同一计算单元被重复添加。 抑制废弃声明编译错误:cmake/dependencies.cmake 中为 OPS_NN_CXX_FLAGS 追加了 -Wno-error=deprecated-declarations,将 deprecated-declarations 警告降级为非错误,避免因依赖库中的废弃接口导致编译失败。 ## 关联的Issue [#4661](https://gitcode.com/cann/ops-nn/issues/4661) ## 测试 编译时指定--soc=ascend950,ascend950PR_9599 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8400 | 28 天前 | |
refactor: 迁移 AnchorResponseFlags 算子到 ops-cv 仓 Co-authored-by: yu_qinfei<yuqinfei1@h-partners.com> # message auto-generated for no-merge-commit merge: !8194 merge migrate-anchor-response-flags-to-cv into master refactor: 迁移 AnchorResponseFlags 算子到 ops-cv 仓 Created-by: yu_qinfei Commit-by: yu_qinfei Merged-by: cann-robot Description: ## 描述 AnchorResponseFlags算子实现在cv仓, 需将onnx插件同步迁移至cv仓 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4607 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8194 | 1 个月前 | |
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 个月前 | |
【Conv3DDX】Tque改造为Tbuf Co-authored-by: shenchengzong<shenchengzong1@huawei.com> # message auto-generated for no-merge-commit merge: !8276 merge scz_dev_0805 into master 【Conv3DDX】Tque改造为Tbuf Created-by: shenchengzong Commit-by: shenchengzong Merged-by: cann-robot Description: ## 描述 【Conv3DDX】L1搬运过程中TQue改造为Tbuf <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#4647](https://gitcode.com/cann/ops-nn/issues/4647) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 涉及芯片版本RDV、daily均执行通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8276 | 1 个月前 | |
matmulEmuSplitWeight统一整改 Co-authored-by: wuyufei<wuyufei13@huawei.com> # message auto-generated for no-merge-commit merge: !8404 merge question into master matmulEmuSplitWeight统一整改 Created-by: wuyufei Commit-by: wuyufei Merged-by: cann-robot Description: ## 描述 变更摘要 本次 PR 对 MatmulEmuSplitWeight 算子进行统一整改,核心是移除不再需要的 SimplifiedKey 生成机制和独立的数据类型推断(InferDataType)逻辑,同时清理算子原型头文件中的冗余注释与约束描述。 主要改动 移除 GenSimplifiedKey 函数及其关联逻辑:删除了 matmulemusplitweight_simplifiedkey.h 整个文件(含 GenSimplifiedKey 函数实现),在 matmul_emu_split_weight_tiling.cpp 中移除 .GenSimplifiedKey(...) 注册,并在 matmul_emu_split_weight_binary.json 中移除 simplified_key 配置字段,统一取消 SimplifiedKey 生成链路。 移除 InferDataType 函数及注册:在 matmul_emu_split_weight_infershape.cpp 中删除 InferDataTypeForMatmulEmuSplitWeight 函数体和 .InferDataType(...) 链式注册,同时移除对应的单测用例 MatmulEmuSplitWeight_InferDtype_case_0,将数据类型推断从显式注册中剥离。 精简算子原型头文件注释:在 matmul_emu_split_weight_proto.h 中删除输入/输出描述中的冗余模板文字(如 "Must be one of the following types:" 改为更简洁的 "The types supports"),并移除整个 [@par](https://gitcode.com/par) Constraints 约束段落,不再在注释中枚举 Ascend 950 系列平台的张量形状、格式等限制条件。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4659 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8404 | 28 天前 | |
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 个月前 | |
feat(TurboQuantCompressLatent): 新增MLA KV latent的TurboQuant 4bit压缩算子AscendC实现 Co-authored-by: chen-weipeng12<chenweipeng12@huawei.com> # message auto-generated for no-merge-commit merge: !8222 merge feat/turbo-quant-compress-latent into master feat(TurboQuantCompressLatent): 新增MLA KV latent的TurboQuant 4bit压缩算子AscendC实现 Created-by: chen-weipeng12 Commit-by: chen-weipeng12 Merged-by: cann-robot Description: ## 描述 新增 experimental 算子 experimental/quant/turbo_quant_compress_latent/,为 **Atlas A2(ascend910b)/ Atlas A3(ascend910_93)** 提供 TurboQuantCompressLatent 的原生实现 —— 把 MLA(Multi-head Latent Attention)的 KV latent 按 token 压缩成 TurboQuant 4bit slot: norm_i = sqrt(sum_d latent[i][d]^2 + eps) u[i][d] = latent[i][d] / norm_i nibble = argmin_c |u[i][d] - centroids[c]| (16 级 Lloyd-Max 码本) slot[i][k] = nibble[i][2k] | (nibble[i][2k+1] << 4) (低位 nibble 对应偶数维) slot[i][headDim/2 : headDim/2+2] = float16(norm_i) **改动原因**:MLA 的 KV cache 以 latent 形式驻留,是长序列推理的显存主要占用方。把 latent 由 bf16 压到 4bit 可显著提升 KV 池容量,但当前 CANN 部署包在 ascend910b 上没有可直调的同语义内置算子(aic-ascend910b-ops-info-*.json 中无该 OpType,也无对应 aclnn 头文件),仓内亦无同语义实现 —— 存在实现空缺。 **采取的方法**: - **op_kernel**:AscendC 逐 token kernel。多核按 token 均分,单核内 TQue 双缓冲搬入 latent,规约求 L2 范数 → 取倒数 → 缩放 → 码本最近邻搜索 → 打包 → 写回 slot。两个实现要点: 1. **最近邻搜索写成无分支的"数边界"形式**。码本升序,相邻中心取中点得到 15 条单调递增的边界,nibble[d] = #{b : u[d] >= bnd[b]} 恰好等于 argmin_c |u[d] - centroids[c]|。之所以不用查表,是 Vector 单元没有便宜的"每 lane 按变量下标查 16 项表"的 gather;仓内的 index/bucketize_v2 虽是二分查找,但依赖 per-lane gather,只在 Ascend 950 提供。 2. **打包复用 int4b_t 的硬件 Cast**。nibble 先映射成有符号的 [-8, 7],转 half 后由 Cast(half -> int4b_t) 按低位在前直接打包,无需逐位移位。 - **op_host**:算子 def(AddConfig("ascend910b") / AddConfig("ascend910_93"))、infershape(按 headDim 泛化推导 slotSize = alignUp(headDim/2 + 2, 64))、tiling(多核切分 + 尾块处理 + tokensPerBatch 批大小决策,把多个 token 折进同一条向量指令以摊薄指令发射开销),以及 config/ascend910b/、config/ascend910_93/ binary config。 - **op_api**:两段式 aclnnTurboQuantCompressLatentGetWorkspaceSize + aclnnTurboQuantCompressLatent(含 L0 接口)。 - **op_graph**:proto + graph converter,支持 GE 图模式调用。 - **torch_extension**:torch.ops.cann_ops_nn.turbo_quant_compress_latent 单算子接入与图模式 converter。 **改动范围**:**31 个文件、+2352 行 —— 30 个为纯新增,1 个为既有文件修改**。唯一被修改的既有文件是顶层 quant/__init__.py(+2 行的 PyTorch 侧登记)。该登记只能写在这里:torch_extension/setup.py 打包时把 experimental/quant/<op> 映射为 ops/quant/<op>,而 ops/quant/__init__.py 的唯一来源就是顶层 quant/__init__.py。除此之外不修改仓库中任何既有文件。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4391 ## 测试 以下验证均在 **Atlas A2(910B4,40 个 Vector 核,UB 192 KB)** 实机环境完成,CANN 9.0.1。A3 与 A2 同属 arch22、复用同一份 kernel 与 binary config,本次未单独上板实测。 ### 构建 bash build.sh --pkg --soc=ascend910b --ops=turbo_quant_compress_latent --experimental --vendor_name=customize ### UT | 套件 | 结果 | |---|---| | tests/ut/op_host(tiling + infershape) | **17/17 PASS** | | tests/ut/op_kernel(CPU 孪生 ICPU_RUN_KF,跑真实 kernel) | **15/15 PASS** | 覆盖多核切分与批处理的全部控制流分支、空 Tensor、均匀 [-5,5] 与正态 μ∈[-5,5]/σ∈[0.1,2] 两种值域,以及 NaN / +INF / -INF / 混合非有限输入。 ### 精度 golden 脚本随算子一并交付、可复现: tests/ut/op_kernel/turbo_quant_compress_latent_data/{gen_data.py, compare_data.py} golden 按 kernel 的运算顺序逐条复刻(规约 → 取倒数 → 缩放 → 中点计数 → 打包)。本算子输出为 uint8(打包的 4bit 索引 + float16 范数),属整型计算类,判据取**逐字节相等**而非 atol/rtol —— 对码本索引而言差 1 即选中了另一个码本中心。 - op_kernel UT 15 条:全部与 golden 逐字节相等。 - 真机上板 numTokens 取 1 2 3 4 8 12 16 20 24 28 40 41 64 127 128 512 1000 1024 2048 4096 4097 8192 16384:全部与 golden 逐字节相等,填充区全零。 ### aclnn 接口调用 bash build.sh --run_example turbo_quant_compress_latent eager cust --vendor_name=customize 两段式接口调用成功。 ### 性能(vs DynamicQuant INT4) torch_npu.profiler,warmup 5 / active 10~15,取 kernel_details.csv 中 Duration(us) 最小值,headDim 固定 512。 仓内 DynamicQuant 在 dst_type 取 INT4 时同为"张量进、4bit + scale 出"的 per-token 压缩,是唯一无融合的同类算子,故作为量级参照。两者语义不同、不能互相替换:DynamicQuant 是均匀仿射量化(per-token max-abs 求 scale 后取整),本算子是 16 级码本最近邻搜索(需 15 轮串行比较/选择/累加),计算量本身高一个量级。 | numTokens | TurboQuantCompressLatent | DynamicQuant(INT4) | 倍数 | | ---: | ---: | ---: | ---: | | 1 | 4.38 us | 2.76 us | 1.6× | | 32 | 5.32 us | 3.78 us | 1.4× | | 128 | 6.72 us | 4.18 us | 1.6× | | 512 | 12.86 us | 5.64 us | 2.3× | | 1024 | 20.22 us | 7.60 us | 2.7× | | 4096 | 64.22 us | 13.70 us | 4.7× | | 16384 | 242.62 us | 35.84 us | 6.8× | | 65536 | 979.46 us | 124.76 us | 7.9× | 每 token 搬运字节:本算子 2368 B(fp32 输入 + 320 B slot),DynamicQuant 1284 B(fp16 输入 + INT4 + fp32 scale)。DynamicQuant 在大 shape 下已跑在访存带宽上(实测约 384 GB/s),差距来自码本搜索的计算量而非实现效率 —— 这是量化算法选择的固有代价,换取的是 4bit 下更低的量化误差。 ## 文档更新 - 新增 experimental/quant/turbo_quant_compress_latent/README.md(产品支持情况 / 功能说明 / 计算公式 / 参数说明 / 约束说明 / 性能 / 调用说明 / 贡献说明)。 - 新增 experimental/quant/turbo_quant_compress_latent/docs/aclnnTurboQuantCompressLatent.md(两段式 aclnn 接口说明)。 - 新增调用示例:examples/test_aclnn_turbo_quant_compress_latent.cpp(aclnn 单算子直调)与 torch_extension/(PyTorch 单算子 + 图模式)。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8222 | 28 天前 | |
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 个月前 | |
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 个月前 | |
fix(arch35): 修复 InTrainingUpdateGrad NDC1HWC0 与 MultiAddRmsNormDynamicQuant 动态输入取值;8 算子 golden 适配三方对比 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !8492 merge fix/op-binary-json-missing into master fix(arch35): 修复 InTrainingUpdateGrad NDC1HWC0 与 MultiAddRmsNormDynamicQuant 动态输入取值;8 算子 golden 适配三方对比 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 按照ttk最新支持规范更新ttk golden ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4685 ## 测试 st ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8492 | 28 天前 | |
fix(arch35): 修复 InTrainingUpdateGrad NDC1HWC0 与 MultiAddRmsNormDynamicQuant 动态输入取值;8 算子 golden 适配三方对比 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !8492 merge fix/op-binary-json-missing into master fix(arch35): 修复 InTrainingUpdateGrad NDC1HWC0 与 MultiAddRmsNormDynamicQuant 动态输入取值;8 算子 golden 适配三方对比 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 按照ttk最新支持规范更新ttk golden ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4685 ## 测试 st ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8492 | 28 天前 | |
matmulEmuSplitWeight统一整改 Co-authored-by: wuyufei<wuyufei13@huawei.com> # message auto-generated for no-merge-commit merge: !8404 merge question into master matmulEmuSplitWeight统一整改 Created-by: wuyufei Commit-by: wuyufei Merged-by: cann-robot Description: ## 描述 变更摘要 本次 PR 对 MatmulEmuSplitWeight 算子进行统一整改,核心是移除不再需要的 SimplifiedKey 生成机制和独立的数据类型推断(InferDataType)逻辑,同时清理算子原型头文件中的冗余注释与约束描述。 主要改动 移除 GenSimplifiedKey 函数及其关联逻辑:删除了 matmulemusplitweight_simplifiedkey.h 整个文件(含 GenSimplifiedKey 函数实现),在 matmul_emu_split_weight_tiling.cpp 中移除 .GenSimplifiedKey(...) 注册,并在 matmul_emu_split_weight_binary.json 中移除 simplified_key 配置字段,统一取消 SimplifiedKey 生成链路。 移除 InferDataType 函数及注册:在 matmul_emu_split_weight_infershape.cpp 中删除 InferDataTypeForMatmulEmuSplitWeight 函数体和 .InferDataType(...) 链式注册,同时移除对应的单测用例 MatmulEmuSplitWeight_InferDtype_case_0,将数据类型推断从显式注册中剥离。 精简算子原型头文件注释:在 matmul_emu_split_weight_proto.h 中删除输入/输出描述中的冗余模板文字(如 "Must be one of the following types:" 改为更简洁的 "The types supports"),并移除整个 [@par](https://gitcode.com/par) Constraints 约束段落,不再在注释中枚举 Ascend 950 系列平台的张量形状、格式等限制条件。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4659 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8404 | 28 天前 | |
test(golden): 升级 INInferV2 TestSpec Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !8513 merge fix/in-infer-v2-golden-spec-update into master test(golden): 升级 INInferV2 TestSpec Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 本次仅更新 norm/in_infer_v2/tests/assets/golden.py: - 引入 __spec__ TestSpec 注册,kernel 与 GEIR 共用 in_infer_v2 算子键和 Spec。 - 使用 Promote 感知的 Torch CPU true-value,保留框架提供的 FP64 输入,不再强制降为 FP32。 - 增加独立 Torch third-party composition,按 arch35 kernel 的 FP32 运算顺序执行,并配置 FP16/FP32 cross_check 容差。 - 保留兼容旧加载器的 __golden__,并与 TestSpec 复用同一计算核心。 - 删除无真实接口支撑的 ACLNN golden 注册;该算子配置为 ACLNNTYPE aclnn_exclude,不新增 ACLNN 或 e2e 通路。 ## 关联的Issue 关联 Issue #4684:https://gitcode.com/cann/ops-nn/issues/4684 ## 测试 - pre-commit run --files norm/in_infer_v2/tests/assets/golden.py:通过。 - Python AST/import、TestSpec 惰性加载与注册检查:通过。 - FP16/FP32、gamma/beta 有无、不同 rank/统计量 shape、Promote 输出 dtype 与 third-party 本地语义检查:通过。 - TTK 用例校验:100/100 valid;覆盖 FP16/FP32 各 50 条、gamma/beta 有无、rank 2~5、epsilon 与 inner 边界。 - TTK kernel release binary + Promote 双向精度验证:100/100 PASS;三个输出均 PASS,内存越界检查 100/100 PASS。 - TTK GEIR release 集成冒烟:FP16 无 gamma/beta 与 FP32 有 gamma/beta 共 2/2 PASS,三个输出均 PASS。 ## 文档更新 无,本次仅更新 golden 测试资产。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试 golden 规范升级 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8513 | 28 天前 | |
fix:HardSwishGradV2,HardSigmoid,ApplyAdagrad,InplaceSub算子golden更新 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !8478 merge master into master fix:HardSwishGradV2,HardSigmoid,ApplyAdagrad,InplaceSub算子golden更新 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> HardSwishGradV2,HardSigmoid,ApplyAdagrad,InplaceSub算子golden更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> HardSwishGradV2,HardSigmoid,ApplyAdagrad,InplaceSub:golden验证OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8478 | 29 天前 | |
add GradientAcc membar Co-authored-by: liuchuangdev<liuchuang51@huawei.com> # message auto-generated for no-merge-commit merge: !8382 merge fix_maxpoolgradwithargmaxv3 into master add GradientAcc membar Created-by: liuchuangdev Commit-by: liuchuangdev Merged-by: cann-robot Description: ## 描述 **修复 MaxPoolGradWithArgmaxV3 NCHW 标量 kernel(arch35)在固定输入下偶发出现的精度错误。** ### 根因 max_pool_grad_with_argmax_v3_nchw_scalar.h 中,输出缓冲 yLocal 被 **Vector(清零/类型转换)、Scalar(标量累加)、MTE(DMA 拷贝)** 三种执行单元交错访问。原实现仅用 SetFlag/WaitFlag 同步了 DMA 相关事件(MTE2_S/S_MTE3),**缺少 Vector ↔ Scalar 之间的内存有序性保证**: - Duplicate(yLocal, 0)(Vector 清零)完成后,标量累加立即 GetValue 读 yLocal,可能读到 UB 中未清零的旧值; - 非 float(fp16/bf16)时,标量累加写 yLocal 后,结尾 Vector Cast 读 yLocal 做类型转换,可能读到部分累加结果。 由于以上竞争依赖硬件流水线时序,**同输入多次运行结果不同(偶发)**。 ### 修复方法 在关键执行单元边界补充**精准的硬事件同步**(与同算子族 arch35 实现一致,如 pool_3d_common、adaptive_avg_pool3d_grad): 1. 在标量累加(写 yLocal)前加 **V_S**(Vector→Scalar)事件,确保 Vector 清零完成后 Scalar 才读 yLocal; 2. 在非 float 的 Vector Cast 前加 **S_V**(Scalar→Vector)事件,确保标量累加完成后再做类型转换。 不改动任何计算逻辑与坐标索引。 ## 关联的Issue [#4642](https://gitcode.com/cann/ops-nn/issues/4642) ## 测试 问题用例测试、冒烟测试 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8382 | 29 天前 | |
perf(swiglu_group_grad): 网络用例性能优化 Co-authored-by: ZhouChuping<24171214023@stu.xidian.edu.cn> # message auto-generated for no-merge-commit merge: !8183 merge swiglu_gropu_grad性能优化 into master perf(swiglu_group_grad): 网络用例性能优化 Created-by: qq_52056150 Commit-by: ZhouChuping Merged-by: cann-robot Description: ## 描述 针对网络中的特定 场景,新增固定长度归约、连续搬运及编译期裁剪等优化。通过 SIMD 并行完成 NumPy pairwise 叶子归约,并保持原有 FP32 加法顺序及 Inf、NaN、溢出行为。将梯度计算、类型转换和输出写入合并,减少中间结果的 UB 读写及流水同步开销。其他 shape 继续使用通用归约和 chunk 分支,保证原有功能覆盖。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4502 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 本地验证通过,网络用例经过优化后性能均达标,obp冒烟和david冒烟均无异常。 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 不涉及 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8183 | 28 天前 | |
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 个月前 | |
support add_all_module_source支持一个算子 只配置一个CMakeList.txt Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !8380 merge master into master support add_all_module_source支持一个算子 只配置一个CMakeList.txt Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: 此 PR 引入了新的 CMake 宏 add_all_modules_sources 作为算子顶层 CMakeLists.txt 的统一编译入口,旨在简化算子构建配置。同时,底层函数 add_kernel_sources 和 AddOpTestCase 也进行了适配,支持从算子顶层目录调用,替代原先必须在特定子目录(如 op_kernel、tests/ut/op_kernel)内调用的限制。整体改动通过自适应目录位置、收编 UT 源收集逻辑,提升构建系统的灵活性和可维护性。 主要改动 新增 add_all_modules_sources 宏:在 cmake/func.cmake 中新增统一入口宏,支持 OPTYPE、ACLNNTYPE、DEPENDENCIES、COMPUTE_UNIT、TILING_DIR、DISABLE_IN_OPP 等参数;自动适配 op_api 目录在算子根或 op_host 子目录下的两种布局,内部复用 add_modules_sources 并触发 add_all_ut_sources 收集 UT 源。 新增 add_all_ut_sources 宏:在 cmake/func.cmake 中新增 UT 源收集宏,根据 UT_TEST_ALL、OP_API_UT、OP_HOST_UT、OP_GRAPH_UT 等条件分别收集 tests/ut/op_api、tests/ut/op_host、tests/ut/op_graph 下的测试源文件,并兼容历史布局 tests/ut/op_host/op_api。 add_kernel_sources 适配新调用位置:当 CMAKE_CURRENT_SOURCE_DIR 不以 /op_kernel 结尾时,自动将 SOURCE_DIR 拼接 /op_kernel 子目录,使该函数支持从算子顶层目录被调用。 AddOpTestCase 支持自定义 UT 源目录:新增 UT_SRC_DIR 参数用于指定 UT 源文件所在目录;_tiling_def.h 的 include 路径和 *.cpp 测试用例文件的 file(GLOB) 扫描路径均改用 _ut_src_dir 变量,替代原先硬编码的 CMAKE_CURRENT_SOURCE_DIR。 AddOpTestCase 优化算子目录推导:优先使用 add_op_subdirectory 设置的全局变量 OP_DIR 确定算子根目录,当该变量未定义或为空时才回退到原有的三级父目录推导逻辑(tests/ut/op_kernel 内部调用方式),增强了从算子顶层调用的兼容性。 See merge request: cann/ops-nn!8380 | 29 天前 | |
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 个月前 | |
torch 资料补充 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !8266 merge torch into master torch 资料补充 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 此 PR 主要围绕 torch 扩展的构建与算子组织进行重构:新增实验性构建模式,通过 ENABLE_EXPERIMENTAL 环境变量控制仅构建 experimental 目录下的算子;同时移除了 aclnn_common.h 中对 libopapi.so 的动态加载逻辑,简化了算子函数地址获取流程。 主要改动 实验性构建模式支持:build.sh 中新增对 ENABLE_EXPERIMENTAL 环境变量的检查,当其为 TRUE 时设置 TORCH_EXTENSION_EXPERIMENTAL;setup.py 中依据该变量决定是仅构建 experimental 目录下的算子,还是排除该目录。 移除 GetOpApiLibName 与 libopapi.so 依赖:aclnn_common.h 中删除了 GetOpApiLibName() 函数定义,GetOpApiFuncAddr 改为直接返回 nullptr,不再尝试从 libopapi.so 加载算子函数。 错误信息更新:aclnn_common.h 中的算子加载失败提示从引用已删除的 GetOpApiLibName() 改为引用 GetCustOpApiLibName() 和 GetNnOpApiLibName()。 ## 关联的Issue [#4640](https://gitcode.com/cann/ops-nn/issues/4640) ## 测试 验证实验型算子正常 ## 文档更新 torch_extension/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8266 | 1 个月前 | |
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 | 29 天前 | |
修改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 个月前 | |
【社区任务】ForeachMulList算子支持INT16/INT8/UINT8实现贡献 Co-authored-by: liujiacheng_2026<laneljc@qq.com> # message auto-generated for no-merge-commit merge: !4940 merge task/foreach-mul-list into master 【社区任务】ForeachMulList算子支持INT16/INT8/UINT8实现贡献 Created-by: liujiacheng_2026 Commit-by: liujiacheng_2026 Merged-by: cann-robot Description: ## 描述 实现了 Ascend C ForeachMulList 算子对 DT_INT16、DT_INT8、DT_UINT8 数据类型的支持。 本次修改基于现有 foreach/foreach_mul_list 实现扩展,不改变 aclnn 接口和原有数据类型计算路径。新增小整数计算分支,将 int16/int8/uint8 输入搬入 UB 后转换为中间类型完成逐元素乘法,再转换回输出类型。 主要修改包括: - 扩展 host/proto 侧支持的数据类型。 - 补充 ascend910b、ascend910_93、ascend950 的 binary 配置。 - 新增 DT_INT16、DT_INT8、DT_UINT8 kernel 分支。 - 补充小整数类型的 UT、tiling 测试、aclnn 调用样例。 - 更新 README 和 aclnn 接口文档中的数据类型支持说明。 ## 关联的Issue 关联Issue: [[Requirement|需求建议]: 【社区任务】ForeachMulList算子支持INT16/INT8/UINT8实现贡献](https://gitcode.com/cann/ops-nn/issues/2737) ## 测试 采用 aclnn 调用测试,并补充 UT 覆盖新增数据类型。 已覆盖场景: - DT_INT16 TensorList 逐元素乘法 - DT_INT8 TensorList 逐元素乘法 - DT_UINT8 TensorList 逐元素乘法 - 多 Tensor 输入场景 - 非 32 字节对齐 shape 场景 - 原有 float16、float32、int32、bfloat16 回归场景 - host 侧 tiling key 校验 ## 文档更新 更新 foreach/foreach_mul_list/README.md 和 foreach/foreach_mul_list/docs/aclnnForeachMulList.md,补充 DT_INT16、DT_INT8、DT_UINT8 支持说明。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!4940 | 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 个月前 | |
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 个月前 | |
产品文档中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 个月前 | |
support soc suffix Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !8400 merge patch into master support soc suffix Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 支持soc指定950后缀 ophost、opapi、opgraph添加-Wno-error=deprecated-declarations 此 PR 主要实现了对 SoC 后缀的匹配支持,并优化了编译配置。build.sh 中将 SoC 参数匹配方式从严格全名匹配改为前缀匹配,新增 ascend350 支持并标注不区分大小写,同时在 assemble_cmake_args 中增加了 COMPUTE_UNIT_SHORT 的去重逻辑。cmake/dependencies.cmake 中新增 -Wno-error=deprecated-declarations 编译选项,将废弃声明相关的警告从错误降级。 主要改动 SoC 前缀匹配支持:build.sh 使用说明中将 SoC 参数从严格枚举(must only in)改为前缀匹配(supported prefixes),新增 ascend350 并标注 case-insensitive,使 --soc 参数可通过前缀灵活指定目标芯片。 COMPUTE_UNIT_SHORT 去重逻辑:assemble_cmake_args 函数中在拼接 COMPUTE_UNIT_SHORT 前增加了重复检查(if [[ ";${COMPUTE_UNIT_SHORT};" != *";${support_unit};"* ]]),防止同一计算单元被重复添加。 抑制废弃声明编译错误:cmake/dependencies.cmake 中为 OPS_NN_CXX_FLAGS 追加了 -Wno-error=deprecated-declarations,将 deprecated-declarations 警告降级为非错误,避免因依赖库中的废弃接口导致编译失败。 ## 关联的Issue [#4661](https://gitcode.com/cann/ops-nn/issues/4661) ## 测试 编译时指定--soc=ascend950,ascend950PR_9599 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8400 | 28 天前 | |
修改pooling/adaptive_max_pool3d/op_host/adaptiva_max_pool3d_infershape.cpp 为adaptive_max_pool3d_infershape.cpp,以及classify_rule.yaml中对应的adaptiva_max_pool3d_infershape.cpp对应的adaptiva修改为adaptive Co-authored-by: sunny_112<3334563722@qq.com> # message auto-generated for no-merge-commit merge: !7939 merge master into master 修改pooling/adaptive_max_pool3d/op_host/adaptiva_max_pool3d_infershape.cpp 为adaptive_max_pool3d_infershape.cpp,以及classify_rule.yaml中对应的adaptiva_max_pool3d_infershape.cpp对应的adaptiva修改为adaptive Created-by: sunny_112 Commit-by: sunny_112 Merged-by: cann-robot Description: ## 描述 修改pooling/adaptive_max_pool3d/op_host/adaptiva_max_pool3d_infershape.cpp 为adaptive_max_pool3d_infershape.cpp,以及classify_rule.yaml中对应的adaptiva_max_pool3d_infershape.cpp修改为adaptive_max_pool3d_infershape.cpp ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/3909 ## 测试 只是改动了adaptive_max_pool3d_infershape.cpp文件名的拼写错误,无需测试 ## 类型标签 - [ ] 其他,请描述: 修改了adaptiva_max_pool3d_infershape.cp为adaptive_max_pool3d_infershape.cpp ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7939 | 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 个月前 | |
调整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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。