已关闭
[Requirement|需求建议]: BatchNormGradV3 在 A5 上支持输出 mask #6675
qianzehong创建于 16 天前关闭于 13 天前
16 天前 关联了pull request:feat: BatchNormGradV3 在 A5 上支持 output_mask
16 天前 修改了issue 的描述
16 天前 修改了issue 的描述
16 天前 将 qianzehong 设为负责人
15 天前 修改了issue 的描述
13 天前 关闭了 issue
13 天前 添加了label:resolved
Backgroud(背景信息)
BatchNormGradV3 需要在 A5 上支持按需输出 dx、dweight(dgamma)和 dbias(dbeta)。ACLNN L2 已有 outputMask,需要透传到 A5 的 L0、tiling 和 kernel;GEIR 需要公开的 output_mask 属性。
Origin(信息来源)
用户提出的 BatchNormGradV3 功能需求。部门/团队未提供。
Benefit / Necessity (价值/作用)
在保留三个输出的 shape、dtype 和必选定义的前提下,调用方可以关闭不需要的输出,避免对应的最终 GM 写入。
Design(设计方案)
参照 LayerNormGradV3,新增可选 ListBool 属性 output_mask,长度为 3,顺序为 [dx, dweight, dbias],默认 {true, true, true}。op proto 仅新增该属性;共用 OpDef 删除未参与计算的 version,最终属性顺序为 [is_training, epsilon, output_mask]。
仅 A5 实现 kernel 输出控制:aclnnBatchNormBackward 的 A5 分支通过新增 L0 重载透传 mask,tiling 使用 int64_t 的低 3 位编码,各 arch35 kernel 类按标记跳过关闭输出的最终写入,全 false 时直接返回。计算 dx 所需的 dgamma/dbeta 归约中间量仍保留。kernel 入口 batch_norm_grad_v3_apt.cpp 保持原版,关闭输出的内容无效。
A2/A3 保留原有 kernel、tiling 模板、tilingdata 布局及旧 L0 的两个 launcher 属性;普通 ACLNN 和 Fast ACLNN 的原有执行路径保持不变。共用属性定义和编译入口会变化,两个平台各 14 条二进制配置需将 version:int 替换为 output_mask:list_bool,以防编译参数错位。直接使用旧编译入口并显式传 version 的调用需要适配;Fast ACLNN 对外接口中的 version 参数保留。
验收
验证进展
关联 PR
11948