news 2026/7/5 19:34:23

CANN社区DualMatmul算子任务

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN社区DualMatmul算子任务

7月社区任务-DualMatmul算子开发任务书

【免费下载链接】cann-ops-competitions本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。项目地址: https://gitcode.com/cann/cann-ops-competitions

基础信息

  • 技术标签:算子开发
  • 适配硬件:Ascend 950PR/Ascend 950DT
  • 开源仓地址:https://link.gitcode.com/i/5648d3dd57789fd59122a16433f2e92e
  • CANN 版本:算子开源仓指定版本
  • 开发语言:Ascend C

任务概述

本算子实现共享输入的双 Matmul + 逐元素融合(Dual Matmul with Element-wise Fusion)。两个 Matmul 共享同一个输入矩阵 X,分别与 B0 和 B1 做矩阵乘,然后对两个输出做逐元素融合操作(如 SiLU + Multiply)。该融合方式可减少显存带宽开销,适用于 GLU 变体激活函数等场景。

算子公式

两个独立的 Matmul: $$ \begin{aligned} \mathbf{D0} &= \mathbf{X} \times \mathbf{B0} \ \mathbf{D1} &= \mathbf{X} \times \mathbf{B1} \end{aligned} $$

逐元素融合(以 LeftSiLUAndMul 为例): $$ \mathbf{D}[i, j] = \text{SiLU}(\mathbf{D0}[i, j]) \times \mathbf{D1}[i, j] $$ 其中 $\text{SiLU}(x) = x \cdot \sigma(x) = \dfrac{x}{1 + e^{-x}}$。

核心开发要求及验收标准

功能实现要求

  1. 实现共享输入的双 Matmul + 逐元素融合,单次 kernel launch 完成全部计算。
  2. B0 和 B1 共享相同 shape。

参数说明

参数名输入/输出/属性描述使用说明数据类型数据格式维度(shape)非连续Tensor
X输入共享输入矩阵,形状 (M, K)RowMajor 布局FP16/BF16ND2
B0输入第一个 Matmul 右矩阵,形状 (K, N)ColumnMajor 布局FP16/BF16ND2
B1输入第二个 Matmul 右矩阵,形状 (K, N)ColumnMajor 布局FP16/BF16ND2
D输出逐元素融合输出,形状 (M, N)SiLU(X@B0) × (X@B1)FP16/BF16ND2

算子约束限制

  • 无特殊约束

测试标准

需参考 CPU 精度标杆自行设计自验证用例。自验证报告完整、可复现,所有测试用例执行通过。

性能要求

性能标杆为CUTLASS的45_dual_gemm,算子整体性能需与 0.8 倍 GPU(H100)持平。

精度要求

算子计算精度需满足 AscendOpTest 工具默认阈值。

文档规范要求

  1. 算子设计文档需根据参考模板填写,内容完整、格式规范,且必须通过评审;
  2. 自验证报告需要覆盖所有功能场景,参考xxx算子自验证报告,含测试用例执行日志/截图、整体测试通过截图、性能数据截图,可清晰指导算子使用与测试;
  3. README 文档内容完整、规范。

验收交付件

1, 自测用例、测试结果报告、测试步骤指导文档

2, 算子代码的私仓邀请链接、代码仓路径、分支、算子目录

PR 申请合入

测试通过后,在 Catlass 代码仓提交 PR 申请,申请将开发完成的算子合入https://link.gitcode.com/i/5648d3dd57789fd59122a16433f2e92e,具体目录参考该PR:https://link.gitcode.com/i/5648d3dd57789fd59122a16433f2e92e/pull/678 。

参考资料

  1. 文档类:Ascend C算子开发文档、CATLASS创新样例开发流程指南
  2. 课程类:Ascend C在线课程
  3. 参考样例:https://link.gitcode.com/i/5648d3dd57789fd59122a16433f2e92e/blob/master/examples/44_quant_matmul_full_loadA_tla

环境获取

  1. 开源仓提供100小时免费时长,请不使用时及时关闭,用时耗尽前请务必保存相关资料,建议及时提交备份。

  2. 使用 hidevlab notebook 算力(https://hidevlab.huawei.com/online-develop-intro?from=hiascend)

  3. 如需额外环境资源,请联系昇腾小助手。

特别注意事项

  1. 开发过程需严格遵循 Ascend C 编程规范及算子开发相关要求;
  2. 所有交付件需提前完成自验证,确认符合验收标准后再提交验收申请;
  3. 开发前请务必阅读【社区任务】流程及注意事项,会例行更新。

【免费下载链接】cann-ops-competitions本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。项目地址: https://gitcode.com/cann/cann-ops-competitions

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 19:33:59

泰戈尔的诗歌7

开始 “我是从哪儿来的?你,在哪儿把我捡起来的?”孩子问他的妈妈说。 她把孩子紧紧地搂在胸前,半哭半笑地答道—— “你曾被我当作心愿藏在我的心里,我的宝贝。 “你曾存在于我孩童时代玩的泥娃娃身上。 每天早晨我…

作者头像 李华
网站建设 2026/7/5 19:29:08

如何高效永久保存微信聊天记录:WeChatMsg全面备份与导出实用指南

如何高效永久保存微信聊天记录:WeChatMsg全面备份与导出实用指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendin…

作者头像 李华
网站建设 2026/7/5 19:28:04

为什么ripgrep成为现代代码搜索的终极解决方案

为什么ripgrep成为现代代码搜索的终极解决方案 【免费下载链接】ripgrep ripgrep recursively searches directories for a regex pattern while respecting your gitignore 项目地址: https://gitcode.com/GitHub_Trending/ri/ripgrep 在当今快节奏的开发环境中&#x…

作者头像 李华
网站建设 2026/7/5 19:25:58

BTTV安卓版版本更新机制:自动更新与手动升级对比

BTTV安卓版版本更新机制:自动更新与手动升级对比 【免费下载链接】bttv A mod of the Twitch Android Mobile App adding BetterTTV, FrankerFaceZ and 7TV emotes 项目地址: https://gitcode.com/gh_mirrors/bt/bttv BTTV(BetterTTV)…

作者头像 李华
网站建设 2026/7/5 19:25:58

3个关键步骤:让ANI-RSS自动为你的动漫库生成完美元数据

3个关键步骤:让ANI-RSS自动为你的动漫库生成完美元数据 【免费下载链接】ani-rss 基于RSS自动追番、订阅、下载、刮削、洗版 项目地址: https://gitcode.com/gh_mirrors/an/ani-rss 你是否曾经花费数小时手动整理动漫文件的元数据?海报、剧情简介…

作者头像 李华