InplaceAddLayerNorm :需要在 950 平台上提供该算子支持,以满足 950 上 LayerNorm 类前向计算的需求。
InplaceAddLayerNorm
cann/ops-nn 仓库算子适配需求:将 InplaceAddLayerNorm 扩展到 Ascend 950 平台,并基于已存在的 AddLayerNorm 950 regbase 实现来落地,减少重复实现成本。
AddLayerNorm
inplace_add_layer_norm_def.cpp
OpAICoreConfig config_950
ascend950
Tiling4AddLayerNorm
TilingAddLayerNorm
AddLayerNorm_8010/8011/8012/8200
InplaceAddLayerNorm_8000~8200
isReduceEmpty_
arch35/add_layer_norm.cpp
arch35/inplace_add_layer_norm.cpp
add_layer_norm_regbase_reduce_empty.h
BUFFER_NUM
VFCalcY
inplace_add_layer_norm_binary.json
ascendc_config.json
CMakeLists.txt
--cce-no-dcache-flush --cce-simd-vf-fusion=false
关联 PR:https://gitcode.com/cann/ops-nn/pull/8736
背景(背景信息)
InplaceAddLayerNorm:需要在 950 平台上提供该算子支持,以满足 950 上 LayerNorm 类前向计算的需求。信息来源
cann/ops-nn 仓库算子适配需求:将
InplaceAddLayerNorm扩展到 Ascend 950 平台,并基于已存在的AddLayerNorm950 regbase 实现来落地,减少重复实现成本。价值 / 作用
InplaceAddLayerNorm在 Ascend 950 上的支持矩阵,使上层模型可在 950 上使用该算子。AddLayerNorm的 regbase tiling 与 kernel 框架,避免为 inplace 版本单独维护一套 950 实现。设计方案
inplace_add_layer_norm_def.cpp新增OpAICoreConfig config_950,注册ascend950,支持 fp16/bf16/fp32 多 dtype 组合,开启动态编译静态/动态 rank/动态 shape。InplaceAddLayerNorm的 tiling 函数从Tiling4AddLayerNorm改为TilingAddLayerNorm(regbase 路径),并新增AddLayerNorm_8010/8011/8012/8200、InplaceAddLayerNorm_8000~8200的 tiling data class 注册以覆盖 950 子型号。新增空张量场景处理(isReduceEmpty_)。arch35/add_layer_norm.cpp、arch35/inplace_add_layer_norm.cpp入口;新增add_layer_norm_regbase_reduce_empty.h处理空张量;BUFFER_NUM默认改为双 buffer;VFCalcY增加 x 输出参数支持 inplace 写出 x。inplace_add_layer_norm_binary.json;从全局ascendc_config.json移除旧条目,改由各算子目录CMakeLists.txt声明 950 编译目标(选项--cce-no-dcache-flush --cce-simd-vf-fusion=false)。关联 PR:https://gitcode.com/cann/ops-nn/pull/8736