已开启
🔍 代码侦探·第九期(CATLASS实操)|补全算子代码有奖,周周赢取定制礼品! #777
昇腾CANN小助手创建于  22 天前
昇腾CANN小助手
昇腾CANN小助手
22 天前 创建

通用banner.png

每周更新活动代码,参与补全代码使其能够正确运行并在此 issue 下方评论提交 PR 链接,即有机会赢取奖励!

更多活动大奖等你来拿! 👉 立即参与


参与流程

01 学习课程 02 查看任务书 03 提交PR链接 04 本issue页评论
完成直播课程学习后,再回到本题目尝试独立实现 任务书链接 PR参考链接 按以下固定格式评论答题

本期活动时间:至 10月29日 24:00


一、本期活动代码 · CATLASS Python 融合算子

基于 CATLASS Python 实现 MatmulAddRelu 融合算子:补全五处关键代码,完成数据加载、Cube 矩阵乘、Vector 加法与 ReLU。体验 Cube 与 Vector 协同计算,快来挑战!

按照任务书中要求,根据任务说明中的// 请补充……注释提示,补充代码实现,完成本期CATLASS Python 融合算子的开发,并按要求提交PR。


二、答题评论格式

参与者请在本 issue 下方按以下固定格式评论答题,格式不全或信息缺失将视为无效答题,无法兑奖:

1. PR 链接:请提交至指定仓库(cann-outreach)后,在此附上 PR 链接,确保链接公开可访问,PR 链接标题前缀必须带上【代码侦探·Challenge 09】

2. 提供自验证报告:请提交验证成功的图片(如下图)
预期输出2.jpg

3. 提供渠道来源(如下示例):

  • 渠道:(自行填写,您通过什么途径/方向参与活动,如线下场次或线上宣发)
  • 参考示例:
    • 线下场次:实训营 / 淬火成都场 / 东南大学高校专场……
    • 线上宣发:朋友圈 / 微信群 / 公众号 / 群聊转发 / 好友邀请……

格式示例:

PR 链接:XXX
自验证报告:图片
渠道:XX

🔄 注意:

  1. 活动截止时间为 10 月 29 日 24:00,PR 更新和 issue 评论时间均需在截止时间内,逾期不计入有效参与;
  2. 每位参与者仅可提交 1 条有效评论;
  3. 评论符合格式,即可参与抽奖,最终能否获奖以抽中楼层后的资格核对为准
  4. 为提升HiDevLab资源使用体验,我们将于2026年9月29日18:00至10月5日9:00对实验室基础设施进行集中检修升级,届时实验室下电维护,在线开发、技术合作、高校科研生态合作等将暂停服务。请您于9月29日18:00前完成数据备份(业务数据、配置文件及重要信息),并主动停止运行中的任务、关闭实例,避免下电导致数据损坏。10月5日9:00起,我们将逐步恢复环境与服务;如遇异常,可通过工单或邮箱联系我们,我们会及时跟进解决,感谢您的理解与配合~

三、奖项设置

🏅 奖项

奖项 名额 奖项名称 奖品 获奖规则
第1名 1名 🔍 最佳侦探奖 HUAWEI FreeBuds 7i / 华为手环 11 NFC版 第一个评论合规、PR 正确运行且已合入者直接获奖
幸运奖 按参与人数抽取 🎲 幸运侦探奖 背包 / 冲锋衣 / 华为多协议超级快充移动电源10000mAh / 华为无线鼠标 / 智能声波牙刷 / 智能咖啡杯 从剩余参与者(即未获得最佳侦探奖的所有参与者)中,按评论楼层顺序,以随机种子抽取(按参与人数解锁)

🏅 名额(参与人数越多,送出的奖品越多)

参与人数 第一名 抽奖人数
25 人以下 1 人 2 人
30 人 1 人 4 人
40 人 1 人 5 人
50 人 1 人 6 人
50 人以上 1 人 7 人

📋 获奖规则

✅ 1. 参与与获奖

  • 参与:在本 issue 按格式评论并提交 PR 链接,即可参与抽奖;
  • 获奖:须满足全部获奖条件——评论格式完整 + PR 标题含【代码侦探·Challenge 09】前缀 + PR 已完成合入

✅ 2. 抽奖规则

  • 每期题目刷新后按评论发布时间正序排列,最早评论答题的为 1 楼,以此类推,楼层总数为 N;
  • 抽取方式:程序以抽奖当天的公历 + 星期 + 农历日期为种子,生成数字随机种子,按评论楼层顺序(1 楼 → N 楼)抽取中奖楼层号;
  • 中奖楼层若未按格式答题 / 答案错误 / PR 未合入 / 当月已获奖,则为无效中奖,无法兑奖

四、兑奖须知

  • 每个 AtomGit 账号 ID 每月仅可获奖 1 次,若中奖用户当月已获奖,则本次中奖无效,无法兑奖;
  • 兑奖需关注 CANN 社区并 Star cann-outreach 仓;
  • 11 月 4 日将在此 issue 公布获奖名单,请获奖者微信添加 昇腾CANN小助手(微信号:Ascend-CANN) 领取奖品;
  • 获奖名单公布后设 5 个工作日公示期,公示期内接受异议,公示期后不再受理;
  • 本次活动最终解释权归活动方所有

五、常见问题(FAQ)

  • 作为新手小白如何提交代码?
    A:参考小白CANN社区贡献代码全流程

  • PR 需要先提交才能参与吗?
    A:需要。PR 已提交至指定仓库且链接可公开访问即可参与,审核人员会验证代码是否正确

  • 评论后可以修改吗?
    A:可以,但修改后的评论以最后编辑时间为准;建议确认无误后再提交,避免因编辑时间影响 TOP1 排名

  • 如果 TOP1 获奖者同时被抽中幸运奖怎么办?
    A:TOP1 获奖者不参与幸运奖抽取,幸运奖从剩余答题者中产生

  • 公示期内发现问题如何反馈?
    A:可直接在本 issue 下评论或私信昇腾小助手(微信号:Ascend-CANN),我们将在核实后进行相应处理

  • PR 标题忘记加【代码侦探·Challenge 09】前缀了怎么办?
    A:可在活动截止前修改 PR 标题补上前缀,修改后仍有效;若截止时仍未添加,则该 PR 不计入有效参与

  • 截止时间以什么为准?
    A:PR 更新和 issue 评论时间均需在截止时间内,请在截止时间前完成 PR 及评论提交,逾期不计入有效参与

likedislike
Code_demo111111
22 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4268
自验证报告:image.png
渠道:公众号

likedislike
小久
小久
22 天前 评论:

需要验证图片

likedislike
JeffDing
JeffDing
22 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4270
自验证报告:
image.png
渠道:微信群

likedislike
gcw_93rlw6ed
22 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4269
自验证报告:verify_pass.png
渠道:线上宣发(CANN 社区)

likedislike
Jinfan LiuJinfan Liu
22 天前 关联了pull request:【代码侦探·Challenge 09】CATLASS DSL MatmulAddRelu 融合算子补全(JfanLiu)
村雨雨雨村雨雨雨
22 天前 关联了pull request:【代码侦探·Challenge 09】CATLASS DSL MatmulAddRelu 融合算子补全 + 补充自检(Murasame_214)
gcw_JQJBklQH
gcw_JQJBklQH
22 天前 评论:

PR链接:https://gitcode.com/cann/cann-outreach/pull/4267
自验证报告:图片
渠道:CANN社区

likedislike
Jinfan Liu
Jinfan Liu
22 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4265

自验证报告:

Challenge09 验证报告 · JfanLiu

渠道:cann小助手

likedislike
村雨雨雨
村雨雨雨
22 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4266

自验证报告:

Challenge09 验证报告 · Murasame_214

渠道:cann小助手

likedislike
jiay0u
jiay0u
21 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4274
自验证报告:
img_v3_02161_24051fdb-2754-406c-84e6-4ed0c798348g.jpg
渠道:cann小助手

likedislike
Ttianjun
21 天前 关联了pull request:【代码侦探·Challenge 09】个人开发者 MatmulAddRelu 融合算子
木路折木路折
17 天前 关联了pull request:【代码侦探·Challenge 09】补全 MatmulAddRelu 融合算子五处 TODO
木路折木路折
17 天前 关联了pull request:【代码侦探·Challenge 09】补全 MatmulAddRelu 融合算子五处 TODO
木路折
木路折
17 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4291
自验证报告:image.png
渠道:微信群

likedislike
konka0812konka0812
14 天前 关联了pull request:【代码侦探·Challenge 09】qq_61897309 的 MatmulAddRelu 补全实现
StudentXHFStudentXHF
13 天前 关联了pull request:【代码侦探·Challenge 09】电子科技大学 - StudentXHF_09 - MatmulAddRelu
StudentXHF
StudentXHF
12 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4299

自验证报告:
HiDevLab-Ascend950-PASS.png

渠道:线上宣发:GitCode CANN 社区活动页面

likedislike
爱上纯净的蓝天
爱上纯净的蓝天
10 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4307
自验证报告:
image.png
渠道:微信朋友圈

likedislike
爱上纯净的蓝天爱上纯净的蓝天
10 天前 关联了pull request:【代码侦探·Challenge 09】完成 CATLASS Python MatmulAddRelu 融合算子
UUESTC_xhf
6 天前 关联了pull request:【代码侦探·Challenge 09】电子科技大学 - UESTC_xhf - MatmulAddRelu
UESTC_xhf
6 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4318
自验证报告:当前账号的 HiDevLab Ascend 950 算力资格仍在开通中,暂未取得实机 PASS 截图;Python 语法检查已通过。获得 950 算力后补充真实验证图片。
渠道:线上宣发:GitCode CANN 社区活动页面

likedislike
HansonZhang
HansonZhang
6 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4319

自验证报告:暂无 Ascend 950 实机 PASS 截图,如实说明如下。

本机无 NPU 设备节点(无 /dev/davinci0),且暂无 HiDevLab 可用凭据,
因此无法执行 python PR_code/HansonZhang/test_matmul_add_relu.py --device 0。
未使用任何占位图,也未引用他人验证图。

已实际执行并通过的检查:

检查项 结果
python -m py_compile 两个文件 PASS
cmp 验证脚本与 Template 字节一致 PASS(未改判定脚本)
diff 改动范围审计 PASS,仅 5 个 hunk 落在 TODO 分隔线之间
API 签名逐条对照 ascend-catlass-dsl==2.1.0 源码 PASS
算法级数值仿真(复刻核函数控制流,纯 CPU) PASS,0/65536 元素不匹配

算法级仿真严格复刻了本核的控制流:K=64 四分片累加 → SPLIT_M 按 M 行均分给
2 个 AIV → 每 AIV 两个 64×256 分片 → 每行 4 个 1×64 SIMD 向量
Add → ReLU → 原位写回 → 写回 GM,输出 max|diff| = 1.53e-05,
并做了反向对照(写成 ReLU(A@B)+X 会有 35348/65536 元素不匹配)。
该仿真覆盖算法逻辑,不覆盖 DSL 编译产物在真机上的行为,不能替代官方 PASS 输出。

补全要点:init_c 首片 True 覆盖 L0C、后三片 False 累加;L0C→UB 用
CopyL0C2DstParams(l0c2ub_mode=SPLIT_M) 且不启用 relu_enable
(该功能在 2.1.0 尚未实现,强行开启会抛 NotImplementedError);
ReLU 严格在加 X 之后由 Vector 侧 tla.max 完成。

取得可用算力后将运行官方验证脚本,并在此 issue 追加真实结果
(只追加新评论,不编辑本条,以免影响按楼层顺序的抽奖排名),代码本身不再改动。

渠道:线上宣发:GitCode CANN 社区活动页面

likedislike
SStudent_ZZX
6 天前 关联了pull request:【代码侦探·Challenge 09】Student_ZZX 补全 MatmulAddRelu 算子
HansonZhang
HansonZhang
5 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4319
自验证报告:暂缺实机截图(提交环境无 Ascend NPU 算力,test_matmul_add_relu.py 未执行)。已完成的替代检查记录在 PR 的 verification/verify_report.txt,其中诚实列出了未完成项;性能相关内容均为 roofline 解析估算,硬件相关量以符号保留,未代入任何猜测值。拿到 Ascend 950 环境后可用 verify_hidevlab.sh 一键补齐,届时会追加评论。
渠道:线上宣发:GitCode CANN 社区活动页面


补充说明(PR 已完善)

本次 PR 在原五处 TODO 补全基础上,追加了三项可复现的自证材料:

  1. perf_facts.py —— 从代码导出确定性性能量(访存字节数、FLOPs、切分规模),无硬件参数、无随机性。
    关键结论:算术强度 42.67 FLOP/B,只要「Cube 吞吐 : HBM 带宽」比值 > 43 即为 compute-bound;L0C 的 4 次累加读写合计 1 MiB,是 GM 流量的 4 倍,为最大单项片上开销;SPLIT_M 将 256 行均分为 128/128,整除无尾块,两个 AIV 负载完全均衡;每行恰好 4 个 64-lane SIMD 向量,无尾掩码。

  2. algosim.py —— 算法级数值仿真,逐元素对照 ReLU(A@B+X)。
    特别加入了反向对照:仅证明「仿真没报错」是不够的(恒真的仿真也会 PASS),因此把本题真值故意实现为错误顺序 ReLU(A@B)+X,实测不匹配 35348/65536,错误率过半 —— 说明该仿真有鉴别力,不是摆设。

  3. PERF-ANALYSIS.md —— 完整的 roofline 推导与设计取舍分析。

所有结论均标注为解析推导,不含任何实测时延、吞吐或 TFLOPS。题目明确要求 Ascend 950,而本环境无该硬件,故不以其它平台数据替代。

likedislike
UESTC_xhf
5 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4318

自验证报告:已在本人 HiDevLab Ascend 950 环境按官方命令完成实机验证,截图包含 CATLASS 与 PyTorch 两组数字矩阵及最终 PASS。

  • 芯片:Ascend950PR_9579
  • torch:2.9.0+cpu
  • torch_npu:2.9.0.post6
  • 结果:PASS: M=N=K=256, blocks=1
  • 退出状态:0

完整验证截图:

HiDevLab-Ascend950-PASS-full-UESTC_xhf.png

渠道:线上宣发:GitCode CANN 社区活动页面

likedislike
acam2adam
acam2adam
4 天前 评论:

PR 链接:【代码侦探Challenge09】完成 MatmulAddRelu 融合算子实现https://gitcode.com/cann/cann-outreach/pull/4363
自验证报告:image.png
渠道:线上宣发:2026.CANN训练营

likedislike
Xxhf_A2_1
3 天前 关联了pull request:【代码侦探·Challenge 09】电子科技大学 - xhf_A2_1 - MatmulAddRelu
xhf_A2_1
3 天前 评论:

PR 链接:https://gitcode.com/cann/cann-outreach/pull/4395

自验证报告:已在本人 HiDevLab Ascend 950 环境按官方命令完成实机验证,截图同屏包含 CATLASS 与 PyTorch 两组 tensor 数字矩阵及最终 PASS。

芯片:Ascend950PR_9579
CANN:9.1.0
CATLASS:2.1.0
torch:2.9.0+cpu
torch_npu:2.9.0.post6
结果:PASS: M=N=K=256, blocks=1
退出状态:0

完整验证截图:

Ascend950PR MatmulAddRelu PASS

渠道:线上宣发:GitCode CANN 社区活动页面

likedislike
Student_ZZX
3 天前 评论:

PR 链接:【代码侦探·Challenge 09】Student_ZZX 补全 MatmulAddRelu 算子

自验证报告:HiDevLab Ascend 950(CANN 9.1.0 Ubuntu)实机验证通过,Catlass Python 与 PyTorch 参考矩阵一致,输出 PASS: M=N=K=256, blocks=1。

challenge09_pass_ubuntu.png

渠道:线上宣发:GitCode CANN 社区活动页面

likedislike