本项目是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 个月前 | |
迁移SwigluGroup和SwigluGroupQuant的torch_extension到算子目录 Co-authored-by: taochangmin<taochangmin@huawei.com> # message auto-generated for no-merge-commit merge: !8157 merge master into master 迁移SwigluGroup和SwigluGroupQuant的torch_extension到算子目录 Created-by: taochangmin Commit-by: taochangmin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 迁移SwigluGroup和SwigluGroupQuant的torch_extension到算子目录 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4497 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> torch调用测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:目录迁移 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8157 | 30 天前 | |
add int8 output nn Co-authored-by: huangkejie1647<huangkejie3@huawei.com> # message auto-generated for no-merge-commit merge: !7955 merge int8-nn into master add int8 output nn Created-by: huangkejie1647 Commit-by: huangkejie1647 Merged-by: cann-robot Description: ## 描述 此 PR 为矩阵乘法相关算子内核引入 int8 输出支持,主要通过在各层 Params / Kernel 接口中新增 scalesGM 参数实现。同时简化了 transpose_batch_mat_mul.cpp 中因 IS_INT_8_OUTPUT 条件分支造成的代码重复,统一为单一调用路径。此外更新了 ops-tensor 第三方依赖的仓库地址和提交标签。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 主要改动 统一 TBMMTensorKernel 的 int8 调用路径:在 transpose_batch_mat_mul.cpp 中移除所有 if constexpr (!IS_INT_8_OUTPUT) 分支及对应的 TBMM_IMPL_CLASS_COMMON_TRNAS 宏调用,所有排列/批次拆分组合统一调用 TBMMTensorKernel,并传入新增的 scalesGM 形参。 TBMMTensorKernel 函数签名新增 scalesGM 参数:transpose_batch_mat_mul_asw_kernel.h 中 TBMMTensorKernel 模板函数增加 GM_ADDR scalesGM 参数(位于 biasGM 之后、cGM 之前),同时在构造 Params 时将该 scalesGM 传递给底层内核结构体。 MatMulBasicKernel 与 BatchMatMulBroadcastKernel 参数结构体新增 scales 占位:分别在 mat_mul_pingpong_basic.h 和 batch_mat_mul_v3_asw_broadcast.h 中的 Params 初始化列表里插入一个新的 nullptr(对应 scalesGM),保持参数顺序与底层库接口一致。 更新 ops-tensor 第三方依赖:cmake/third_party/ops-tensor.cmake 中仓库地址从 cann/ops-tensor 切换为 huangkejie1647/ops-tensor(个人 fork),同时提交标签从 477f9e5 更新至 4bb555e。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4401](https://gitcode.com/cann/ops-nn/issues/4401) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7955 | 30 天前 | |
fix: LpPool ONNX插件在Power_0前插入Abs算子修复精度 Co-authored-by: Apricityh<wangxu359@huawei.com> # message auto-generated for no-merge-commit merge: !8126 merge fix/lppool-add-abs-for-onnx-precision into master fix: LpPool ONNX插件在Power_0前插入Abs算子修复精度 Created-by: Apricityh Commit-by: Apricityh Merged-by: cann-robot Description: ## 描述 修复ops-nn仓迁移lppool onnx插件漏加abs,导致精度失败问题 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4465 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8126 | 30 天前 | |
add sleep Co-authored-by: c00887544<chenshengze@huawei.com> # message auto-generated for no-merge-commit merge: !7221 merge sleepfeature into master add sleep Created-by: chengzhi1120 Commit-by: c00887544 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增Sleep算子,接口功能:让 NPU 设备休眠指定的时钟周期数。该算子通过 SIMT clock() 忙等待实现精确的延时控制,语义与 CUDA 的 spin_kernel / torch.cuda._sleep 一致 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4332 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> TTK和Xrun验证正常通过 本次转测不涉及性能/精度/确定性,保证功能OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7221 | 1 个月前 | |
open quant conv2d Co-authored-by: huafeng793<chenhuafeng2@huawei.com> # message auto-generated for no-merge-commit merge: !7808 merge quantconv2dopen into master open quant conv2d Created-by: huafeng793 Commit-by: huafeng793 Merged-by: cann-robot Description: ## 描述 quant conv2d ascendc算子开源 ## 关联的Issue [#4425](https://gitcode.com/cann/ops-nn/issues/4425) ## 测试 ut,example,rdv验证通过 ## 文档更新 新增quant conv2d readme文档  ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7808 | 1 个月前 | |
Merge branch 'master' of git@gitcode.com:zwj223/ops-nn_3390.git into 'master' # Conflicts: # conflict docs/zh/develop/aicore_develop_guide.md | 30 天前 | |
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 个月前 | |
[activation] 新增 experimental 算子 swiglu_clamp + cann_ops_nn PTA binding Co-authored-by: boes129<chenqi185@huawei.com> # message auto-generated for no-merge-commit merge: !7492 merge feature/swiglu_step into master [activation] 新增 experimental 算子 swiglu_clamp + cann_ops_nn PTA binding Created-by: boes129 Commit-by: boes129 Merged-by: cann-robot Description: ## 描述 本 PR 新增 experimental/activation/swiglu_clamp 算子 —— silu+clamp+mul 融合激活(SwigluClamp 顺序: **silu 在前、clamp 上限在后**;区别于本仓现有的 clipped_swiglu 的 clamp-then-silu 顺序)。用于 Step-3.7-Flash 等 MoE 模型的 FFN 专家层激活,已在 910B / 910C 完成端到端推理 + 精度验证。 数学: gate = x[..., :N], up = x[..., N:] out = silu(gate).clamp(max=limit) * up.clamp(min=-limit, max=limit) 输入 x[..., 2N] → 输出 [..., N],dtype 同输入;limit 为标量属性(默认 7.0)。中间升 fp32 计算,store 前降精度。 **交付件**(对齐 experimental/activation/mish 模板): | 目录 | 内容 | | --------------- | ------------------------------------------------------------ | | op_host/ | OpDef 注册 + InferShape(末维减半,奇数拒绝) + Tiling(dtype-aware bufferCoefficient) | | op_kernel/ | AscendC 实现: sigmoid / silu / clamp(Mins/Maxs) / Mul,中间升 fp32,bf16/fp16 经 Cast 路径,bf16 同 else 分支 | | op_api/aclnn/ | 两段式接口(.cpp/.h),ACLNN_CMD dlsym,无需头 include | | tests/ut/ | op_host: Infershape 5 case + Tiling 3 dtype; op_kernel: 1 case(gen_data/compare_data,rtol=1e-4,tikicpulib CPU 仿真); 910B / 910C 双 SoC 均 5/5 + 1/1 PASS | | examples/ | ACLNN 调用示例(bf16 + fp32) | | README.md | 算子说明(接口/数学/精度/dtype/平台) | **附带 torch_extension/cann_ops_nn PTA binding**: - csrc/activation/swiglu_clamp.cpp: ACLNN_CMD + PYBIND11,torch.ops.cann_ops_nn.swiglu_clamp 调用链 - ops/activation/swiglu_clamp.py: OpBuilder schema + register_meta(末维减半) + PrivateUse1 - ops/__init__.py: 注册链 from . import activation ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/3913 ## 测试 **双 SoC 真机验证**(910B + 910C,均通过 SIG 评审前全量验证): | 验证项 | 910B(AT800T,CANN 9.0.1) | 910C(Atlas A3 / AT900A3,CANN 9.0.0) | | ------------------------------------------------ | ------------------------------ | ------------------------------------------- | | 编译 / 安装(--experimental) | ✅ | ✅(交叉编译 ascend910_93 kernel,3 个 .o) | | ophost UT(infershape + tiling) | ✅ 5/5 | ✅ 5/5 | | op_kernel UT(tikicpulib CPU 仿真,fp32,rtol=1e-4) | ✅ 1/1 | ✅ 1/1 | | ACLNN example(端到端) | ✅ bf16 / fp32 / fp16 | ✅ bf16 / fp32 | | PTA binding torch.ops.cann_ops_nn.swiglu_clamp | ✅ [4,32]→[4,16] + clamp 定点 | ✅ 同 | **双 SoC 输出逐位一致**:910B / 910C 的 aclnn example 共享定点 result[22] 完全相同 —— **bf16 -2.859375、fp32 -2.857722**(= 手算 silu(3) × clamp(-1,±7) = 2.857722 × (-1)),两 SoC 分毫不差,跨平台数值行为确定、无 SoC 相关偏移。 **精度**(60 case = 5 shape × 4 输入模式 × 3 dtype,主矩阵在 910B,910C 定点逐位复验): - BFLOAT16(Step-3.7 实际使用 dtype):**20/20 全 PASS**(MERE+MARE) - FLOAT32:**20/20 全 PASS**(近乎精确,MERE ~1e-8) - FLOAT16:20/20 MERE PASS;MARE 15 case 超标 → 根因 IEEE 754 fp16 denormal 表示极限(silu(深负gate) 下溢到 ~1e-8),**非算子缺陷**;过滤 ~1% 病态点后 MARE 4.88e-4 低于单倍阈值,达标 **性能**(详见 swiglu_clamp-performance-report.md):融合算子相对 torch 拆开(silu+clamp+clamp+mul,~4 个 aclnn)—— bf16 prefill(eager 大档)**5.4–7.5×**、decode(graph)**2.1–3.6×**;端到端 msprof 实测 prefill bf16 **6.20×**,与算子级 bench 吻合。 精度标准对标[生态算子开源精度标准(experimental_standard.md)](https://gitcode.com/cann/opbase/blob/master/docs/zh/ops_precision_standard/experimental_standard.md)。 ## 文档更新 - 新增 experimental/activation/swiglu_clamp/README.md(算子说明: 接口/数学/精度/dtype/平台/编译/运行) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!7492 | 1 个月前 | |
fix: 补齐 4 算子 ascend950 binary.json 注册配置,修正 GroupNormSiluQuant 动态 rank 推导与 23 个算子 golden 参照失真 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !8112 merge fix/op-binary-json-missing into master fix: 补齐 4 算子 ascend950 binary.json 注册配置,修正 GroupNormSiluQuant 动态 rank 推导与 23 个算子 golden 参照失真 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 本 PR 修复三类「已声明的能力与实际产物不一致」的缺陷:注册配置缺失、动态 rank 推导缺失、测试参照(golden)与算子实现不一致。 ### 一、4 个算子在 ascend950 上缺失 binary.json 注册配置 NonZeroWithValue、MultilabelMarginLoss、PoissonNllLoss、MultiAddRmsNormDynamicQuant 的 *_def.cpp 均已执行 this->AICore().AddConfig("ascend950", ...),但 op_host/config/ascend950/*_binary.json 缺失(前 3 个算子 op_host/config/ 目录整体为空,MultiAddRmsNormDynamicQuant 仅有 ascend910b/、ascend910_93/)。 **改动原因**(依据仓库构建脚本,非推断): - cmake/custom_kernel.cmake:17-23:add_custom_kernel_library 以 if(EXISTS ${binary_json}) 为进入门槛,配置缺失时该算子被整体 continue 跳过,ascend950 kernel 不进入编译与打包; - cmake/func.cmake:656-666:拿不到 binary.json 时退化为 get_op_type_from_op_name 按算子名推断 op_type; - cmake/ut.cmake:459-476:numFiles EQUAL 0 分支同样退化为「下划线切分 + 首字母大写」推断 opType,与 OP_ADD() 注册的真实 op_type 不再有强绑定。 **改动方法**:逐算子按其 _def.cpp 的 DataType / Format 注册列表对齐补齐配置文件,bin 数与 dtype 组合严格一一对应: | 算子 | 新增配置文件 | bin 数 | dtype 组合依据 | |------|-------------|:------:|---------------| | NonZeroWithValue | index/non_zero_with_value/op_host/config/ascend950/non_zero_with_value_binary.json | 12 | non_zero_with_value_def.cpp 中 xDataType 的 12 类:double / float / float16 / int8 / uint8 / int16 / uint16 / int32 / uint32 / int64 / uint64 / bool;value 跟随 x,index / count 恒 int32(与 indexDataType、countDataType 一致)。attr:transpose(bool) / dtype(int) | | MultilabelMarginLoss | loss/multilabel_margin_loss/op_host/config/ascend950/multilabel_margin_loss_binary.json | 6 | multilabel_margin_loss_def.cpp 中 ascend950 独立的 regbaseConfig(xy6 / tgt6 / ist6):x、y ∈ {float32, float16, bfloat16},is_target 前 3 组保持 GE 原型的 int32、后 3 组跟随 self(对应 _v2 后缀 bin) | | PoissonNllLoss | loss/poisson_nll_loss/op_host/config/ascend950/poisson_nll_loss_binary.json | 2 | poisson_nll_loss_def.cpp 中 {DT_FLOAT16, DT_FLOAT};attr:log_input(true) / full(false) / eps(1e-8) / reduction("mean") | | MultiAddRmsNormDynamicQuant | norm/multi_add_rms_norm_dynamic_quant/op_host/config/ascend950/multi_add_rms_norm_dynamic_quant_binary.json | 2 | float16 / bfloat16 两组;x1 为 dynamic 输入,smooth_scale1 / smooth_scale2 为 optional,输出 y1/y2 int8、x/y 跟随输入、scale1/scale2 float32;optional_input_mode: gen_placeholder 与同算子既有 ascend910b / ascend910_93 配置保持一致 | ### 二、GroupNormSiluQuant:补齐 -2 动态 rank 推导,资料补空 Tensor 支持声明 **改动原因**:group_norm_silu_quant_def.cpp:67 的 ascend950 config_regbase 已声明 DynamicRankSupportFlag(true),但 group_norm_silu_quant_infershape.cpp 中无对应分支。x 为 UNKNOWN_RANK(-2)时,x_shape->GetDim(0) 取到的是 -2 这个标记值本身,mean / rstd 被推成非法的 (-2, num_groups)。 **改动方法**: - op_host/group_norm_silu_quant_infershape.cpp:引入 util/shape_util.h,在取 num_groups 之前插入 Ops::Base::IsUnknownRank(*x_shape) 判断,命中则对 y / mean / rstd 三个输出统一 Ops::Base::SetUnknownRank() 后直接返回 GRAPH_SUCCESS。 - tests/ut/op_host/arch35/test_group_norm_silu_quant_infershape.cpp:新增 2 个用例。 - infershape_unknown_rank_x:x = {-2},断言三个输出均为 {-2}; - infershape_empty_tensor_each_axis:逐轴各一例(N 轴 {0,320,16,16}、C 轴 {4,0,16,16}、HW 轴 {4,320,0,16}),断言 y 与 x 同形、mean/rstd 为 (dims[0], 32)。 ### 三、23 个算子 golden.py 改用竞品 torch 算子拼接,并修正与算子实现不一致之处 **改动原因**:golden 红线 R3 要求 golden 只能由「竞品接口实现」或「竞品算子拼接实现」,禁止 numpy 纯公式——纯公式与被测 kernel 容易犯同一类错误,用与 kernel 一样有损的参照去比对,会把精度短板伪装成达标。 **改动方法**:23 个 tests/assets/golden.py 中,21 个新增 import torch 并改为 torch 张量算子拼接(numpy 仅保留 I/O 与 dtype 转换);foreach_a_cos_inplace、foreach_log_inplace 原本已是 torch 实现,本次仅做内存优化。除改用 torch 外,同步修正了以下与算子实现不一致之处(均为参照失真,会掩盖或误报 kernel 问题): - **标量一律落在 float32**:Python float 是 fp64,标量运算会把整条链路抬到双精度,而算子在 fp32 上算(A2 的 TBE compute 里 dtype='float32',arch35 DAG 计算类型 U = float)。 - **foreach_addcmul_list 整数分支**:改用未经 float32 抹位的原始整数标量——1564714939 过一道 fp32 会变成 1564714880。 - **foreach_addcmul_list 三因子结合序**:改为 (x2*x3) 先乘、再乘标量。数学上乘积与结合序无关,但 fp32 中间量下不等价:scalars 取极值(如 3.35e38)时 (x2*scalars) 先冲破 fp32 上限变成 inf,而 x2*x3 为小量、再乘 scalars 并不溢出。 - **lamb_update_with_lr 的 clip**:改用 torch.minimum / torch.maximum——内核走 Vec::Min / Vec::Max 硬件指令、传播 NaN,而 Python 内置 min/max 是比较语义、会静默丢弃 NaN。 - **lamb_apply_weight_assign 运算序列**:改为 ratio*(update*lr),与 A2 的 vmul(update,lr) 再 vmul(ratio,·) 及 arch35 DAG 一致;README.md 公式同步加括号标明结合顺序(原写法在 update 与 lr 同时较大时会先溢出成 inf)。 - **lamb_apply_weight_assign / foreach_addcdiv_list 的除法**:补 Subnormal 归零。A2 的 Div 无 config 参数、只有单指令一条路,arch35 默认 DivAlgo::INTRINSIC 亦对 Subnormal 做 FTZ;golden 在 CPU 上默认保留 Subnormal 会给出算子不会产出的值。 - **lamb_apply_optimizer_assign 偏差校正**:改用 exp(log(b)*steps),与 arch35 DAG 的 Log / Mul / Exp 三条指令一致,不再用 Python 幂运算。 - **scatter_list 散射写入**:按平坦偏移下发,不使用 Tensor.index_copy_。算子把 indice 直接当线性偏移用、不做边界检查也无负索引回绕语义(README「indice值域:不支持索引越界」),而 index_copy_ 只接受 [0, axis_size) 的索引、遇负索引直接抛异常中断整轮用例;原 numpy 花式索引则会把 [-size,-1] 静默回绕到尾部,给出算子不会产出的结果。同时工作 dtype 改用原生 dtype 而非一律转 float32:ScatterList 是纯拷贝算子、输出应与输入逐位相同,而 def 注册了 DT_INT32 / DT_INT64,fp32 尾数只有 24 位装不下 2^30 量级整数(实测 2^30+100 经 float32 中转变成 2^30+128,静默丢 28);仅 bfloat16 因 numpy 无原生类型走 fp32 桥接(拷贝无损)。 - **group_norm_silu_quant 刻意不用 F.group_norm**:该层级 API 带 BN 系列的训练态保护(Expected more than 1 value per channel when training),每通道只剩 1 个元素时直接拒收(2 维输入 (N,C) 且 group=C 即触发,实测 case00608 崩),而算子本身 elemNum=1 合法。改用 torch.var_mean / torch.rsqrt / torch.addcmul / F.silu / torch.round+torch.clamp 拼接,语义等价且不带该限制,同样满足红线 R3。 - **foreach 系 fp32 提升不再无谓复制缓冲**:astype(np.float32, copy=False)。单份 GB 级的大用例(32 张量、5.37 亿元素)无谓复制会把进程推向 OOM;下游 torch 算子均非原地、不改写输入,复用安全。 ## 关联的Issue 关联Issue #4483 https://gitcode.com/cann/ops-nn/issues/4483 ## 测试 - **新增 UT**:norm/group_norm_silu_quant/tests/ut/op_host/arch35/test_group_norm_silu_quant_infershape.cpp 新增 infershape_unknown_rank_x、infershape_empty_tensor_each_axis 两个用例,覆盖 -2 动态 rank 与 N/C/HW 三个轴各自为 0 的空 Tensor 场景。 - **golden 回归**:23 个算子的 tests/assets/golden.py 变更由各自 TTK 用例集回归验证。作者记录:foreach_addcmul_list 修正三因子结合序后,此前因 fp32 中间量溢出成 inf 而失败的 bf16 用例集(8192 个元素中 7361 个 |x2*scalars| 超 fp32 上限)达到 100/100 通过。 - **binary.json**:4 份新增配置的 bin 数与 dtype / format / attr 组合均与对应 _def.cpp 的注册列表逐项核对一致(12 / 6 / 2 / 2)。 ## 文档更新 - norm/group_norm_silu_quant/README.md、norm/group_norm_silu_quant/docs/aclnnGroupNormSiluQuant.md:self 参数的约束列由 - 补充为「支持空Tensor(任意维度为0)。此时out为空,meanOut填充为0,rstdOut填充为NAN。」 - optim/lamb_apply_weight_assign/README.md:计算公式由 $input\_param - input2 \times ratio \times input3$ 改为 $input\_param - ratio \times (input3 \times input2)$,加括号标明与算子实现一致的结合顺序。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8112 | 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 | 1 个月前 | |
fix: 补齐 4 算子 ascend950 binary.json 注册配置,修正 GroupNormSiluQuant 动态 rank 推导与 23 个算子 golden 参照失真 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !8112 merge fix/op-binary-json-missing into master fix: 补齐 4 算子 ascend950 binary.json 注册配置,修正 GroupNormSiluQuant 动态 rank 推导与 23 个算子 golden 参照失真 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 本 PR 修复三类「已声明的能力与实际产物不一致」的缺陷:注册配置缺失、动态 rank 推导缺失、测试参照(golden)与算子实现不一致。 ### 一、4 个算子在 ascend950 上缺失 binary.json 注册配置 NonZeroWithValue、MultilabelMarginLoss、PoissonNllLoss、MultiAddRmsNormDynamicQuant 的 *_def.cpp 均已执行 this->AICore().AddConfig("ascend950", ...),但 op_host/config/ascend950/*_binary.json 缺失(前 3 个算子 op_host/config/ 目录整体为空,MultiAddRmsNormDynamicQuant 仅有 ascend910b/、ascend910_93/)。 **改动原因**(依据仓库构建脚本,非推断): - cmake/custom_kernel.cmake:17-23:add_custom_kernel_library 以 if(EXISTS ${binary_json}) 为进入门槛,配置缺失时该算子被整体 continue 跳过,ascend950 kernel 不进入编译与打包; - cmake/func.cmake:656-666:拿不到 binary.json 时退化为 get_op_type_from_op_name 按算子名推断 op_type; - cmake/ut.cmake:459-476:numFiles EQUAL 0 分支同样退化为「下划线切分 + 首字母大写」推断 opType,与 OP_ADD() 注册的真实 op_type 不再有强绑定。 **改动方法**:逐算子按其 _def.cpp 的 DataType / Format 注册列表对齐补齐配置文件,bin 数与 dtype 组合严格一一对应: | 算子 | 新增配置文件 | bin 数 | dtype 组合依据 | |------|-------------|:------:|---------------| | NonZeroWithValue | index/non_zero_with_value/op_host/config/ascend950/non_zero_with_value_binary.json | 12 | non_zero_with_value_def.cpp 中 xDataType 的 12 类:double / float / float16 / int8 / uint8 / int16 / uint16 / int32 / uint32 / int64 / uint64 / bool;value 跟随 x,index / count 恒 int32(与 indexDataType、countDataType 一致)。attr:transpose(bool) / dtype(int) | | MultilabelMarginLoss | loss/multilabel_margin_loss/op_host/config/ascend950/multilabel_margin_loss_binary.json | 6 | multilabel_margin_loss_def.cpp 中 ascend950 独立的 regbaseConfig(xy6 / tgt6 / ist6):x、y ∈ {float32, float16, bfloat16},is_target 前 3 组保持 GE 原型的 int32、后 3 组跟随 self(对应 _v2 后缀 bin) | | PoissonNllLoss | loss/poisson_nll_loss/op_host/config/ascend950/poisson_nll_loss_binary.json | 2 | poisson_nll_loss_def.cpp 中 {DT_FLOAT16, DT_FLOAT};attr:log_input(true) / full(false) / eps(1e-8) / reduction("mean") | | MultiAddRmsNormDynamicQuant | norm/multi_add_rms_norm_dynamic_quant/op_host/config/ascend950/multi_add_rms_norm_dynamic_quant_binary.json | 2 | float16 / bfloat16 两组;x1 为 dynamic 输入,smooth_scale1 / smooth_scale2 为 optional,输出 y1/y2 int8、x/y 跟随输入、scale1/scale2 float32;optional_input_mode: gen_placeholder 与同算子既有 ascend910b / ascend910_93 配置保持一致 | ### 二、GroupNormSiluQuant:补齐 -2 动态 rank 推导,资料补空 Tensor 支持声明 **改动原因**:group_norm_silu_quant_def.cpp:67 的 ascend950 config_regbase 已声明 DynamicRankSupportFlag(true),但 group_norm_silu_quant_infershape.cpp 中无对应分支。x 为 UNKNOWN_RANK(-2)时,x_shape->GetDim(0) 取到的是 -2 这个标记值本身,mean / rstd 被推成非法的 (-2, num_groups)。 **改动方法**: - op_host/group_norm_silu_quant_infershape.cpp:引入 util/shape_util.h,在取 num_groups 之前插入 Ops::Base::IsUnknownRank(*x_shape) 判断,命中则对 y / mean / rstd 三个输出统一 Ops::Base::SetUnknownRank() 后直接返回 GRAPH_SUCCESS。 - tests/ut/op_host/arch35/test_group_norm_silu_quant_infershape.cpp:新增 2 个用例。 - infershape_unknown_rank_x:x = {-2},断言三个输出均为 {-2}; - infershape_empty_tensor_each_axis:逐轴各一例(N 轴 {0,320,16,16}、C 轴 {4,0,16,16}、HW 轴 {4,320,0,16}),断言 y 与 x 同形、mean/rstd 为 (dims[0], 32)。 ### 三、23 个算子 golden.py 改用竞品 torch 算子拼接,并修正与算子实现不一致之处 **改动原因**:golden 红线 R3 要求 golden 只能由「竞品接口实现」或「竞品算子拼接实现」,禁止 numpy 纯公式——纯公式与被测 kernel 容易犯同一类错误,用与 kernel 一样有损的参照去比对,会把精度短板伪装成达标。 **改动方法**:23 个 tests/assets/golden.py 中,21 个新增 import torch 并改为 torch 张量算子拼接(numpy 仅保留 I/O 与 dtype 转换);foreach_a_cos_inplace、foreach_log_inplace 原本已是 torch 实现,本次仅做内存优化。除改用 torch 外,同步修正了以下与算子实现不一致之处(均为参照失真,会掩盖或误报 kernel 问题): - **标量一律落在 float32**:Python float 是 fp64,标量运算会把整条链路抬到双精度,而算子在 fp32 上算(A2 的 TBE compute 里 dtype='float32',arch35 DAG 计算类型 U = float)。 - **foreach_addcmul_list 整数分支**:改用未经 float32 抹位的原始整数标量——1564714939 过一道 fp32 会变成 1564714880。 - **foreach_addcmul_list 三因子结合序**:改为 (x2*x3) 先乘、再乘标量。数学上乘积与结合序无关,但 fp32 中间量下不等价:scalars 取极值(如 3.35e38)时 (x2*scalars) 先冲破 fp32 上限变成 inf,而 x2*x3 为小量、再乘 scalars 并不溢出。 - **lamb_update_with_lr 的 clip**:改用 torch.minimum / torch.maximum——内核走 Vec::Min / Vec::Max 硬件指令、传播 NaN,而 Python 内置 min/max 是比较语义、会静默丢弃 NaN。 - **lamb_apply_weight_assign 运算序列**:改为 ratio*(update*lr),与 A2 的 vmul(update,lr) 再 vmul(ratio,·) 及 arch35 DAG 一致;README.md 公式同步加括号标明结合顺序(原写法在 update 与 lr 同时较大时会先溢出成 inf)。 - **lamb_apply_weight_assign / foreach_addcdiv_list 的除法**:补 Subnormal 归零。A2 的 Div 无 config 参数、只有单指令一条路,arch35 默认 DivAlgo::INTRINSIC 亦对 Subnormal 做 FTZ;golden 在 CPU 上默认保留 Subnormal 会给出算子不会产出的值。 - **lamb_apply_optimizer_assign 偏差校正**:改用 exp(log(b)*steps),与 arch35 DAG 的 Log / Mul / Exp 三条指令一致,不再用 Python 幂运算。 - **scatter_list 散射写入**:按平坦偏移下发,不使用 Tensor.index_copy_。算子把 indice 直接当线性偏移用、不做边界检查也无负索引回绕语义(README「indice值域:不支持索引越界」),而 index_copy_ 只接受 [0, axis_size) 的索引、遇负索引直接抛异常中断整轮用例;原 numpy 花式索引则会把 [-size,-1] 静默回绕到尾部,给出算子不会产出的结果。同时工作 dtype 改用原生 dtype 而非一律转 float32:ScatterList 是纯拷贝算子、输出应与输入逐位相同,而 def 注册了 DT_INT32 / DT_INT64,fp32 尾数只有 24 位装不下 2^30 量级整数(实测 2^30+100 经 float32 中转变成 2^30+128,静默丢 28);仅 bfloat16 因 numpy 无原生类型走 fp32 桥接(拷贝无损)。 - **group_norm_silu_quant 刻意不用 F.group_norm**:该层级 API 带 BN 系列的训练态保护(Expected more than 1 value per channel when training),每通道只剩 1 个元素时直接拒收(2 维输入 (N,C) 且 group=C 即触发,实测 case00608 崩),而算子本身 elemNum=1 合法。改用 torch.var_mean / torch.rsqrt / torch.addcmul / F.silu / torch.round+torch.clamp 拼接,语义等价且不带该限制,同样满足红线 R3。 - **foreach 系 fp32 提升不再无谓复制缓冲**:astype(np.float32, copy=False)。单份 GB 级的大用例(32 张量、5.37 亿元素)无谓复制会把进程推向 OOM;下游 torch 算子均非原地、不改写输入,复用安全。 ## 关联的Issue 关联Issue #4483 https://gitcode.com/cann/ops-nn/issues/4483 ## 测试 - **新增 UT**:norm/group_norm_silu_quant/tests/ut/op_host/arch35/test_group_norm_silu_quant_infershape.cpp 新增 infershape_unknown_rank_x、infershape_empty_tensor_each_axis 两个用例,覆盖 -2 动态 rank 与 N/C/HW 三个轴各自为 0 的空 Tensor 场景。 - **golden 回归**:23 个算子的 tests/assets/golden.py 变更由各自 TTK 用例集回归验证。作者记录:foreach_addcmul_list 修正三因子结合序后,此前因 fp32 中间量溢出成 inf 而失败的 bf16 用例集(8192 个元素中 7361 个 |x2*scalars| 超 fp32 上限)达到 100/100 通过。 - **binary.json**:4 份新增配置的 bin 数与 dtype / format / attr 组合均与对应 _def.cpp 的注册列表逐项核对一致(12 / 6 / 2 / 2)。 ## 文档更新 - norm/group_norm_silu_quant/README.md、norm/group_norm_silu_quant/docs/aclnnGroupNormSiluQuant.md:self 参数的约束列由 - 补充为「支持空Tensor(任意维度为0)。此时out为空,meanOut填充为0,rstdOut填充为NAN。」 - optim/lamb_apply_weight_assign/README.md:计算公式由 $input\_param - input2 \times ratio \times input3$ 改为 $input\_param - ratio \times (input3 \times input2)$,加括号标明与算子实现一致的结合顺序。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8112 | 1 个月前 | |
CosineEmbeddingLoss support Ascend950 Co-authored-by: daiwei18<daiwei18@huawei.com> # message auto-generated for no-merge-commit merge: !8139 merge cosine into master CosineEmbeddingLoss support Ascend950 Created-by: daiwei18 Commit-by: daiwei18 Merged-by: cann-robot Description: ## 描述 - 将 930-loss 分支中的 loss/cosine_embedding_loss 同步到独立 cosine 分支。 - 新增 Ascend950 的 Kernel、Tiling、算子定义、图原型、binary 配置和 UT。 - 在 docs/zh/op_list.md 登记 CosineEmbeddingLoss。 ## 关联的Issue 关联 Issue #4473:https://gitcode.com/cann/ops-nn/issues/4473 ## 测试 - pre-commit run:通过(含 clang-format、ruff、codespell、OAT)。 - bash build.sh -u --ops=cosine_embedding_loss --soc=ascend950 -j16:通过;host tiling 5/5,kernel simulator 2/2。 - bash build.sh --opkernel --ops=cosine_embedding_loss --soc=ascend950 -j16:通过;3 个 Ascend950 binary 均成功生成。 ## 文档更新 - 新增算子 README。 - 更新中文算子清单。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8139 | 30 天前 | |
add int8 output nn Co-authored-by: huangkejie1647<huangkejie3@huawei.com> # message auto-generated for no-merge-commit merge: !7955 merge int8-nn into master add int8 output nn Created-by: huangkejie1647 Commit-by: huangkejie1647 Merged-by: cann-robot Description: ## 描述 此 PR 为矩阵乘法相关算子内核引入 int8 输出支持,主要通过在各层 Params / Kernel 接口中新增 scalesGM 参数实现。同时简化了 transpose_batch_mat_mul.cpp 中因 IS_INT_8_OUTPUT 条件分支造成的代码重复,统一为单一调用路径。此外更新了 ops-tensor 第三方依赖的仓库地址和提交标签。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 主要改动 统一 TBMMTensorKernel 的 int8 调用路径:在 transpose_batch_mat_mul.cpp 中移除所有 if constexpr (!IS_INT_8_OUTPUT) 分支及对应的 TBMM_IMPL_CLASS_COMMON_TRNAS 宏调用,所有排列/批次拆分组合统一调用 TBMMTensorKernel,并传入新增的 scalesGM 形参。 TBMMTensorKernel 函数签名新增 scalesGM 参数:transpose_batch_mat_mul_asw_kernel.h 中 TBMMTensorKernel 模板函数增加 GM_ADDR scalesGM 参数(位于 biasGM 之后、cGM 之前),同时在构造 Params 时将该 scalesGM 传递给底层内核结构体。 MatMulBasicKernel 与 BatchMatMulBroadcastKernel 参数结构体新增 scales 占位:分别在 mat_mul_pingpong_basic.h 和 batch_mat_mul_v3_asw_broadcast.h 中的 Params 初始化列表里插入一个新的 nullptr(对应 scalesGM),保持参数顺序与底层库接口一致。 更新 ops-tensor 第三方依赖:cmake/third_party/ops-tensor.cmake 中仓库地址从 cann/ops-tensor 切换为 huangkejie1647/ops-tensor(个人 fork),同时提交标签从 477f9e5 更新至 4bb555e。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4401](https://gitcode.com/cann/ops-nn/issues/4401) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7955 | 30 天前 | |
modified md files (README.md for add_layer_norm ) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !8145 merge master into master modified md files (README.md for add_layer_norm ) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 The average value of x in the calculation formula is modified. ## 关联的Issue [#4442](https://gitcode.com/cann/ops-nn/issues/4442) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 norm/add_layer_norm/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8145 | 30 天前 | |
feat(arch35): add Ascend 950 support for Adam optimizer operators Co-authored-by: daiwei18<daiwei18@huawei.com> # message auto-generated for no-merge-commit merge: !8078 merge 930-optim into master feat(arch35): add Ascend 950 support for Adam optimizer operators Created-by: daiwei18 Commit-by: daiwei18 Merged-by: cann-robot Description: ## 描述 - 为 ApplyAdamWQuant 增加 arch35/Ascend 950 tiling、kernel、binary 配置和测试覆盖。 - 新增 ApplyAdamWithAmsgrad 算子目录,包含 proto、host、kernel、Ascend950 配置、示例和 UT。 - 修复 ApplyAdamWQuant 公共 tiling 头文件命名和 UT tiling 类型对齐问题。 - 补充 README、aclnn 文档和 golden 资产,完善算子提交材料。 ## 关联的Issue 关联Issue #4461 https://gitcode.com/cann/ops-nn/issues/4461 ## 测试 - 新增/更新 ApplyAdamWQuant、ApplyAdamWithAmsgrad arch35 op_host/op_kernel UT。 - ApplyAdamWQuant golden 入口本地可执行;dtype 与校验反例覆盖已补充。 - 本地执行 clang-format 18.1.8 --dry-run --Werror,改动 C/C++ 文件格式检查通过。 - 精度、泛化和性能结果随转测补充。 ## 文档更新 - 更新 ApplyAdamWQuant 文档,并新增 ApplyAdamWithAmsgrad README/示例说明。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8078 | 30 天前 | |
adaptive_avg_pool2d 950上性能优化 Co-authored-by: zoujiamin123<zoujiamin1@huawei.com> # message auto-generated for no-merge-commit merge: !7738 merge master into master adaptive_avg_pool2d 950上性能优化 Created-by: zoujiamin123 Commit-by: zoujiamin123 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->adaptive_avg_pool2d 950上性能优化:新增4个性能优化模板 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->https://gitcode.com/cann/ops-nn/issues/4435 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->ut、st测试通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7738 | 30 天前 | |
feat(arch35): add Ascend 950 support for DynamicQuantUpdateScatter Co-authored-by: daiwei18<daiwei18@huawei.com> # message auto-generated for no-merge-commit merge: !8077 merge 930-quant into master feat(arch35): add Ascend 950 support for DynamicQuantUpdateScatter Created-by: daiwei18 Commit-by: daiwei18 Merged-by: cann-robot Description: ## 描述 - 为 DynamicQuantUpdateScatter 和 DynamicQuantUpdateScatterV2 增加 arch35/Ascend 950 适配。 - 补充 arch35 tiling、Ascend950 binary 配置、RegBase kernel 入口及 CMake 接入。 - 更新 host 侧 tiling/infershape/注册逻辑,并补充 golden、arch35 tiling UT 和相关覆盖。 - 隔离资源占用较高的 kernel 用例,降低本地和 CI 执行风险。 ## 关联的Issue 关联Issue #4460 https://gitcode.com/cann/ops-nn/issues/4460 ## 测试 - 新增/更新 DynamicQuantUpdateScatter 系列 arch35 op_host tiling UT 和 kernel UT 覆盖。 - 本地执行 clang-format 18.1.8 --dry-run --Werror,改动 C/C++ 文件格式检查通过。 - 精度、泛化和性能结果随转测补充。 ## 文档更新 - 更新 DynamicQuantUpdateScatter 系列 README 和测试资产。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8077 | 1 个月前 | |
gru_gra输入cast成fp32提升精度 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !8150 merge master into master gru_gra输入cast成fp32提升精度 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> gru_gra输入在aclnn中cast成fp32提升精度 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4480 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8150 | 1 个月前 | |
AddRmsNormDynamicQuant support int4 / AddRmsNormDynamicQuantV2 support Ascend 950 Co-authored-by: liiu-qii<liuqi330@huawei.com> # message auto-generated for no-merge-commit merge: !8125 merge dev_ardq_v1 into master AddRmsNormDynamicQuant support int4 / AddRmsNormDynamicQuantV2 support Ascend 950 Created-by: liiu-qii Commit-by: liiu-qii Merged-by: cann-robot Description: ## 描述 AddRmsNormDynamicQuantV1算子:1、支持output_mask控制输出逻辑,逻辑与A2/A3逻辑对齐;2、支持int4输出类型;3、tiling UT整改; AddRmsNormDynamicQuantV2算子:1、支持Ascend 950 实现;2、迁移 fussion_pass; ## 关联的Issue [#4479](https://gitcode.com/cann/ops-nn/issues/4479) ## 测试 已编包验证所有涉及通路:1、已有守护用例;2、新增功能用例;3、冒烟通过; ## 文档更新 1、修改AddRmsNormDynamicQuant算子aclnnAddRmsNormDynamicQuant.md、aclnnAddRmsNormDynamicQuantV2.md和README.md文档; 2、修改AddRmsNormDynamicQuantV2算子的READEME.md文档。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8125 | 1 个月前 | |
[fix] QBMMV3 batch consistency handling Co-authored-by: guiruoyu<guiruoyu@h-partners.com> # message auto-generated for no-merge-commit merge: !7705 merge fix/qbmmv3-batch-consistency into master [fix] QBMMV3 batch consistency handling Created-by: guiruoyu Commit-by: guiruoyu Merged-by: cann-robot Description: ## 描述 - QBMMV3 StreamK 场景的 batch 一致性校验由 GetDeterministic() == 1 调整为 GetDeterministicLevel() > 1,仅在 batch 一致性等级下过滤 StreamK,保留普通确定性等级的行为。 - QBMMV3 per-block 场景选中对应 tiling 模板且 GetDeterministicLevel() > 1 时输出 warning,提示该量化模式天然不支持 batch 一致性。 ## 关联的Issue 无。 ## 测试 - git diff --check HEAD^ HEAD 通过。 - 推送 GitCode 时仓库 pre-push hook 检查通过。 - 当前本地 Windows 环境不具备 CANN/Linux 编译运行环境,编译与 UT 由 CI 验证。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!7705 | 1 个月前 | |
迁移SwigluGroup和SwigluGroupQuant的torch_extension到算子目录 Co-authored-by: taochangmin<taochangmin@huawei.com> # message auto-generated for no-merge-commit merge: !8157 merge master into master 迁移SwigluGroup和SwigluGroupQuant的torch_extension到算子目录 Created-by: taochangmin Commit-by: taochangmin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 迁移SwigluGroup和SwigluGroupQuant的torch_extension到算子目录 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4497 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> torch调用测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:目录迁移 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8157 | 30 天前 | |
【CANNBot】新增算子SmoothL1Loss & ModulateGrad Co-authored-by: zhouxuan78<zhouxuan78@huawei.com> # message auto-generated for no-merge-commit merge: !7756 merge master into master 【CANNBot】新增算子SmoothL1Loss & ModulateGrad Created-by: zhouxuan78 Commit-by: zhouxuan78 Merged-by: cann-robot Description: ## 描述 新增算子SmoothL1Loss & ModulateG ## 关联的Issue 关联Issue [#4203](https://gitcode.com/cann/ops-nn/issues/4203) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7756 | 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 | 1 个月前 | |
index kernel ut Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !5501 merge master into master index kernel ut Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Kernel UT 中存在大量分散的测试数据准备代码,使用 system() 调用执行 shell 命令: 重复样板代码多:至少 131 个文件包含 system() 调用 依赖 GNU/Linux 工具:cp、chmod、rm、get_current_dir_name(非跨平台) 错误定位困难:system() 返回码粗糙,无法区分路径错误、权限问题、Python缺失等 维护成本高:同一套逻辑散落在大量算子测试中 修改方案 统一测试数据生命周期管理:拷贝、清理、生成、比对 改善报错体验:使用项目标准日志宏 OP_LOGI/OP_LOGE,区分路径错误、脚本执行失败等 降低贡献门槛:开发者只需声明数据目录和参数 本次修改对index 目录下的部分算子 迁移过程中 代码格式做整改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/2337 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5501 | 3 个月前 | |
docs目录基本概念md中文名改为英文名 Co-authored-by: chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !7857 merge master into master docs目录基本概念md中文名改为英文名 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao;chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> docs目录基本概念md文件名改为英文: 避免link中的中文字符引发的跳转异常,例如两段式接口.md变成%E4%B8%A4%E6%AE%B5%E5%BC%8F%E6%8E%A5%E5%8F%A3.md,不易于维护,可能导致其他平台跳转有问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4260](https://gitcode.com/cann/ops-nn/issues/4260) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> docs/zh/context所有md和对应的link ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7857 | 1 个月前 | |
fix: Modify the AIDD docs issue | 1 个月前 | |
include tensor_api from cann Co-authored-by: liuyufan0725<liuyufan9@huawei.com> # message auto-generated for no-merge-commit merge: !7061 merge include_asc into master include tensor_api from cann Created-by: liuyufan0725 Commit-by: liuyufan0725 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 在使用最新的CANN包时,从环境中获取tensor_api源码进行编译 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#3880](https://gitcode.com/cann/ops-nn/issues/3880) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> nn包编包成功,算子功能pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7061 | 1 个月前 | |
社区贡献 Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !6366 merge master into master 社区贡献 Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 更新完善社区贡献的流程,增加新增需求到sig例会评审的过程。 补充各类场景的贡献说明。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 更新完善社区贡献的流程,增加新增需求到sig例会评审的过程。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!6366 | 2 个月前 | |
init | 10 个月前 | |
add hard_sigmoid for ascend950 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !7874 merge master into master add hard_sigmoid for ascend950 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> add hard_sigmoid for ascend950 hard_sigmoid适配950 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT/ST pass ; ops-test-kit 测试900+ 用例pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> activation/hard_sigmoid/README.md activation/hard_sigmoid/docs/aclnnHardsigmoid&aclnnInplaceHardsigmoid.md docs/zh/op_api_list.md docs/zh/op_api_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7874 | 1 个月前 | |
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 个月前 | |
fix: Modify the AIDD docs issue | 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 个月前 | |
静态库编译添加新脚本 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7677 merge issue_fix into master 静态库编译添加新脚本 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 增加静态库合并脚本,适配分布式构建功能 ## 关联的Issue [#4345](https://gitcode.com/cann/ops-nn/issues/4345) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7677 | 1 个月前 | |
fix mx_to_block_mx_quant Co-authored-by: pyq17870581669<pengyongqiang5@huawei.com> # message auto-generated for no-merge-commit merge: !7854 merge MxToBlockMxQuantFix into master fix mx_to_block_mx_quant Created-by: pyq17870581669 Commit-by: pyq17870581669 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改魔鬼数字,修改主线告警,修改tilingData数据传递方式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4257 https://gitcode.com/cann/ops-nn/issues/4148 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本地精度测试,通路测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7854 | 1 个月前 | |
fix: Modify the AIDD docs issue | 30 天前 | |
调整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,可以通过CANN 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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。