batch_norm_v3 的三个 infer 变体(InferLastChannelContinuousA、InferLastChannelSmallA、InferSmallAB1)的 Compute 方法通过 InferComputeImpl 模板 helper 间接调用 VFNormalize;rms_norm_grad 的 dgamma 计算通过 ComputePreDgamma 间接组装数据搬运与计算流程。这些间接层增加了 arch35 设备侧代码的阅读成本,调用点无法直接看到实际的数据搬运与计算顺序。
InferLastChannelContinuousA
InferLastChannelSmallA
InferSmallAB1
Compute
InferComputeImpl
VFNormalize
ComputePreDgamma
CANN 算子开发团队(代码可读性优化)。
将 InferComputeImpl、ComputePreDgamma 两个 helper 的逻辑内联回各自调用点:
CalcDgamma
VFCalcPreDgamma
dgammaOutAddr
关联 PR:https://gitcode.com/cann/ops-nn/pull/8107
Backgroud(背景信息)
batch_norm_v3 的三个 infer 变体(
InferLastChannelContinuousA、InferLastChannelSmallA、InferSmallAB1)的Compute方法通过InferComputeImpl模板 helper 间接调用VFNormalize;rms_norm_grad 的 dgamma 计算通过ComputePreDgamma间接组装数据搬运与计算流程。这些间接层增加了 arch35 设备侧代码的阅读成本,调用点无法直接看到实际的数据搬运与计算顺序。Origin(信息来源)
CANN 算子开发团队(代码可读性优化)。
Benefit / Necessity (价值/作用)
Design(设计方案)
将
InferComputeImpl、ComputePreDgamma两个 helper 的逻辑内联回各自调用点:Compute直接内联 DeQue/AllocTensor/GetPhyAddr/VFNormalize/EnQue/FreeTensorCalcDgamma及循环调用点直接内联 EnQue/DeQue/VFCalcPreDgamma/FreeTensor,dgammaOutAddr改为局部变量InferComputeImpl、ComputePreDgamma关联 PR:https://gitcode.com/cann/ops-nn/pull/8107