本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
编译任务机器规格调整以及冒烟脚本调整 Co-authored-by: chenyajie<chenyajie6@huawei.com> # message auto-generated for no-merge-commit merge: !8787 merge master into master 编译任务机器规格调整以及冒烟脚本调整 Created-by: yajie_caroline Commit-by: chenyajie Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8787 | 2 个月前 | |
fix: 整改责任田算子日志质量(修复日志规范问题) Co-authored-by: StoneChan_<chensitong2@huawei.com> # message auto-generated for no-merge-commit merge: !9154 merge log-quality-rectify into master fix: 整改责任田算子日志质量(修复日志规范问题) Created-by: StoneChan_ Commit-by: StoneChan_ Merged-by: cann-robot Description: #### 问题描述 (必填) 依据 CANN 日志规范检查规则,对责任田算子的运行时日志进行质量整改,修复以下问题: - 级别错配:GE IR 示例(test_geir_reverse_sequence.cpp)失败信息误标 INFO(应 ERROR) - 拼写错误:Precison 等 - 语法错误:"is fail" 中式结构、"fail to get" 缺时态、"is failed" 结构、Dcache Size 大小写等 - 变量越限日志缺正确范围(ubFactor 等补充 "must be greater than 0, but got %ld") - 内部缩写 [XIR] 替换;printf/std::cout 统一走 LOG_PRINT 宏 - UT 测试中冗余 std::cout 状态输出 影响算子:glu/reverse_sequence/sleep/quant_max/concat_offset/foreach_asin #### 环境信息 (必填) 不涉及(纯日志文案整改,无运行时行为变化) #### 重现步骤 (必填) 执行算子 UT / 查看相关算子日志 #### 预期结果 (必填) 日志级别、文案符合日志规范,便于问题定位 #### 日志 / 截图 (必填) -(整改前后对比见 PR 变更) #### 备注 (选填) - 本次整改不改变算子功能逻辑 关联 PR:https://gitcode.com/cann/ops-nn/merge_requests/9154 --- 关联的Issue:#5110 See merge request: cann/ops-nn!9154 | 1 个月前 | |
Swiglu 正反向双轴量化算子性能优化 Co-authored-by: suhongbin3<suhongbin1@huawei.com> Co-authored-by: yxc1006<yexuchao@huawei.com> # message auto-generated for no-merge-commit merge: !9171 merge final0825 into master Swiglu 正反向双轴量化算子性能优化 Created-by: suhongbin3 Commit-by: suhongbin3;yxc1006 Merged-by: cann-robot Description: ## 描述 本 PR 优化 SwigluMxQuantWithDualAxis 与 SwigluBackwardMxQuantWithDualAxis 在 Ascend 950/Arch35 上的 RegBase Kernel 性能,减少 SwiGLU、Scale1/Scale2 计算及 FP8 量化过程中的重复扫描、低利用率 Vector 操作和中间数据重排。 ### 改动原因 - 性能优化需求 ### 改动方法 正向算子 SwigluMxQuantWithDualAxis - 重排 SwiGLU numerator 计算,缩短寄存器生命周期,并增加 64×256 满块快速路径。 - 将 Scale1 的 max 收集和 scale/reciprocal 转换改为批处理,提高 Vector 有效宽度。 - 在同一 Vector Scope 中完成 Scale1 与 Y1 量化,减少重复的 Vector Scope 初始化和中间数据读取。 - 复用 CuBLAS Scale 计算 predicate,减少临时 mask 寄存器和显式 mask 合并指令。 - 在 Scale2 生成阶段直接形成交织布局,避免后处理重排。 - FP8 Y2 路径采用双寄存器搬入,一次处理完整行,并为 BF16 增加快速路径。 反向算子 SwigluBackwardMxQuantWithDualAxis - 复用 SwiGLU 反向公共梯度计算,避免重复运算,同时保持原浮点结合顺序。 - 优化 Scale mask 复用和 Scale2 直接交织。 - 优化 FP8 Y2 双搬入及 BF16 计算路径。 - 保留并修正 OCP 算法路径,补充相关缓冲区和边界保护。 主线适配 - 同步主线 cann/master 的 Reg MicroAPI 变更,包括 LoadAlign、StoreAlign、Compares、And、Or 和 ReduceDataBlock 等接口。 ## 关联的Issue 关联Issue #5121 ## 测试 泛化样例精度验证通过,压力测试与确定性测试通过,正向算子平均性能提升74.06%,反向算子平均性能提升32.89% ## 文档更新 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9171 | 1 个月前 | |
pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Co-authored-by: yulinwu<3130311700@qq.com> # message auto-generated for no-merge-commit merge: !9142 merge reg-migration-pooling-loss into master pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Created-by: qq_64396346 Commit-by: yulinwu Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: pooling/loss/common CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:pooling,loss,common ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9142 | 1 个月前 | |
fix: 整改责任田算子日志质量(修复日志规范问题) Co-authored-by: StoneChan_<chensitong2@huawei.com> # message auto-generated for no-merge-commit merge: !9154 merge log-quality-rectify into master fix: 整改责任田算子日志质量(修复日志规范问题) Created-by: StoneChan_ Commit-by: StoneChan_ Merged-by: cann-robot Description: #### 问题描述 (必填) 依据 CANN 日志规范检查规则,对责任田算子的运行时日志进行质量整改,修复以下问题: - 级别错配:GE IR 示例(test_geir_reverse_sequence.cpp)失败信息误标 INFO(应 ERROR) - 拼写错误:Precison 等 - 语法错误:"is fail" 中式结构、"fail to get" 缺时态、"is failed" 结构、Dcache Size 大小写等 - 变量越限日志缺正确范围(ubFactor 等补充 "must be greater than 0, but got %ld") - 内部缩写 [XIR] 替换;printf/std::cout 统一走 LOG_PRINT 宏 - UT 测试中冗余 std::cout 状态输出 影响算子:glu/reverse_sequence/sleep/quant_max/concat_offset/foreach_asin #### 环境信息 (必填) 不涉及(纯日志文案整改,无运行时行为变化) #### 重现步骤 (必填) 执行算子 UT / 查看相关算子日志 #### 预期结果 (必填) 日志级别、文案符合日志规范,便于问题定位 #### 日志 / 截图 (必填) -(整改前后对比见 PR 变更) #### 备注 (选填) - 本次整改不改变算子功能逻辑 关联 PR:https://gitcode.com/cann/ops-nn/merge_requests/9154 --- 关联的Issue:#5110 See merge request: cann/ops-nn!9154 | 1 个月前 | |
fix(conv2d): 修复singlecorebatch非全载尾块逻辑 Co-authored-by: Mrxxx7<caimengkai1@huawei.com> # message auto-generated for no-merge-commit merge: !9132 merge master into master fix(conv2d): 修复singlecorebatch非全载尾块逻辑 Created-by: Mrxxx7 Commit-by: Mrxxx7 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复singlecorebatch非全载尾块逻辑 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> #5138 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> rdv+全量本地case+ads失败case ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9132 | 1 个月前 | |
feat: 新增BNTrainingUpdateGrad算子(Ascend 950PR) Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !9153 merge BNTrainingUpdateGrad into master feat: 新增BNTrainingUpdateGrad算子(Ascend 950PR) Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 新增BNTrainingUpdateGrad自定义算子,用于批归一化训练反向的update阶段。给定上游梯度grads、前向输入x及逐通道统计量batch_mean/batch_variance,在batch与空间维上做逐通道归约,输出仿射参数scale/offset的梯度diff_scale/diff_offset。 ### 改动内容 - 新增算子目录 norm/bn_training_update_grad/,包含完整实现: - **Proto注册**:从 op_nn_proto_extend.h 迁移至独立 bn_training_update_grad_proto.h,注册体与canndev built-in逐字一致 - **Op Host**:def注册(ascend950 vendor config)、infershape(diff_scale/diff_offset shape/dtype同batch_mean)、tiling(channel维主切分,UB反推cLenCap/sliceR/rowsPerTile) - **Op Kernel(arch35)**:AscendC kernel实现,fp16/bf16/fp32三二进制;快慢双路(cLenCap==1为快路:1D连续段+Kahan补偿累加;cLenCap>1为慢路:2D tile+位置归约) - **Framework**:TF plugin注册(AutoMappingFn + ImplyType::TVM) - **Config**:ascend950 binary.json(float16/bfloat16/float32三个bin,ND格式,FormatAgnostic) - **Tests**:tiling单元测试 + golden验证脚本 - **Examples**:图模式调用样例(两组shape/epsilon用例) - 从 common/inc/op_graph/op_nn_proto_extend.h 移除旧BNTrainingUpdateGrad proto定义(42行),迁移至独立proto文件 - 在 docs/zh/op_list.md 添加算子列表条目 ### 支持情况 - 硬件平台:Ascend 950PR/Ascend 950DT - 数据类型:grads/x支持FLOAT16/FLOAT32/BFLOAT16(三者同型),batch_mean/batch_variance/diff_scale/diff_offset恒为FLOAT32 - 数据格式:ND - 属性:epsilon(可选float,缺省0.0001) ## 关联的Issue - #5134 ## 测试 - tiling单元测试(test_bn_training_update_grad_tiling.cpp) - golden验证脚本(tests/assets/golden.py) - 图模式调用示例(examples/arch35/test_geir_bn_training_update_grad.cpp) ## 文档更新 - 新增 norm/bn_training_update_grad/README.md(含产品支持情况、功能说明、参数说明、约束说明、调用说明) - 更新 docs/zh/op_list.md 添加算子列表条目 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9153 | 1 个月前 | |
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 | 3 个月前 | |
feat(experimental): add nonzero operator Co-authored-by: npusyb23<1678326026@qq.com> # message auto-generated for no-merge-commit merge: !8584 merge master into master feat(experimental): add nonzero operator Created-by: npusyb2023 Commit-by: --show-origin;npusyb23 Merged-by: cann-robot Description: ## 概述 新增 experimental/index/nonzero 算子:找出self中非零元素的位置,设self的维度为D,self中非零元素的个数为N,则返回out的shape为N * D,每一列表示一个非零元素的位置坐标。 [K, ndim](row-major)。支持 FLOAT / FLOAT16 / BFLOAT16 / INT32 输入,INT64 输出。 对应issue:https://gitcode.com/cann/ops-nn/issues/4919 ## 正确性 - 200 例精度测试集 **200/200 PASS**(fp32/fp16/bf16/int32 各 50 例,覆盖 1D–5D、稀疏/稠密/全零/全非零/单点模式) - 输出形状与数值与 torch.nonzero 逐位一致 - 全零输入输出 [0, ndim];动态 K 由 host 端读取 workspace 计数返回 ## 性能(vs torch.nonzero,msprof kernel 纯耗时) 按验收指标——**逐 case 几何平均加速比** + **case 泛化分布** (参考 kernel 纯耗时 <100us:10% / 100-500us:20% / 500-1000us:40% / >1000us:30%): | 指标 | 结果 | |---|---| | **逐 case 几何平均加速比** | **3.657x** | | 泛化分布 | **10/20/40/30 精确命中**(零跨界) | | 加权总加速比 Σref/Σasc | 3.98x | | 按 dtype | fp32 3.51x · fp16 3.31x · bf16 3.34x · int32 5.67x | 全部 100 case 加速比 > 1(min 1.78x,max 6.44x)。 测量方式:单 msprof 启动、同进程、每 case ref/asc 各 3 次取 min、累加全部计算 kernel Task_Duration。fp32/fp16/bf16(AiCore 参考)与官方逐 case harness 交叉验证偏差 ≤6%; int32 参考走 AiCpu(host 侧 kernel),独立进程冷启动开销(~350-400us 地板)会使官方 harness 的 int32 加速比虚高,本 PR 用同进程稳态测量消除该伪影。 ## 实现要点 - 每核按 TILE_ELEMS=8192 tile 读入(DataCopyPad GM→UB),Compares(NE) 生成按位 mask - bf16/int32 无可用 setcc,先 Cast 到 float 再比较;mask 用最小置位位提取,扫描代价 ∝ nnz 而非 tile 宽 - 索引对按 PAIR_BATCH=512 分批 DataCopyPad 写回 GM,避免逐对写回固定开销 - framework/aclnn 单核 direct-y 构建 ## 验证 - 精度:200/200 PASS - 性能:见上表(逐 case 明细在 advisor_suite/results_table.md) - 调用样例:examples/test_aclnn_nonzero.cpp See merge request: cann/ops-nn!8584 | 1 个月前 | |
fix(foreach): AddListV2 整数溢出改为二进制补码回绕语义 Co-authored-by: Tian_1122<tianjunhan@h-partners.com> # message auto-generated for no-merge-commit merge: !9151 merge master into master fix(foreach): AddListV2 整数溢出改为二进制补码回绕语义 Created-by: Tian_1122 Commit-by: Tian_1122 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本 PR 修复 foreach_add_list(AddListV2)在 int16/int8/uint8 数据类型下的整数溢出语义,将其从原先经 AddListFloatAdapter 的浮点中间态计算改为二进制补码回绕(wrap-around)语义,以对齐 PyTorch CPU/GPU 行为。核心改动是新增内核模板类 ForeachAddListWrap<T>(位于新增文件 foreach_add_list_wrap.h),并在 foreach_add_list.cpp 中将 TILING_KEY_IS(5)、(7)、(8) 三个分支的算子从 ForeachOneScalarTernary 切换为 ForeachAddListWrap。 主要改动 - 新增 ForeachAddListWrap<T> 内核类:在 foreach_add_list_wrap.h 中新增按数据块处理的 int16/int8/uint8 加法内核,包含 Init/Process/CopyIn/Compute/CopyOut 流水线,双缓冲队列及余量(remainder)数据处理逻辑。 - int16 路径直接计算:T=int16_t 时在 int16 域内直接执行 Muls(inLocal2, inLocal2, alphaVal, dataCount) 与 Add,利用硬件二进制补码回绕语义,无需中间转换。 - int8/uint8 提升计算后掩码回绕:T=int8_t/uint8_t 时先经 half 提升为 int16 精确计算 a + alpha * b,再回绕到低 8 位:uint8_t 通过 & 0x00FF 保留低 8 位,int8_t 通过 (v & 0x7F) - (v & 0x80) 映射到 [-128, 127]。 - 算子入口替换:foreach_add_list.cpp 中 TILING_KEY_IS(5)/(7)/(8) 分支由 ForeachOneScalarTernary<int16_t, float, AddListFloatAdapter<float>>、ForeachOneScalarTernary<int8_t, half, ...>、ForeachOneScalarTernary<uint8_t, half, ...> 分别替换为 ForeachAddListWrap<int16_t>、ForeachAddListWrap<int8_t>、ForeachAddListWrap<uint8_t>,并新增对 foreach_add_list_wrap.h 头文件的引用。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> #5169 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9151 | 1 个月前 | |
embedding_hash_table_lookup_or_insert float4/float2 Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !9136 merge master into master embedding_hash_table_lookup_or_insert float4/float2 Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本 PR 针对 EmbeddingHashTableLookupOrInsert 算子(arch35)引入 SIMT 访存合并优化:根据 embeddingDim 的对齐情况(dim%4==0 → merge=4、dim%2==0 → merge=2、否则 → merge=1),让每个 X 线程一次搬运 merge 个连续 float,从而在读写嵌入向量时使用 float4(B128)/float2(B64) 短向量代替逐元素标量访问,并同步调整 tiling 的 threadXNum 计算公式(next_pow2(ceil(dim/merge)),上限 WARP_SIZE)及单元测试覆盖。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5092 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 精度完全一致的情况下,性能明显提升,且尾轴越大提升越明显。  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9136 | 1 个月前 | |
fix: 整改责任田算子日志质量(修复日志规范问题) Co-authored-by: StoneChan_<chensitong2@huawei.com> # message auto-generated for no-merge-commit merge: !9154 merge log-quality-rectify into master fix: 整改责任田算子日志质量(修复日志规范问题) Created-by: StoneChan_ Commit-by: StoneChan_ Merged-by: cann-robot Description: #### 问题描述 (必填) 依据 CANN 日志规范检查规则,对责任田算子的运行时日志进行质量整改,修复以下问题: - 级别错配:GE IR 示例(test_geir_reverse_sequence.cpp)失败信息误标 INFO(应 ERROR) - 拼写错误:Precison 等 - 语法错误:"is fail" 中式结构、"fail to get" 缺时态、"is failed" 结构、Dcache Size 大小写等 - 变量越限日志缺正确范围(ubFactor 等补充 "must be greater than 0, but got %ld") - 内部缩写 [XIR] 替换;printf/std::cout 统一走 LOG_PRINT 宏 - UT 测试中冗余 std::cout 状态输出 影响算子:glu/reverse_sequence/sleep/quant_max/concat_offset/foreach_asin #### 环境信息 (必填) 不涉及(纯日志文案整改,无运行时行为变化) #### 重现步骤 (必填) 执行算子 UT / 查看相关算子日志 #### 预期结果 (必填) 日志级别、文案符合日志规范,便于问题定位 #### 日志 / 截图 (必填) -(整改前后对比见 PR 变更) #### 备注 (选填) - 本次整改不改变算子功能逻辑 关联 PR:https://gitcode.com/cann/ops-nn/merge_requests/9154 --- 关联的Issue:#5110 See merge request: cann/ops-nn!9154 | 1 个月前 | |
pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Co-authored-by: yulinwu<3130311700@qq.com> # message auto-generated for no-merge-commit merge: !9142 merge reg-migration-pooling-loss into master pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Created-by: qq_64396346 Commit-by: yulinwu Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: pooling/loss/common CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:pooling,loss,common ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9142 | 1 个月前 | |
aclnnQuantMatmulV5 fp8输入的pertile量化场景,weight NZ格式,x1为true时未拦截 Co-authored-by: Super User<root@localhost.localdomain> # message auto-generated for no-merge-commit merge: !8971 merge master into master aclnnQuantMatmulV5 fp8输入的pertile量化场景,weight NZ格式,x1为true时未拦截 Created-by: Nam_John Commit-by: Super User Merged-by: cann-robot Description: ## 描述 aclnnQuantMatmulV5 fp8输入的pertile量化场景,weight NZ格式,x1为true时未拦截,已修复 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4947 ## 测试 opapi新增tranA=TRUE的ut用例,执行成功拦截 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8971 | 1 个月前 | |
fix(bn3d_training_reduce): 修复 arch35 评审问题与 NDC1HWC0 sub-R 精度 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9195 merge fix/bn3d-training-reduce-review-comments into master fix(bn3d_training_reduce): 修复 arch35 评审问题与 NDC1HWC0 sub-R 精度 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 闭环 BN3DTrainingReduce arch35 Kernel 评审意见,并修复扩展回归发现的 NDC1HWC0 sub-R 存量精度缺口。 - 将 arch35 Kernel 的本地内存指针统一为 __ubuf__,使用 std::numeric_limits<float>::max(),并以 MulAddDst 合并平方累加。 - NDC1HWC0 BF16 sub-R 的 C0 收尾改为对主值和补偿量进行 TwoSum 成对归并。 - 将普通 FP16 sub-R 的偶/奇双链和 K=4 精度策略扩展到 C0 packed;不改变 split-reduce、Host Tiling、接口或 workspace。 ## 关联的Issue #5146 ## 测试 - [x] 上库前定向本地 CI:pre-commit/OAT、Ascend950、Ascend910B 及相关 UT 全部 PASS(仅 bn3d_training_reduce 范围) - [x] NDC1HWC0 定向:BF16 固定失败 1/1、有限值 6/6、特殊值 3/3、最终包三 dtype 冒烟 3/3 PASS - [x] 冻结 public200 三方精度有效 200/200 PASS,200/200 BINARY_MATCH - [x] target10 精度 10/10、逐例性能门槛 folded G/N >= 0.1 为 10/10 PASS,min=0.3560 - [x] 受影响 FP16 key200000 路径 folded G/N≈3.969,PASS - [x] git diff --check PASS ## 文档更新 本 PR 不修改用户文档;回归和缺陷证据已在本地交付资料中归档。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9195 | 1 个月前 | |
fix(op_graph): 30 个算子原型头补 OPS_PROTO_DEF 隔离宏 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9218 merge fix/proto-isolation-macro into master fix(op_graph): 30 个算子原型头补 OPS_PROTO_DEF 隔离宏 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 **改动原因** op_graph/*_proto.h 中的 REG_OP 会被 scripts/util/merge_proto.py 合并进 ops_proto_nn.h/.cpp,再编成内置 op_proto 库(cmake/gen_ops_info.cmake 的 merge_graph_headers → cmake/symbol.cmake 的 gen_opgraph_symbol)。当同名算子在 canndev 侧的遗留原型头(nn_norm_ops.h、reduce_ops.h、ops_proto_legacy.h 等)也有 REG_OP 注册时,两份定义进入同一编译单元会重复定义。 仓库既有范式是在 REG_OP 外层加条件编译隔离宏,merge_proto.py 的匹配式会把该宏一并带入合并产物。本仓已有 activation/relu6_d、optim/sgd、norm/in_training_reduce_v2、vfusion/normalize_bbox 等先例,但本批 30 个算子的原型头遗漏了该保护。检视意见整改。 **改动方法** 对 30 个算子的 op_graph/*_proto.h,在 REG_OP 外层补 #ifndef/#define OPS_PROTO_DEF_<OPTYPE> … #endif: c #ifndef OPS_PROTO_DEF_DEEPNORM #define OPS_PROTO_DEF_DEEPNORM REG_OP(DeepNorm) ... .OP_END_FACTORY_REG(DeepNorm) #endif // OPS_PROTO_DEF_DEEPNORM 宏名取 OPS_PROTO_DEF_ + 算子名大写去下划线,与发布包 opp/built-in/op_graph/inc 中已有 967 个同类隔离宏的拼法一致。位置严格贴在 REG_OP 前、OP_END_FACTORY_REG 后一行——merge_proto.py 的正则要求 guard 与 REG_OP 相邻,位置写偏宏会被丢弃。 **涉及算子(30 个)** ApplyAdagrad、BatchNormExt2、BN3DTrainingUpdate、BNInfer、BNTrainingUpdateV2、BNTrainingUpdateV3、ChamferDistance、ClippedSwiglu、CosineEmbeddingLoss、DeepNorm、DeepNormGrad、DynamicQuantUpdateScatter、DynamicQuantUpdateScatterV2、GemmaRmsNorm、GroupNormSiluQuant、HardSigmoid、HardSwishGradV2、INInferV2、InplaceApplyRMSProp、InplaceSub、InstanceNormGrad、INTrainingUpdateGrad、L2NormalizeGrad、MultiAddRmsNormDynamicQuant、MultilabelMarginLoss、NonZeroWithValue、PoissonNllLoss、Relu6Grad、SoftmaxFocalLoss、SoftmaxFocalLossGrad **顺带修复**:deep_norm、deep_norm_grad、gemma_rms_norm、multi_add_rms_norm_dynamic_quant、dynamic_quant_update_scatter_v2 这 5 个原型头文件末尾缺换行,属存量问题;pre-commit 的 end-of-file-fixer 钩子只扫改动文件,一旦改动即会被拦,故一并补齐。 **变更范围**:30 个文件,+95 −5,改动全部为条件编译指令与文件末尾换行,不改动任何 IR 的输入/输出/属性/dtype 定义,无功能与支持面变化。未改动 common/inc/op_graph/op_nn_proto_extend.h——merge_proto.py 会按算子名把聚合头中的重复项去重,改它不会进入合并产物。 ## 关联的Issue 关联 Issue #5170 ## 测试 1. **合并产物验证**:对 30 个改动文件跑 python3 scripts/util/merge_proto.py,合并产物中 REG_OP 30 个、#ifndef OPS_PROTO_DEF_ 30 个,隔离宏 30/30 全部正确带出。 2. **宏名配对验证**:与发布包 cann-9.2.0/opp/built-in/op_graph/inc/*.h 中同名算子的既有隔离宏逐个比对,宏名不一致项 0 处。 3. **重名检查**:30 个新增宏在三仓范围内无跨文件重名,每个文件内 OPS_PROTO_DEF_ 宏数恰为 1(无嵌套/重复保护)。 4. **格式与合规门禁**:按 .pre-commit-config.yaml 逐钩子本地复现 —— clang-format 18.1.8 --style=file --dry-run -Werror 整文件检查 30/30 通过、OAT 许可头 30/30 合规、trailing-whitespace / end-of-file-fixer / check-merge-conflict / detect-private-key / check-added-large-files 全部通过。 ## 文档更新 无。本 PR 不涉及文档变更。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 <!-- 关联 Issue: https://gitcode.com/cann/ops-nn/issues/5170 --> See merge request: cann/ops-nn!9218 | 1 个月前 | |
fix: 修复 max_pool3_d golden 函数 pads 参数默认值处理 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9241 merge master into master fix: 修复 max_pool3_d golden 函数 pads 参数默认值处理 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 修复 pooling/max_pool3_d/tests/assets/golden.py 中 max_pool3_d_golden 函数 pads 参数的默认值处理逻辑: - 原实现将 pads 默认值定义为 [0, 0, 0, 0, 0, 0](可变默认参数),列表对象在多次调用间共享,存在被调用方修改后污染后续调用状态的风险; - 当调用方显式传入 pads=None 时,原实现会在 len(pads) 处抛出 TypeError。 本次改动将默认值改为 None,并在函数体内统一初始化:pads is None 时赋值为 [0, 0, 0, 0, 0, 0],再走原有的 1/3/6 元素长度分支展开逻辑,保证默认行为与修复前一致。 ## 关联的Issue #5106 ## 测试 - 该文件为 max_pool3_d 算子的 golden 脚本,通过 __golden__ 注册供测试框架生成期望值; - ST 用例(tests/st/arch35/ttk_kernel_max_pool3_d_st.csv)均显式传入 pads,本次改动不影响其行为。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9241 | 1 个月前 | |
Swiglu 正反向双轴量化算子性能优化 Co-authored-by: suhongbin3<suhongbin1@huawei.com> Co-authored-by: yxc1006<yexuchao@huawei.com> # message auto-generated for no-merge-commit merge: !9171 merge final0825 into master Swiglu 正反向双轴量化算子性能优化 Created-by: suhongbin3 Commit-by: suhongbin3;yxc1006 Merged-by: cann-robot Description: ## 描述 本 PR 优化 SwigluMxQuantWithDualAxis 与 SwigluBackwardMxQuantWithDualAxis 在 Ascend 950/Arch35 上的 RegBase Kernel 性能,减少 SwiGLU、Scale1/Scale2 计算及 FP8 量化过程中的重复扫描、低利用率 Vector 操作和中间数据重排。 ### 改动原因 - 性能优化需求 ### 改动方法 正向算子 SwigluMxQuantWithDualAxis - 重排 SwiGLU numerator 计算,缩短寄存器生命周期,并增加 64×256 满块快速路径。 - 将 Scale1 的 max 收集和 scale/reciprocal 转换改为批处理,提高 Vector 有效宽度。 - 在同一 Vector Scope 中完成 Scale1 与 Y1 量化,减少重复的 Vector Scope 初始化和中间数据读取。 - 复用 CuBLAS Scale 计算 predicate,减少临时 mask 寄存器和显式 mask 合并指令。 - 在 Scale2 生成阶段直接形成交织布局,避免后处理重排。 - FP8 Y2 路径采用双寄存器搬入,一次处理完整行,并为 BF16 增加快速路径。 反向算子 SwigluBackwardMxQuantWithDualAxis - 复用 SwiGLU 反向公共梯度计算,避免重复运算,同时保持原浮点结合顺序。 - 优化 Scale mask 复用和 Scale2 直接交织。 - 优化 FP8 Y2 双搬入及 BF16 计算路径。 - 保留并修正 OCP 算法路径,补充相关缓冲区和边界保护。 主线适配 - 同步主线 cann/master 的 Reg MicroAPI 变更,包括 LoadAlign、StoreAlign、Compares、And、Or 和 ReduceDataBlock 等接口。 ## 关联的Issue 关联Issue #5121 ## 测试 泛化样例精度验证通过,压力测试与确定性测试通过,正向算子平均性能提升74.06%,反向算子平均性能提升32.89% ## 文档更新 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9171 | 1 个月前 | |
fix: 修复 GRU 与 GRU 反向算子 aclnn 接口的编码规范告警 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9180 merge 0825cleancode into master fix: 修复 GRU 与 GRU 反向算子 aclnn 接口的编码规范告警 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 修复 GRU 算子(rnn/gru/op_api/aclnn_gru.cpp)与 GRU 反向算子(rnn/gru_grad/op_api/aclnn_gru_backward.cpp)aclNN 接口的编码规范(cleancode)告警: 1. CheckNotNull、CheckDimsSize 中未使用的 hx 参数,以及无调用点的 GruDataGetWorkspaceSize 函数添加 [[maybe_unused]] 标记,消除未使用告警; 2. CheckShape 中 dScale(uint64_t)与 numLayers、hiddenSize(int64_t)的混合符号运算显式 static_cast 为 int64_t,消除符号转换告警; 3. 修复 aclnn_gru_backward.cpp ValidateShape 中日志格式符错误(%u 改为 %zu,GetDimNum 返回 64 位无符号值),并移除多余的 static_cast 消除符号比较告警。 ## 关联的Issue 关联 Issue https://gitcode.com/cann/ops-nn/issues/5129 ## 测试 通过编码规范(cleancode)检查。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9180 | 1 个月前 | |
feat: wqbmmv2 Ascend950 支持 A16S4/A16F4 NZ_C0_16 格式 weight Co-authored-by: maqijun<maqijun@h-partners.com> # message auto-generated for no-merge-commit merge: !8545 merge feat/weight-quant-preprocess-a16w4 into master feat: wqbmmv2 Ascend950 支持 A16S4/A16F4 NZ_C0_16 格式 weight Created-by: maqijun Commit-by: maqijun Merged-by: cann-robot Description: ## 描述 在 Ascend950(DAV_3510)上为 WeightQuantBatchMatmulV2 新增 A16S4 / A16F4(INT4 / FLOAT4_E2M1)NZ_C0_16 格式 weight 支持: - V2/V3 接口在 DAV_3510 上保持 ND-only,NZ_C0_16 的 4bit 紧凑 weight 通过 Nz 接口(aclnnWeightQuantBatchMatmulNz)接入。 - aclnn TensorPreProcess 中为 NZ_C0_16 weight 重建逻辑 2D view,下游统一按 [K, N] 处理。 - op def:950 的 AICoreConfig 中前置追加 A16S4/A16F4 NZ_C0_16 组合,weight format/dtype 组合列表保持 append-only。 - 补充 wqbmmv2 reg base tiling UT:新增 NZ_C0_16 与 NZ 的 twin 用例。 - 检视意见闭环:IsNzFormat 返回类型由 aclnnStatus 改为 bool(原写法依赖 true→1 / false→0(ACLNN_SUCCESS) 的隐式转换,语义与 aclnnStatus 相反,易误用)。 - parse_ini_to_json:修正 offset dtype。 ## 关联的Issue 关联Issue [#5113](https://gitcode.com/cann/ops-nn/issues/5113) ## 测试 - 二级冒烟通过。 - wqbmmv2 reg base tiling UT 通过(含新增 NZ_C0_16 twin 用例)。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8545 | 1 个月前 | |
动态库解耦 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !8927 merge master into master 动态库解耦 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 本 PR 旨在将算子侧代码与 legacy 动态库(libophost_comm_legacy.so)解耦:LegacyCommonMgr 新增 isSupported_ 支持位与 IsSupport() 接口,依据编译宏 ASCEND_COMPUTE_UNIT 判断当前 SoC 版本是否属于受支持集合 SUPPORTED_VERS(ascend910b、ascend910_93、ascend310p、ascend310b、ascend910),仅受支持时才 dlopen 加载 legacy 库;各 legacy 封装接口在不受支持时提前短路返回,matmul 系列算子的 tiling 流程同步改为容忍 legacy 能力缺失而不再硬失败,并配套调整 CMake 编译宏与 UT 测试。 ## 关联的Issue [5093](https://gitcode.com/cann/ops-nn/issues/5093) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8927 | 1 个月前 | |
situ_mx_quant: torch_extension实现按开发规范重构并修复内核FP16量化路径 Co-authored-by: demoauguste<zhanghao418@huawei.com> # message auto-generated for no-merge-commit merge: !9075 merge master into master situ_mx_quant: torch_extension实现按开发规范重构并修复内核FP16量化路径 Created-by: demoauguste Commit-by: demoauguste Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 按照torch extension整改situ_mx_quant算子实现,修复FP16场景的下的量化bug。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5054 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 使用测试工具,结果自验证如下:  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:重构torch extension实现,规范目录结构 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9075 | 1 个月前 | |
fix: 修复 aclnnModulateBackward 中 scale/shift 空指针解引用 Co-authored-by: zhangqijia<zhangqijia1@h-partners.com> # message auto-generated for no-merge-commit merge: !9110 merge fix/modulate-backward-nullptr into master fix: 修复 aclnnModulateBackward 中 scale/shift 空指针解引用 Created-by: gcw_SUaZx3UQ Commit-by: zhangqijia Merged-by: cann-robot Description: ## 描述 修复 aclnnModulateBackward 中可选参数 scale/shift 的空指针解引用 ## 关联的Issue [#5015](https://gitcode.com/cann/ops-nn/issues/5015) [#5016](https://gitcode.com/cann/ops-nn/issues/5016) ## 测试 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!9110 | 1 个月前 | |
修改matmul 算子atoll 异常反馈判断 Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !7083 merge master into master 修改matmul 算子atoll 异常反馈判断 Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改matmul 算子atoll 异常反馈判断,异常时返回默认值 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/3882 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7083 | 3 个月前 | |
动态库解耦 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !8927 merge master into master 动态库解耦 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 本 PR 旨在将算子侧代码与 legacy 动态库(libophost_comm_legacy.so)解耦:LegacyCommonMgr 新增 isSupported_ 支持位与 IsSupport() 接口,依据编译宏 ASCEND_COMPUTE_UNIT 判断当前 SoC 版本是否属于受支持集合 SUPPORTED_VERS(ascend910b、ascend910_93、ascend310p、ascend310b、ascend910),仅受支持时才 dlopen 加载 legacy 库;各 legacy 封装接口在不受支持时提前短路返回,matmul 系列算子的 tiling 流程同步改为容忍 legacy 能力缺失而不再硬失败,并配套调整 CMake 编译宏与 UT 测试。 ## 关联的Issue [5093](https://gitcode.com/cann/ops-nn/issues/5093) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8927 | 1 个月前 | |
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 | 2 个月前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 2 个月前 | |
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 | 2 个月前 | |
产品文档中png文件改为英文名 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !8300 merge master into master 产品文档中png文件改为英文名 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 产品文档中的png图片名由中文改为英文 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#4260](https://gitcode.com/cann/ops-nn/issues/4260) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> png和相关的link md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8300 | 2 个月前 | |
init | 1 年前 | |
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 | 2 个月前 | |
cannsim改名为npusim Co-authored-by: liangbinglong<liangbinglong@huawei.com> # message auto-generated for no-merge-commit merge: !8349 merge master into master cannsim改名为npusim Created-by: liangbinglong Commit-by: liangbinglong Merged-by: cann-robot Description: ## 描述 经TSC评审,cannsim工具正式更名为npusim,相关命令行、资料同步刷新,cannsim作为别名兼容一段时间,需要尽快切换 ## 关联的Issue NA ## 测试 使用最新链接版本测试,相关命令行已经全部更名为npusim ## 文档更新 更新doc下面的调优部分文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8349 | 2 个月前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 2 个月前 | |
fix Third_Party_Open_Source_Software_List.yaml Co-authored-by: liuyufan0725<liuyufan9@huawei.com> # message auto-generated for no-merge-commit merge: !1879 merge fix_yaml into master fix Third_Party_Open_Source_Software_List.yaml Created-by: liuyufan0725 Commit-by: liuyufan0725 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新三方依赖清单Third_Party_Open_Source_Software_List.yaml 1、增加protobuf 2、将nlohmann/json修改为json ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#1042](https://gitcode.com/cann/ops-nn/issues/1042) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了Third_Party_Open_Source_Software_List.yaml ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1879 | 8 个月前 | |
【描 述】 eigen update to 5.0.0 Co-authored-by: j00427146<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !1152 merge master into master 【描 述】 eigen update to 5.0.0 Created-by: jialimin1 Commit-by: j00427146 Merged-by: cann-robot Description: ## 描述 现开源软件eigen 3.4.0 EOM,Eigen 从3.4.0版本升级到5.0.0,解决生命周期问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-nn/issues/975 https://gitcode.com/cann/ops-nn/issues/389 ## 测试   ## 文档更新 SECURITY.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Update Eigen to 5.0.0 See merge request: cann/ops-nn!1152 | 8 个月前 | |
fix(build): 修复run_example默认模式判断libascendcl.so时[ ]缺空格导致错误链接-lacl_rt的问题 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !9181 merge index_example into master fix(build): 修复run_example默认模式判断libascendcl.so时[ ]缺空格导致错误链接-lacl_rt的问题 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 修复run_example默认模式判断libascendcl.so时[ ]缺空格导致错误链接-lacl_rt的问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5128 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9181 | 1 个月前 | |
更新conv文件从属配置,新增convbp_tiling_debug_util.h Co-authored-by: xiaolong_feng<fengxiaolong5@huawei.com> # message auto-generated for no-merge-commit merge: !9155 merge fix-config into master 更新conv文件从属配置,新增convbp_tiling_debug_util.h Created-by: xiaolong_feng Commit-by: xiaolong_feng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新conv文件从属配置,新增convbp_tiling_debug_util.h ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5111 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及,常规门禁即可 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 配置文件更新 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9155 | 1 个月前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 2 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 2 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 2 个月前 | |
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 | 4 个月前 |
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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。