已关闭
[Requirement|需求建议]: LayerNorm类算子VL/UB block去硬编码 #5099
rk创建于  12 天前关闭于  5 天前
rk成员
12 天前 创建

一、背景信息(Backgroud)

norm 系列算子(add_layer_norm_quant、layer_norm_grad/grad_v3、layer_norm_v3、layer_norm_v4)的 arch35 路径中,UB/VL block size 长期以硬编码常量 32 表示,散落在 host tiling(BLOCK_SIZEBLOCK_BYTESB32_ALIGN_NUM)与 kernel 侧(自定义 GetUbBlockSize()BLOCK_SIZE)多个文件中。该值与具体硬件的 Unified Buffer block 字节宽度强绑定,缺乏单一数据源。

二、信息来源(Origin)

ops-nn 仓库代码规范治理需求(norm 算子 arch35 路径自查)。

三、价值/作用(Benefit / Necessity)

  • 消除魔法数字,让 block size 由平台 API 在运行时获取,未来硬件 block size 调整时无需逐文件修改;
  • 统一 host 侧与 kernel 侧的数据来源,避免同一语义多重定义带来的不一致风险;
  • 提升代码可维护性与跨硬件适配能力。

四、设计方案(Design)

  • Host tiling 侧:删除本地 constexpr BLOCK_SIZE = 32 等常量,改用 Ops::Base::GetUbBlockSize(context_)op_common/op_host/util/platform_util.h),部分场景复用类成员 this->blockSize_
  • Kernel 侧:将 constexpr static int64_t BLOCK_SIZE = 32 替换为 platform::GetUbBlockSize()../../inc/platform.h);
  • Kernel 侧(layer_norm_grad_base.h):移除自定义 GetUbBlockSize() 内联函数,统一使用 AscendC 框架 BLOCK_SIZE

关联 PR:https://gitcode.com/cann/ops-nn/pull/9042

likedislike
Rrk成员
12 天前 添加了label:requirement
rk成员
12 天前 评论:

/assign

likedislike
CANN-robotCANN-robot成员
12 天前 将 wangpengbo26 设为负责人
CANN-robotCANN-robot成员
5 天前 关闭了 issue
CANN-robotCANN-robot成员
4 天前 添加了label:resolved