已开启
[Requirement|需求建议]: 新增silu_and_mul算子 #5315
yangliuyang_513989创建于 8月29日
8月29日 将 yangliuyang_513989 设为负责人
12 天前 关联了pull request:新增 ascend950 (Atlas A5) 芯片适配
12 天前 关联了pull request:新增 ascend950 (Atlas A5) 芯片适配
11 天前 关联了pull request:新增 ascend950 (Atlas A5) 芯片适配
yangliuyang_513989
11 天前 评论:
11 天前 评论:


Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
Backgroud(背景信息)
SiluMul 算子完成Silu 激活与 Mul 乘算融合计算,计算逻辑:(y = silu(x) * other),其中 (silu(x)=x*sigmoid(x));该算子常用于大模型 Transformer 结构的 FFN 模块,将 silu 激活、乘法两步运算融合,减少中间张量内存读写开销,提升模型推理性能。
算子文档参考:https://gitcode.com/cann/ops-nn/blob/master/experimental/activation/silu_mul/docs/aclnnSiluMul.md
当前
aclnnSiluMul算子在 ops‑nn 仓库中已有实现,但暂未完成昇腾 950 芯片的算子适配。当大模型业务部署到昇腾 950 硬件执行时,该算子无 NPU 原生实现,会触发 CPU fallback 回退执行,带来明显性能损耗、增加设备间数据拷贝开销,严重影响大模型推理吞吐与时延,部分场景甚至出现业务执行失败。本次需求目标:在 ops‑nn 仓 experimental/activation/silu_mul 模块下完成 aclnnSiluMul 算子针对昇腾 950 芯片完整适配开发,补充昇腾 950 平台 tiling 策略、内核实现,完成精度、性能专项验证,保障算子在昇腾 950 芯片原生 NPU 上稳定、高性能运行。
Origin(信息来源)
待补充
Benefit / Necessity (价值/作用)
Design(设计方案)
总体思路
复用 ops‑nn 现有 aclnnSiluMul 对外 API 接口与上层框架逻辑,不修改对外接口;新增昇腾 950 芯片分支的 tiling 切分逻辑与 NPU 内核实现;算子数学逻辑保持:(y = (x * sigmoid(x)) * other);充分复用昇腾 950 硬件向量、sigmod 指令、UB 缓存资源,优化张量分片策略,减少 DDR‑UB 之间数据搬移;完成功能、精度、性能测试,保障昇腾 950 上算子效果,同时保证不破坏其他芯片平台原有算子能力。
开发步骤
ops‑nn/experimental/activation/silu_mul模块内增加昇腾 950 芯片分支编译、调度逻辑,对外aclnnSiluMul接口保持不变。sigmoid(x) → x * sigmoid(x) → silu_result * other,融合三步计算,不生成中间张量落 DDR,充分利用片上 UB,调用昇腾 950 硬件指令完成计算。