已关闭
[Requirement|需求建议]: 适配 GMMAQ epilogue UB 双缓冲的 baseM 分块 #4955
zhoushaolong创建于  12 天前关闭于  8 天前
zhoushaolong
zhoushaolong成员
12 天前 创建

Backgroud(背景信息)

GMMAQ Ascend950 arch35 tiling 在确定 baseM 后,需要保证 epilogue 双缓冲所需的中间结果、量化结果和 scale 缓冲区能够同时放入 UB。

现有基础分块计算无法根据 epilogue 双缓冲的完整 UB 字节占用动态调整 baseM。当目标 shape 的 epilogue 缓冲需求超过 UB 容量时,需要选择合适的分块尺寸以满足双缓冲空间要求。

Benefit / Necessity (价值/作用)

根据实际 UB 容量适配 epilogue 双缓冲,提升目标 shape 的 tiling 适配能力,并避免因 UB 空间不足导致运行时资源约束问题。

同时限制调整后的平均分块数量不增加,尽量保持原有分块效率。

Design(设计方案)

  1. 根据 baseMbaseN 和双缓冲数量估算 epilogue UB 空间:
    • 每个 AIV 处理 ceil(baseM / 2) 行。
    • 计算中间结果、量化结果、scale 及双缓冲所需的总字节数。
  2. 将估算结果与 aicoreParams_.ubSize 比较,判断当前分块是否支持 epilogue 双缓冲。
  3. 当当前 baseM 无法满足 UB 容量要求时,以 GmmConstant::CUBE_BLOCK 为步长递减搜索候选值。
  4. 仅当候选值能够满足 UB 容量要求,且平均分块数量不超过原配置时更新 baseM
  5. 在执行 L1 tiling 前完成上述调整。

关联 PR:https://gitcode.com/cann/ops-transformer/pull/11198

likedislike
zhoushaolongzhoushaolong成员
12 天前 将 zhoushaolong 设为负责人
游震成员
9 天前 评论:

/assign @zhoushaolong

likedislike
CANN-robotCANN-robot成员
8 天前 关闭了 issue
CANN-robotCANN-robot成员
8 天前 添加了label:resolved