已合并
perf(gmmaq): fit epilogue UB double buffer for target shape #11198
perf(gmmaq): fit epilogue UB double buffer for target shape #11198
已合并
zhoushaolong创建于 14 天前
zhoushaolong
zhoushaolong成员
14 天前

描述

针对 Ascend950 arch35 的 GroupedMatmulActivationQuant(GMMAQ)tiling,增加 epilogue UB 双缓冲的空间适配逻辑。

主要改动如下:

  • 新增 epilogue UB 空间估算,综合计算中间结果、量化结果、scale 以及双缓冲所需的 UB 空间。
  • baseM 经过基础 tiling 计算和 UB 上限约束后,检查当前分块是否能够容纳 epilogue 双缓冲。
  • 当 UB 空间不足时,按照 GmmConstant::CUBE_BLOCK 步长递减搜索可用的 baseM
  • 仅在调整后的平均分块数量不增加时更新 baseM,避免引入额外的分块开销。
  • 在执行 L1 tiling 前完成 baseM 调整,确保后续 tiling 参数基于最终分块尺寸计算。

关联的Issue

https://gitcode.com/cann/ops-transformer/issues/4955

测试

本次未新增或修改测试文件。现有 grouped_matmul_activation_quant host UT 包含对 epilogue 每个 AIV 的元素数量上限校验,但当前 PR 未提供具体测试执行记录,需补充相关测试结果。

文档更新

无。

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 zhoushaolong 的贡献)
zhoushaolongzhoushaolong成员
14 天前 创建了 pull request,commit 25511b43
atomgit-bot
atomgit-bot
14 天前 评论:

变更摘要

本 PR 针对 gmmaq(grouped matmul activation quant)算子做性能优化,核心改动位于 GroupedMatmulActivationQuantTiling950::DoLibApiTiling()(文件 grouped_matmul_activation_quant_tiling.cpp)。改动在 M 分块计算完成后新增了一个实验性逻辑:当输入满足特定目标形状(inputParams_.mSize == 51200nSize == 1536kSize == 4096groupNum == 80)且 baseM/baseN 均为 256(GmmConstant::BASIC_BLOCK_SIZE_256)时,将 basicTiling_.baseM 下调一个 16 行的 cube 单元至 224(EPILOGUE_DB_EXPERIMENT_BASE_M),从而为 Epilogue 腾出可分配两个 UB 输出槽(双缓冲)的空间。该实验按形状范围收敛,待性能结果确认后再决定是否推广,改动不涉及接口、数据结构和配置变更。

主要改动

  • 新增形状限定实验分支: 在 basicTiling_.baseM = std::min(alignedBaseM, maxBaseMByUb) 计算之后,新增一段注释为 Experiment 的条件判断,通过 inputParams_mSize/nSize/kSize/groupNum 精确匹配目标形状,保证实验只作用于该特定场景。
  • 下调 M 分块以适配 Epilogue UB 双缓冲: 当 baseMbaseN 均为 GmmConstant::BASIC_BLOCK_SIZE_256 时,将 basicTiling_.baseM 由 256 改为新增常量 EPILOGUE_DB_EXPERIMENT_BASE_M(224),即减少一个 16 行 cube 单元,使 Epilogue 能分配两个 UB 输出槽,属于 GroupedMatmulActivationQuantTiling950::DoLibApiTiling() 中纯本地、不改变外部接口的 M 分块调整。
likedislike
不准确?
CANN-robotCANN-robot成员
14 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
14 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
gmm kknan, 陈康 (2/2) kknan (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

zhoushaolong, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
CANN-robotCANN-robot成员
14 天前 将chenkang30,juyangokok,monologue815,chaotang233,wuyi_huawei,chen-linxin4,jiang-lirui,Allan_Yu,liudan12,shi-rui,cc-z,kknan,wenxin_fight,mabing1118设为评审人
此处折叠了7条事件消息 查看更多
zhoushaolongzhoushaolong成员
13 天前 修改了pull request 的描述
zhoushaolong
zhoushaolong成员
13 天前 评论:

compile

likedislike
zhoushaolongzhoushaolong成员
13 天前 预合并成功(commit_id: c6ca3374d385e5372181e3e4647c33c0243d9365)
CANN-robot
CANN-robot成员
13 天前 评论:
🚀 CI 流水线已启动
📋 执行详情: 点击查看流水线
likedislike
CANN-robotCANN-robot成员
13 天前 添加了label:ci-pipeline-running
此处折叠了6条事件消息 查看更多
CANN-robotCANN-robot成员
13 天前 添加了label:cann-cla/yes
zhoushaolong
zhoushaolong成员
13 天前 评论:

compile

likedislike
zhoushaolongzhoushaolong成员
13 天前 预合并成功(commit_id: 7fec4bd62ddaf4e2c62b55a7e77b04d9076c94be)
CANN-robot
CANN-robot成员
13 天前 评论:
🚀 CI 流水线已启动
📋 执行详情: 点击查看流水线
likedislike
CANN-robotCANN-robot成员
13 天前 删除了label:ci-pipeline-failed
CANN-robotCANN-robot成员
13 天前 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
13 天前 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
13 天前 添加了label:ci-pipeline-passed
kknan
kknan成员
9 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
9 天前 添加了label:approved
chen-kang30
chen-kang30成员
9 天前 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
9 天前 添加了label:lgtm
CANN-robotCANN-robot成员
9 天前 删除了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
9 天前 评论:

The following label is not ready.

ci-pipeline-passed: The ci-pipeline-passed label is expired as added over 72 hours. Please use /compile to recompile.

likedislike
zhoushaolong
zhoushaolong成员
9 天前 评论:

compile

likedislike
zhoushaolongzhoushaolong成员
9 天前 预合并成功(commit_id: 1c30b79784c77067b43f8a13c766729b73bb1056)
CANN-robot
CANN-robot成员
9 天前 评论:
🚀 CI 流水线已启动
📋 执行详情: 点击查看流水线
likedislike
CANN-robotCANN-robot成员
9 天前 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
9 天前 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
9 天前 添加了label:ci-pipeline-passed
CANN-robotCANN-robot成员
9 天前 关闭了关联的issue
CANN-robotCANN-robot成员
9 天前 合入了pull request