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_SIZE、BLOCK_BYTES、B32_ALIGN_NUM)与 kernel 侧(自定义 GetUbBlockSize()、BLOCK_SIZE)多个文件中。该值与具体硬件的 Unified Buffer block 字节宽度强绑定,缺乏单一数据源。
32
BLOCK_SIZE
BLOCK_BYTES
B32_ALIGN_NUM
GetUbBlockSize()
ops-nn 仓库代码规范治理需求(norm 算子 arch35 路径自查)。
constexpr BLOCK_SIZE = 32
Ops::Base::GetUbBlockSize(context_)
op_common/op_host/util/platform_util.h
this->blockSize_
constexpr static int64_t BLOCK_SIZE = 32
platform::GetUbBlockSize()
../../inc/platform.h
关联 PR:https://gitcode.com/cann/ops-nn/pull/9042
/assign
一、背景信息(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_SIZE、BLOCK_BYTES、B32_ALIGN_NUM)与 kernel 侧(自定义GetUbBlockSize()、BLOCK_SIZE)多个文件中。该值与具体硬件的 Unified Buffer block 字节宽度强绑定,缺乏单一数据源。二、信息来源(Origin)
ops-nn 仓库代码规范治理需求(norm 算子 arch35 路径自查)。
三、价值/作用(Benefit / Necessity)
四、设计方案(Design)
constexpr BLOCK_SIZE = 32等常量,改用Ops::Base::GetUbBlockSize(context_)(op_common/op_host/util/platform_util.h),部分场景复用类成员this->blockSize_;constexpr static int64_t BLOCK_SIZE = 32替换为platform::GetUbBlockSize()(../../inc/platform.h);GetUbBlockSize()内联函数,统一使用 AscendC 框架BLOCK_SIZE。关联 PR:https://gitcode.com/cann/ops-nn/pull/9042