
MatmulLayerNormMatmul算子开发任务书【免费下载链接】cann-ops-competitions本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。项目地址: https://gitcode.com/cann/cann-ops-competitions基础信息技术标签算子开发适配硬件Ascend 950PR/Ascend 950DT开源仓地址https://link.gitcode.com/i/f76796270e0127820db4a17c2cf8a34aCANN 版本算子开源仓指定版本开发语言Ascend C任务概述本算子实现融合 LayerNorm 的双 Matmul 算子Matmul LayerNorm Matmul。先执行一个 Matmul对其输出做 LayerNorm行级归一化再以归一化后的结果作为第二个 Matmul 的左矩阵整个过程无需中间显存读写。算子公式阶段一第一个 Matmul$\mathbf{C0} \mathbf{A0} \times \mathbf{B0}$输出形状 $(M_0, N_0)$RowMajor 布局。阶段二LayerNorm对 $\mathbf{C0}$ 的每一行独立计算 $$ \begin{aligned} \mu[m] \frac{1}{N_0} \sum_{n0}^{N_0-1} \mathbf{C0}[m, n] \ \sigma^2[m] \frac{1}{N_0} \sum_{n0}^{N_0-1} \big(\mathbf{C0}[m, n] - \mu[m]\big)^2 \ \mathbf{C0}_{\text{norm}}[m, n] \frac{\mathbf{C0}[m, n] - \mu[m]}{\sqrt{\sigma^2[m] \epsilon}} \cdot \gamma[n] \beta[n] \end{aligned} $$其中 $\epsilon 10^{-6}$$\boldsymbol{\gamma}$缩放和 $\boldsymbol{\beta}$偏置为可学习参数长度均为 $N_0$。阶段三第二个 Matmul$\mathbf{C1} \mathbf{C0}_{\text{norm}} \times \mathbf{B1}$输出形状 $(M_0, M_1)$。核心开发要求及验收标准功能实现要求实现融合的 Matmul → LayerNorm → Matmul单次 kernel launch 完成全部三段计算。Mean 和 Variance 等中间结果由算子内部 workspace 管理不对外暴露。参数说明参数名输入/输出/属性描述使用说明数据类型数据格式维度(shape)非连续TensorA0输入第一个 Matmul 左矩阵形状 (M₀, K₀)RowMajor 布局FP16ND2—B0输入第一个 Matmul 右矩阵形状 (K₀, N₀)ColumnMajor 布局FP16ND2—B1输入第二个 Matmul 右矩阵形状 (N₀, M₁)ColumnMajor 布局FP16ND2—gamma输入LayerNorm 缩放参数长度 N₀可学习参数FP32ND1—beta输入LayerNorm 偏置参数长度 N₀可学习参数FP32ND1—C1输出第二个 Matmul 输出矩阵形状 (M₀, M₁)唯一对外输出FP16ND2—算子约束限制无测试标准需参考 CPU 精度标杆自行设计自验证用例覆盖多种问题规模组合。自验证报告完整、可复现所有测试用例执行通过。性能要求性能标杆为CUTLASS的37_gemm_layernorm_gemm_fusion算子整体性能需与 0.8 倍 GPUH100持平。精度要求算子计算精度需满足 AscendOpTest 工具默认阈值。文档规范要求算子设计文档需根据参考模板填写内容完整、格式规范且必须通过评审自验证报告需要覆盖所有功能场景参考xxx算子自验证报告含测试用例执行日志/截图、整体测试通过截图、性能数据截图可清晰指导算子使用与测试README 文档内容完整、规范。验收交付件1, 自测用例、测试结果报告、测试步骤指导文档2, 算子代码的私仓邀请链接、代码仓路径、分支、算子目录PR 申请合入测试通过后在 Catlass 代码仓提交 PR 申请申请将开发完成的算子合入https://link.gitcode.com/i/f76796270e0127820db4a17c2cf8a34a具体目录参考该PRhttps://link.gitcode.com/i/f76796270e0127820db4a17c2cf8a34a/pull/678 。参考资料文档类Ascend C算子开发文档、CATLASS创新样例开发流程指南课程类Ascend C在线课程参考样例https://link.gitcode.com/i/f76796270e0127820db4a17c2cf8a34a/blob/master/examples/44_quant_matmul_full_loadA_tla环境获取开源仓提供100小时免费时长请不使用时及时关闭用时耗尽前请务必保存相关资料建议及时提交备份。使用 hidevlab notebook 算力https://hidevlab.huawei.com/online-develop-intro?fromhiascend如需额外环境资源请联系昇腾小助手。特别注意事项开发过程需严格遵循 Ascend C 编程规范及算子开发相关要求所有交付件需提前完成自验证确认符合验收标准后再提交验收申请开发前请务必阅读【社区任务】流程及注意事项会例行更新。【免费下载链接】cann-ops-competitions本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。项目地址: https://gitcode.com/cann/cann-ops-competitions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考