aclnnMatmulSwiglu【免费下载链接】ops-transformer本项目是CANN提供的transformer类大模型算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-transformer支持的产品对应 op_def 注册的ascend910b/ascend910_93。产品是否支持Ascend 950PR/Ascend 950DT×Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品×Atlas 推理系列产品×Atlas 训练系列产品×功能说明算子功能融合gate_proj up_proj SiLU MulSwiGLU 门控 MLP 前向。计算公式令[gate | up] x weight ( bias)沿最后一维对半切分则y SiLU(gate) * up, SiLU(g) g * sigmoid(g) g / (1 e^{-g})参数说明参数名输入/输出/属性描述数据类型数据格式x输入激活形状[M, K]FLOAT16、BFLOAT16、FLOAT32NDweight输入打包权重[K, 2N]前 N 列 gate后 N 列 up。transposeWeighttrue时为[2N, K]同 xNDbias输入可选偏置[2N]。原型可选但自动生成的 aclnn 接口会非空校验无偏置时传全 0 张量FLOAT32固定在 cube 内以 fp32 累加不随 x 变化NDtransposeWeight属性weight 是否转置默认 falseBOOL-y输出结果[M, N]同 xND接口原型两段式接口先调用aclnnMatmulSwigluGetWorkspaceSize获取 workspace 大小与执行器再调用aclnnMatmulSwiglu执行。bias 不能传 nullptr本算子无手写op_apiL2 实现aclnn接口由 opbuild 自动生成 其GetWorkspaceSize会对bias做非空校验传nullptr会返回161001 (ACLNN_ERR_PARAM_NULLPTR)。 不需要偏置时请传入一个形状为[2N]、值全 0 的 bias 张量。参数顺序为 输入 → 属性 → 输出。aclnnStatus aclnnMatmulSwigluGetWorkspaceSize( const aclTensor* x, const aclTensor* weight, const aclTensor* bias, // 不能为 nullptr; 无偏置时传全 0 的 [2N] 张量 bool transposeWeight, const aclTensor* out, uint64_t* workspaceSize, aclOpExecutor** executor); aclnnStatus aclnnMatmulSwiglu( void* workspace, uint64_t workspaceSize, aclOpExecutor* executor, aclrtStream stream);约束说明weight的2N维必须能被 2 整除。x的最后一维K必须与weight的K维一致。中间结果以 FLOAT32 累加FLOAT32 输入下 matmul 精度模式由 tiling 决定必要时调整cubeMathType/SetBufferSpace。调用样例参见 examples/test_aclnn_matmul_swiglu.cpp。【免费下载链接】ops-transformer本项目是CANN提供的transformer类大模型算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-transformer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考