已合并
fix: remove redundant vector workspace #11789
fix: remove redundant vector workspace #11789
已合并
zhang-song-rui创建于 24 天前
zhang-song-rui
zhang-song-rui成员
24 天前

描述

减少 NN Vector 路径冗余的系统 workspace,保留原有用户空间申请。

整改策略:原来额外申请了 userworkspace 的分支,保留系统预留和用户空间;没有额外 userworkspace 且不依赖 KFC 的分支,将系统空间申请量清零,并在 kernel 入口适配零 workspace。保留内部 kernel 参数和调用形式;无需用户空间的路径不调用 GetUserWorkspace,需要用户空间的路径保留正确的地址转换。

  • 混合分支在入口按 tilingKey 或既有模板模式处理用户空间转换;适配集中在 _apt.cpp。AddRmsNormDynamicQuant/V2 没有对应 _apt.cpp,使用现有入口 .cpp,仅 SPLIT 模式转换用户地址。

  • AddLayerNormQuant 保留非空路径原有申请;FullLoad 动态量化按原 useWs_ 条件转换用户地址,Welford 动态量化保留转换,空输入零空间路径跳过转换。

  • AddRmsNormCast、AddRmsNormDynamicQuant 在写入总申请量前检查用户空间大小:为 0 时清零系统预留,否则保持原申请。

  • AddRmsNorm、InplaceAddRmsNorm、RmsNorm 保留原有用户空间及系统预留。LpNormV2 不在本次修改范围内,保留原公共 Reduce 行为。

  • BatchNormGrad、BatchNormGradV3 的 batch_norm_grad_tiling.cpp、batch_norm_grad_v3_tiling.cpp 各仅将文件内 BNG_WORKSPACE_RESERVED 常量设为 0,各自四处赋值仍引用原常量;Split 分支其他文件的独立同名常量及申请不变。

  • 内部计算 kernel 的 workspace 参数和原有调用形式保持不变;本 PR 不包含 BatchNormElemt API 改写或 GroupNormV2 额外同步修改。

  • GroupNormGrad 将空输入分支前置,完成 dgamma/dbeta 初始化后返回;非空路径统一调用一次 GetUserWorkspace,保留原有 20 个模板分发及调用,删除分支内重复转换,不保留 workspace 判空返回。

  • 对仅服务于已清零路径的 workspace 常量,统一保留原赋值引用、将常量值设为 0。覆盖 AddRmsNormDynamicQuant 空输入、BatchNormGrad/V3 推理、GroupNormGrad 空输入、GroupNormV2、LayerNormGrad/V3 重计算、LayerNormV3/V4 对应路径以及 RmsNormGrad 空输入和 Regbase 路径,共 17 处赋值。需要用户空间的分支及其独立常量保持不变。

验证

2026-10-17 常量收敛后重新完成 NN Host 构建,现有 UT 388/388 通过。完成常量作用域和引用检查、GroupNormGrad 普通分支与基线一致性检查,以及按原文件行尾格式的 diff 检查。Host UT 不替代设备侧编译和执行验证;本次未重新进行设备验证,下方设备数据仅为历史版本结果。

依赖及构建

本 PR 无 CMake 改动,无新增 SSBUF 或芯片支持编译选项。opbase PR 1007 合入后,再更新对应远程依赖 commit。

关联

未关联独立 Issue。相关 opbase PR 1007、Math PR 6242、Transformer PR 13661。

AI/Agent生成声明

历史版本验证记录(不作为当前提交的设备验证结论)

前一轮设备验证(2026-10-15,57018e2 提交)

环境:Ascend950PR_9579,CANN 9.2.0(20260909),默认固定 opbase 0c5e257。设备运行前确认 npu-smi 无运行进程,/proc 中无设备句柄占用。

  • Host UT:388/388 通过,覆盖本次受影响算子及依赖。
  • 13 个算子、140 项固定输入 Kernel Dynamic 回放;新包 workspace_policy_nn,大小 shape 均包含。
  • 【输出】相同输入下,输入和最终输出张量的元数据、原始字节均与修改前保存结果一致,140/140;不是比较编译产物。
  • 【精度标准】上述 140 项输出与修改前逐字节一致,越界检查全部通过。本轮 TTK 未重新计算独立数学 golden,结论来自独立 NPY 字节对照。
  • 【性能标准】每例 100 次硬件任务计时。56 项有可用历史性能基线,其中小 shape 19 项、大 shape(基线 ≥20 us)37 项;小 shape 退化不超过 1 us,大 shape 退化小于 5%,无超阈值退化。其余用例不计入性能通过数。
  • 本轮属于定向 Kernel Dynamic 回归,不代表 GEIR、ACLNN、框架等全部通路已完成,也不替代公共依赖合入后的默认构建回归。
前一轮 140 项输出字节与 workspace 实测结果(非最终申请量)
用例 输出原始字节 修改后 workspace(B)
add_layer_norm_quant_00_small 一致 (16779264,)
add_layer_norm_quant_00_large_r 一致 (20972032,)
add_layer_norm_quant_00_large_m 一致 (0,)
add_layer_norm_quant_01_small 一致 (16779264,)
add_layer_norm_quant_02_small 一致 (16779264,)
add_layer_norm_quant_03_small 一致 (16779264,)
add_layer_norm_quant_04_small 一致 (16779264,)
add_rms_norm_00_small 一致 (0,)
add_rms_norm_00_large_r 一致 (16777344,)
add_rms_norm_00_large_m 一致 (0,)
add_rms_norm_01_small 一致 (0,)
add_rms_norm_02_small 一致 (0,)
add_rms_norm_cast_00_small 一致 (16778240,)
add_rms_norm_cast_00_large_r 一致 (17825792,)
add_rms_norm_cast_00_large_m 一致 (0,)
add_rms_norm_cast_01_small 一致 (16778240,)
add_rms_norm_dynamic_quant_00_small 一致 (0,)
add_rms_norm_dynamic_quant_00_large_r 一致 (19922944,)
add_rms_norm_dynamic_quant_00_large_m 一致 (0,)
add_rms_norm_dynamic_quant_01_small 一致 (0,)
add_rms_norm_dynamic_quant_02_small 一致 (0,)
add_rms_norm_dynamic_quant_03_small 一致 (0,)
add_rms_norm_dynamic_quant_04_small 一致 (0,)
add_rms_norm_dynamic_quant_05_small 一致 (0,)
add_rms_norm_dynamic_quant_06_small 一致 (0,)
add_rms_norm_dynamic_quant_07_small 一致 (0,)
add_rms_norm_dynamic_quant_08_small 一致 (0,)
add_rms_norm_dynamic_quant_09_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_00_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_00_large_r 一致 (19922944,)
add_rms_norm_dynamic_quant_v2_00_large_m 一致 (0,)
add_rms_norm_dynamic_quant_v2_01_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_02_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_03_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_04_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_05_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_06_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_07_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_08_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_09_small 一致 (0,)
batch_norm_00_small 一致 (0,)
batch_norm_00_large_r 一致 (0,)
batch_norm_00_large_m 一致 (0,)
batch_norm_01_small 一致 (0,)
batch_norm_02_small 一致 (0,)
batch_norm_grad_00_small 一致 (0,)
batch_norm_grad_00_large_r 一致 (0,)
batch_norm_grad_00_large_m 一致 (0,)
batch_norm_grad_01_small 一致 (0,)
batch_norm_grad_02_small 一致 (0,)
batch_norm_grad_v3_00_small 一致 (0,)
batch_norm_grad_v3_00_large_r 一致 (0,)
batch_norm_grad_v3_00_large_m 一致 (0,)
batch_norm_grad_v3_01_small 一致 (0,)
batch_norm_grad_v3_02_small 一致 (0,)
batch_norm_grad_v3_03_small 一致 (0,)
batch_norm_grad_v3_04_small 一致 (0,)
batch_norm_grad_v3_05_small 一致 (0,)
batch_norm_grad_v3_06_small 一致 (0,)
batch_norm_v3_00_small 一致 (0,)
batch_norm_v3_00_large_r 一致 (0,)
batch_norm_v3_00_large_m 一致 (0,)
batch_norm_v3_01_small 一致 (0,)
batch_norm_v3_02_small 一致 (0,)
batch_norm_v3_03_small 一致 (0,)
batch_norm_v3_04_small 一致 (0,)
batch_norm_v3_05_small 一致 (0,)
batch_norm_v3_06_small 一致 (0,)
group_norm_grad_00_small 一致 (16778240,)
group_norm_grad_00_large_r 一致 (16777472,)
group_norm_grad_00_large_m 一致 (17301504,)
group_norm_grad_01_small 一致 (16778240,)
group_norm_grad_02_small 一致 (16778240,)
layer_norm_grad_00_small 一致 (0,)
layer_norm_grad_00_large_r 一致 (16778560,)
layer_norm_grad_00_large_m 一致 (16834560,)
layer_norm_grad_01_small 一致 (0,)
layer_norm_grad_02_small 一致 (0,)
layer_norm_grad_03_small 一致 (0,)
layer_norm_grad_04_small 一致 (0,)
layer_norm_grad_05_small 一致 (0,)
layer_norm_grad_06_small 一致 (0,)
layer_norm_grad_v3_00_small 一致 (0,)
layer_norm_grad_v3_00_large_r 一致 (16778560,)
layer_norm_grad_v3_00_large_m 一致 (16834560,)
layer_norm_grad_v3_01_small 一致 (0,)
layer_norm_grad_v3_02_small 一致 (0,)
layer_norm_grad_v3_03_small 一致 (0,)
layer_norm_grad_v3_04_small 一致 (0,)
layer_norm_grad_v3_05_small 一致 (0,)
layer_norm_grad_v3_06_small 一致 (0,)
rms_norm_grad_00_small 一致 (0,)
rms_norm_grad_00_large_r 一致 (0,)
rms_norm_grad_00_large_m 一致 (16805888,)
rms_norm_grad_01_small 一致 (0,)
rms_norm_grad_02_small 一致 (0,)
rms_norm_grad_03_small 一致 (0,)
rms_norm_grad_04_small 一致 (0,)
batch_norm_workspace_ra_float32 一致 (16791552,)
batch_norm_workspace_rar_float32 一致 (16780800,)
batch_norm_workspace_ra_bfloat16 一致 (16791552,)
batch_norm_workspace_rar_bfloat16 一致 (16780800,)
batch_norm_v3_workspace_ra_float32 一致 (16791552,)
batch_norm_v3_workspace_rar_float32 一致 (16780800,)
batch_norm_v3_workspace_ra_bfloat16 一致 (16791552,)
batch_norm_v3_workspace_rar_bfloat16 一致 (16780800,)
batch_norm_grad_workspace_ra_float32 一致 (16791552,)
batch_norm_grad_workspace_rar_float32 一致 (0,)
batch_norm_grad_workspace_ra_bfloat16 一致 (16791552,)
batch_norm_grad_workspace_rar_bfloat16 一致 (0,)
batch_norm_grad_v3_workspace_ra_float32 一致 (16791552,)
batch_norm_grad_v3_workspace_rar_float32 一致 (0,)
batch_norm_grad_v3_workspace_ra_bfloat16 一致 (16791552,)
batch_norm_grad_v3_workspace_rar_bfloat16 一致 (0,)
add_layer_norm_quant_large_reduce 一致 (106954752,)
add_layer_norm_quant_large_outer 一致 (0,)
add_rms_norm_large_reduce 一致 (0,)
add_rms_norm_large_outer 一致 (0,)
add_rms_norm_cast_large_reduce 一致 (39321600,)
add_rms_norm_cast_large_outer 一致 (0,)
add_rms_norm_dynamic_quant_large_reduce 一致 (84410368,)
add_rms_norm_dynamic_quant_large_outer 一致 (0,)
add_rms_norm_dynamic_quant_v2_large_reduce 一致 (84410368,)
add_rms_norm_dynamic_quant_v2_large_outer 一致 (0,)
batch_norm_large_reduce 一致 (0,)
batch_norm_large_outer 一致 (0,)
batch_norm_grad_large_reduce 一致 (0,)
batch_norm_grad_large_outer 一致 (0,)
batch_norm_grad_v3_large_reduce 一致 (0,)
batch_norm_grad_v3_large_outer 一致 (0,)
batch_norm_v3_large_reduce 一致 (0,)
batch_norm_v3_large_outer 一致 (0,)
group_norm_grad_large_reduce 一致 (16793600,)
group_norm_grad_large_outer 一致 (25166080,)
layer_norm_grad_large_reduce 一致 (16863232,)
layer_norm_grad_large_outer 一致 (16891904,)
layer_norm_grad_v3_large_reduce 一致 (16863232,)
layer_norm_grad_v3_large_outer 一致 (16891904,)
rms_norm_grad_large_reduce 一致 (0,)
rms_norm_grad_large_outer 一致 (16834560,)

前一轮提交与检查

基于上游 4bf3e9c010b15eb99962160db2089cb13f368d11,保持一个整改提交 57018e2e8e183e92b7d0a4ee33172961757cf210。Host 构建、打包、diff 检查及上述设备回放通过。

文档更新

本 PR 未增加仓内文档。

类型标签

AI/Agent生成声明

以下为历史验证记录,workspace 数值来自旧 SSBUF 方案,不代表本次保留系统预留后的数值;不能作为本轮全部测试通过的证明。当前结果以上方 2026-10-15 记录为准。

历史分类验证结果(2026-10-13,旧 SSBUF 方案)

验证环境:Ascend950PR_9579,CANN 9.2.0(20260909)。这里的“二进制一致”指相同输入下输出张量的原始字节一致,不是编译产物文件一致。基线输入固定回放,独立检查输出元数据和原始字节。

范围限制:全量结果来自变基前联调版本(原依赖对照、opbase 6dc960b 加公共补丁);不能替代 opbase PR 1007 合入、更新远程固定 commit 后的默认构建复测。当前该依赖接入仍待完成。2026-10-13 AddRmsNormCast 空归约专项使用当时 NN 提交 884dc23ad,单独标明。

【输出】二进制一致

固定输入 kernel 回放:407/407 项输出逐字节一致。新增大规模候选:73/75 项直接与最初基线输出一致,实际基线 ≥20 μs 的用例 74 项。

另外:BatchNorm 跨核 16/16、组合 API 29/29 输出字节一致;GroupNorm 分块边界 12/12 在配套同步修复的对照下字节一致;2026-10-13 空归约 14/14 输出字节一致,workspace 从 16 MiB 降到 0。各测试集有重叠,不应将计数相加作为去重总数。新增 75 项中两项基线差异详见下一节。

固定输入逐用例结果(展开)
用例 输出原始字节 修改后 workspace(B)
add_layer_norm_00_small 一致 (0,)
add_layer_norm_00_large_r 一致 (0,)
add_layer_norm_00_large_m 一致 (0,)
add_layer_norm_01_small 一致 (0,)
add_layer_norm_02_small 一致 (0,)
add_layer_norm_03_small 一致 (0,)
add_layer_norm_04_small 一致 (0,)
add_layer_norm_05_small 一致 (0,)
add_layer_norm_06_small 一致 (0,)
add_layer_norm_07_small 一致 (0,)
add_layer_norm_08_small 一致 (0,)
add_layer_norm_quant_00_small 一致 (2048,)
add_layer_norm_quant_00_large_r 一致 (4194816,)
add_layer_norm_quant_00_large_m 一致 (0,)
add_layer_norm_quant_01_small 一致 (2048,)
add_layer_norm_quant_02_small 一致 (2048,)
add_layer_norm_quant_03_small 一致 (2048,)
add_layer_norm_quant_04_small 一致 (2048,)
add_rms_norm_00_small 一致 (0,)
add_rms_norm_00_large_r 一致 (128,)
add_rms_norm_00_large_m 一致 (0,)
add_rms_norm_01_small 一致 (0,)
add_rms_norm_02_small 一致 (0,)
add_rms_norm_cast_00_small 一致 (1024,)
add_rms_norm_cast_00_large_r 一致 (1048576,)
add_rms_norm_cast_00_large_m 一致 (0,)
add_rms_norm_cast_01_small 一致 (1024,)
add_rms_norm_dynamic_mx_quant_00_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_00_large_r 一致 (0,)
add_rms_norm_dynamic_mx_quant_00_large_m 一致 (0,)
add_rms_norm_dynamic_mx_quant_01_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_02_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_03_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_04_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_05_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_06_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_07_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_08_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_09_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_10_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_11_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_12_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_13_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_14_small 一致 (0,)
add_rms_norm_dynamic_mx_quant_15_small 一致 (0,)
add_rms_norm_dynamic_quant_00_small 一致 (0,)
add_rms_norm_dynamic_quant_00_large_r 一致 (3145728,)
add_rms_norm_dynamic_quant_00_large_m 一致 (0,)
add_rms_norm_dynamic_quant_01_small 一致 (0,)
add_rms_norm_dynamic_quant_02_small 一致 (0,)
add_rms_norm_dynamic_quant_03_small 一致 (0,)
add_rms_norm_dynamic_quant_04_small 一致 (0,)
add_rms_norm_dynamic_quant_05_small 一致 (0,)
add_rms_norm_dynamic_quant_06_small 一致 (0,)
add_rms_norm_dynamic_quant_07_small 一致 (0,)
add_rms_norm_dynamic_quant_08_small 一致 (0,)
add_rms_norm_dynamic_quant_09_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_00_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_00_large_r 一致 (3145728,)
add_rms_norm_dynamic_quant_v2_00_large_m 一致 (0,)
add_rms_norm_dynamic_quant_v2_01_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_02_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_03_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_04_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_05_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_06_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_07_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_08_small 一致 (0,)
add_rms_norm_dynamic_quant_v2_09_small 一致 (0,)
add_rms_norm_quant_00_small 一致 (0,)
add_rms_norm_quant_00_large_r 一致 (0,)
add_rms_norm_quant_00_large_m 一致 (0,)
add_rms_norm_quant_01_small 一致 (0,)
add_rms_norm_quant_02_small 一致 (0,)
add_rms_norm_quant_03_small 一致 (0,)
add_rms_norm_quant_04_small 一致 (0,)
add_rms_norm_quant_05_small 一致 (0,)
add_rms_norm_quant_06_small 一致 (0,)
add_rms_norm_quant_07_small 一致 (0,)
add_rms_norm_quant_08_small 一致 (0,)
add_rms_norm_quant_09_small 一致 (0,)
add_rms_norm_quant_10_small 一致 (0,)
add_rms_norm_quant_11_small 一致 (0,)
add_rms_norm_quant_12_small 一致 (0,)
add_rms_norm_quant_13_small 一致 (0,)
add_rms_norm_quant_14_small 一致 (0,)
add_rms_norm_quant_15_small 一致 (0,)
add_rms_norm_quant_16_small 一致 (0,)
add_rms_norm_quant_17_small 一致 (0,)
add_rms_norm_quant_18_small 一致 (0,)
add_rms_norm_quant_19_small 一致 (0,)
add_rms_norm_quant_20_small 一致 (0,)
add_rms_norm_quant_21_small 一致 (0,)
add_rms_norm_quant_22_small 一致 (0,)
add_rms_norm_quant_23_small 一致 (0,)
add_rms_norm_quant_24_small 一致 (0,)
add_rms_norm_quant_25_small 一致 (0,)
add_rms_norm_quant_26_small 一致 (0,)
add_rms_norm_quant_27_small 一致 (0,)
add_rms_norm_quant_v2_00_small 一致 (0,)
add_rms_norm_quant_v2_00_large_r 一致 (0,)
add_rms_norm_quant_v2_00_large_m 一致 (0,)
add_rms_norm_quant_v2_01_small 一致 (0,)
add_rms_norm_quant_v2_02_small 一致 (0,)
add_rms_norm_quant_v2_03_small 一致 (0,)
add_rms_norm_quant_v2_04_small 一致 (0,)
add_rms_norm_quant_v2_05_small 一致 (0,)
add_rms_norm_quant_v2_06_small 一致 (0,)
add_rms_norm_quant_v2_07_small 一致 (0,)
add_rms_norm_quant_v2_08_small 一致 (0,)
add_rms_norm_quant_v2_09_small 一致 (0,)
add_rms_norm_quant_v2_10_small 一致 (0,)
add_rms_norm_quant_v2_11_small 一致 (0,)
add_rms_norm_quant_v2_12_small 一致 (0,)
add_rms_norm_quant_v2_13_small 一致 (0,)
add_rms_norm_quant_v2_14_small 一致 (0,)
add_rms_norm_quant_v2_15_small 一致 (0,)
add_rms_norm_quant_v2_16_small 一致 (0,)
add_rms_norm_quant_v2_17_small 一致 (0,)
add_rms_norm_quant_v2_18_small 一致 (0,)
add_rms_norm_quant_v2_19_small 一致 (0,)
add_rms_norm_quant_v2_20_small 一致 (0,)
add_rms_norm_quant_v2_21_small 一致 (0,)
add_rms_norm_quant_v2_22_small 一致 (0,)
add_rms_norm_quant_v2_23_small 一致 (0,)
add_rms_norm_quant_v2_24_small 一致 (0,)
add_rms_norm_quant_v2_25_small 一致 (0,)
add_rms_norm_quant_v2_26_small 一致 (0,)
add_rms_norm_quant_v2_27_small 一致 (0,)
batch_norm_00_small 一致 (0,)
batch_norm_00_large_r 一致 (0,)
batch_norm_00_large_m 一致 (0,)
batch_norm_01_small 一致 (0,)
batch_norm_02_small 一致 (0,)
batch_norm_grad_00_small 一致 (0,)
batch_norm_grad_00_large_r 一致 (0,)
batch_norm_grad_00_large_m 一致 (0,)
batch_norm_grad_01_small 一致 (0,)
batch_norm_grad_02_small 一致 (0,)
batch_norm_grad_v3_00_small 一致 (0,)
batch_norm_grad_v3_00_large_r 一致 (0,)
batch_norm_grad_v3_00_large_m 一致 (0,)
batch_norm_grad_v3_01_small 一致 (0,)
batch_norm_grad_v3_02_small 一致 (0,)
batch_norm_grad_v3_03_small 一致 (0,)
batch_norm_grad_v3_04_small 一致 (0,)
batch_norm_grad_v3_05_small 一致 (0,)
batch_norm_grad_v3_06_small 一致 (0,)
batch_norm_v3_00_small 一致 (0,)
batch_norm_v3_00_large_r 一致 (0,)
batch_norm_v3_00_large_m 一致 (0,)
batch_norm_v3_01_small 一致 (0,)
batch_norm_v3_02_small 一致 (0,)
batch_norm_v3_03_small 一致 (0,)
batch_norm_v3_04_small 一致 (0,)
batch_norm_v3_05_small 一致 (0,)
batch_norm_v3_06_small 一致 (0,)
broadcast_gradient_args_00_small 一致 (0,)
broadcast_gradient_args_01_small 一致 (0,)
confusion_softmax_grad_00_small 一致 (0,)
confusion_softmax_grad_00_large_r 一致 (0,)
confusion_softmax_grad_00_large_m 一致 (0,)
confusion_softmax_grad_01_small 一致 (0,)
confusion_softmax_grad_02_small 一致 (0,)
group_norm_grad_00_small 一致 (1024,)
group_norm_grad_00_large_r 一致 (256,)
group_norm_grad_00_large_m 一致 (524288,)
group_norm_grad_01_small 一致 (1024,)
group_norm_grad_02_small 一致 (1024,)
group_norm_v2_00_small 一致 (0,)
group_norm_v2_00_large_r 一致 (0,)
group_norm_v2_00_large_m 一致 (0,)
group_norm_v2_01_small 一致 (0,)
group_norm_v2_02_small 一致 (0,)
group_norm_v2_03_small 一致 (0,)
group_norm_v2_04_small 一致 (0,)
inplace_add_rms_norm_00_small 一致 (0,)
inplace_add_rms_norm_00_large_r 一致 (128,)
inplace_add_rms_norm_00_large_m 一致 (0,)
inplace_add_rms_norm_01_small 一致 (0,)
inplace_add_rms_norm_02_small 一致 (0,)
instance_norm_00_small 一致 (0,)
instance_norm_00_large_r 一致 (0,)
instance_norm_00_large_m 一致 (0,)
instance_norm_01_small 一致 (0,)
instance_norm_02_small 一致 (0,)
instance_norm_03_small 一致 (0,)
instance_norm_04_small 一致 (0,)
layer_norm_00_small 一致 (0,)
layer_norm_00_large_r 一致 (0,)
layer_norm_00_large_m 一致 (0,)
layer_norm_01_small 一致 (0,)
layer_norm_02_small 一致 (0,)
layer_norm_03_small 一致 (0,)
layer_norm_04_small 一致 (0,)
layer_norm_grad_00_small 一致 (0,)
layer_norm_grad_00_large_r 一致 (1344,)
layer_norm_grad_00_large_m 一致 (57344,)
layer_norm_grad_01_small 一致 (0,)
layer_norm_grad_02_small 一致 (0,)
layer_norm_grad_03_small 一致 (0,)
layer_norm_grad_04_small 一致 (0,)
layer_norm_grad_05_small 一致 (0,)
layer_norm_grad_06_small 一致 (0,)
layer_norm_grad_v3_00_small 一致 (0,)
layer_norm_grad_v3_00_large_r 一致 (1344,)
layer_norm_grad_v3_00_large_m 一致 (57344,)
layer_norm_grad_v3_01_small 一致 (0,)
layer_norm_grad_v3_02_small 一致 (0,)
layer_norm_grad_v3_03_small 一致 (0,)
layer_norm_grad_v3_04_small 一致 (0,)
layer_norm_grad_v3_05_small 一致 (0,)
layer_norm_grad_v3_06_small 一致 (0,)
layer_norm_v3_00_small 一致 (0,)
layer_norm_v3_00_large_r 一致 (0,)
layer_norm_v3_00_large_m 一致 (0,)
layer_norm_v3_01_small 一致 (0,)
layer_norm_v3_02_small 一致 (0,)
layer_norm_v3_03_small 一致 (0,)
layer_norm_v3_04_small 一致 (0,)
layer_norm_v4_00_small 一致 (0,)
layer_norm_v4_00_large_r 一致 (0,)
layer_norm_v4_00_large_m 一致 (0,)
layer_norm_v4_01_small 一致 (0,)
layer_norm_v4_02_small 一致 (0,)
layer_norm_v4_03_small 一致 (0,)
layer_norm_v4_04_small 一致 (0,)
layer_norm_v4_05_small 一致 (0,)
layer_norm_v4_06_small 一致 (0,)
layer_norm_v4_07_small 一致 (0,)
layer_norm_v4_08_small 一致 (0,)
layer_norm_v4_09_small 一致 (0,)
log_softmax_grad_00_small 一致 (0,)
log_softmax_grad_00_large_r 一致 (0,)
log_softmax_grad_00_large_m 一致 (0,)
log_softmax_grad_01_small 一致 (0,)
log_softmax_grad_02_small 一致 (0,)
log_softmax_v2_00_small 一致 (0,)
log_softmax_v2_00_large_r 一致 (0,)
log_softmax_v2_00_large_m 一致 (0,)
log_softmax_v2_01_small 一致 (0,)
log_softmax_v2_02_small 一致 (0,)
lp_norm_v2_00_small 一致 (0,)
lp_norm_v2_00_large_r 一致 (14336,)
lp_norm_v2_00_large_m 一致 (0,)
lp_norm_v2_01_small 一致 (0,)
lp_norm_v2_02_small 一致 (0,)
lp_norm_v2_03_small 一致 (0,)
lp_norm_v2_04_small 一致 (0,)
rms_norm_00_small 一致 (0,)
rms_norm_00_large_r 一致 (0,)
rms_norm_00_large_m 一致 (0,)
rms_norm_01_small 一致 (0,)
rms_norm_02_small 一致 (0,)
rms_norm_03_small 一致 (0,)
rms_norm_04_small 一致 (0,)
rms_norm_dynamic_mx_quant_00_small 一致 (0,)
rms_norm_dynamic_mx_quant_00_large_r 一致 (0,)
rms_norm_dynamic_mx_quant_00_large_m 一致 (0,)
rms_norm_dynamic_mx_quant_01_small 一致 (0,)
rms_norm_dynamic_mx_quant_02_small 一致 (0,)
rms_norm_dynamic_mx_quant_03_small 一致 (0,)
rms_norm_dynamic_mx_quant_04_small 一致 (0,)
rms_norm_dynamic_mx_quant_05_small 一致 (0,)
rms_norm_dynamic_mx_quant_06_small 一致 (0,)
rms_norm_dynamic_mx_quant_07_small 一致 (0,)
rms_norm_dynamic_mx_quant_08_small 一致 (0,)
rms_norm_dynamic_mx_quant_09_small 一致 (0,)
rms_norm_dynamic_mx_quant_10_small 一致 (0,)
rms_norm_dynamic_mx_quant_11_small 一致 (0,)
rms_norm_dynamic_mx_quant_12_small 一致 (0,)
rms_norm_dynamic_mx_quant_13_small 一致 (0,)
rms_norm_dynamic_mx_quant_14_small 一致 (0,)
rms_norm_dynamic_mx_quant_15_small 一致 (0,)
rms_norm_grad_00_small 一致 (0,)
rms_norm_grad_00_large_r 一致 (0,)
rms_norm_grad_00_large_m 一致 (28672,)
rms_norm_grad_01_small 一致 (0,)
rms_norm_grad_02_small 一致 (0,)
rms_norm_grad_03_small 一致 (0,)
rms_norm_grad_04_small 一致 (0,)
rms_norm_quant_v2_00_small 一致 (0,)
rms_norm_quant_v2_00_large_r 一致 (0,)
rms_norm_quant_v2_00_large_m 一致 (0,)
rms_norm_quant_v2_01_small 一致 (0,)
rms_norm_quant_v2_02_small 一致 (0,)
rms_norm_quant_v2_03_small 一致 (0,)
rms_norm_quant_v2_04_small 一致 (0,)
rms_norm_quant_v2_05_small 一致 (0,)
rms_norm_quant_v2_06_small 一致 (0,)
rms_norm_quant_v2_07_small 一致 (0,)
rms_norm_quant_v2_08_small 一致 (0,)
rms_norm_quant_v2_09_small 一致 (0,)
rms_norm_quant_v2_10_small 一致 (0,)
rms_norm_quant_v2_11_small 一致 (0,)
rms_norm_quant_v2_12_small 一致 (0,)
rms_norm_quant_v2_13_small 一致 (0,)
rms_norm_quant_v2_14_small 一致 (0,)
rms_norm_quant_v2_15_small 一致 (0,)
rms_norm_quant_v2_16_small 一致 (0,)
rms_norm_quant_v2_17_small 一致 (0,)
rms_norm_quant_v2_18_small 一致 (0,)
rms_norm_quant_v2_19_small 一致 (0,)
rms_norm_quant_v2_20_small 一致 (0,)
rms_norm_quant_v2_21_small 一致 (0,)
rms_norm_quant_v2_22_small 一致 (0,)
rms_norm_quant_v2_23_small 一致 (0,)
rms_norm_quant_v2_24_small 一致 (0,)
rms_norm_quant_v2_25_small 一致 (0,)
rms_norm_quant_v2_26_small 一致 (0,)
rms_norm_quant_v2_27_small 一致 (0,)
rms_norm_quant_v2_28_small 一致 (0,)
rms_norm_quant_v2_29_small 一致 (0,)
rms_norm_quant_v2_30_small 一致 (0,)
rms_norm_quant_v2_31_small 一致 (0,)
rms_norm_quant_v2_32_small 一致 (0,)
rms_norm_quant_v2_33_small 一致 (0,)
rms_norm_quant_v2_34_small 一致 (0,)
rms_norm_quant_v2_35_small 一致 (0,)
rms_norm_quant_v2_36_small 一致 (0,)
rms_norm_quant_v2_37_small 一致 (0,)
rms_norm_quant_v2_38_small 一致 (0,)
rms_norm_quant_v2_39_small 一致 (0,)
rms_norm_quant_v2_40_small 一致 (0,)
rms_norm_quant_v2_41_small 一致 (0,)
rms_norm_quant_v2_42_small 一致 (0,)
rms_norm_quant_v2_43_small 一致 (0,)
rms_norm_quant_v2_44_small 一致 (0,)
rms_norm_quant_v3_00_small 一致 (0,)
rms_norm_quant_v3_00_large_r 一致 (0,)
rms_norm_quant_v3_00_large_m 一致 (0,)
rms_norm_quant_v3_01_small 一致 (0,)
rms_norm_quant_v3_02_small 一致 (0,)
rms_norm_quant_v3_03_small 一致 (0,)
rms_norm_quant_v3_04_small 一致 (0,)
rms_norm_quant_v3_05_small 一致 (0,)
rms_norm_quant_v3_06_small 一致 (0,)
rms_norm_quant_v3_07_small 一致 (0,)
rms_norm_quant_v3_08_small 一致 (0,)
rms_norm_quant_v3_09_small 一致 (0,)
rms_norm_quant_v3_10_small 一致 (0,)
rms_norm_quant_v3_11_small 一致 (0,)
rms_norm_quant_v3_12_small 一致 (0,)
rms_norm_quant_v3_13_small 一致 (0,)
rms_norm_quant_v3_14_small 一致 (0,)
rms_norm_quant_v3_15_small 一致 (0,)
rms_norm_quant_v3_16_small 一致 (0,)
rms_norm_quant_v3_17_small 一致 (0,)
rms_norm_quant_v3_18_small 一致 (0,)
rms_norm_quant_v3_19_small 一致 (0,)
rms_norm_quant_v3_20_small 一致 (0,)
rms_norm_quant_v3_21_small 一致 (0,)
rms_norm_quant_v3_22_small 一致 (0,)
rms_norm_quant_v3_23_small 一致 (0,)
rms_norm_quant_v3_24_small 一致 (0,)
rms_norm_quant_v3_25_small 一致 (0,)
rms_norm_quant_v3_26_small 一致 (0,)
rms_norm_quant_v3_27_small 一致 (0,)
rms_norm_quant_v3_28_small 一致 (0,)
rms_norm_quant_v3_29_small 一致 (0,)
rms_norm_quant_v3_30_small 一致 (0,)
rms_norm_quant_v3_31_small 一致 (0,)
rms_norm_quant_v3_32_small 一致 (0,)
rms_norm_quant_v3_33_small 一致 (0,)
rms_norm_quant_v3_34_small 一致 (0,)
rms_norm_quant_v3_35_small 一致 (0,)
rms_norm_quant_v3_36_small 一致 (0,)
rms_norm_quant_v3_37_small 一致 (0,)
rms_norm_quant_v3_38_small 一致 (0,)
rms_norm_quant_v3_39_small 一致 (0,)
rms_norm_quant_v3_40_small 一致 (0,)
rms_norm_quant_v3_41_small 一致 (0,)
rms_norm_quant_v3_42_small 一致 (0,)
rms_norm_quant_v3_43_small 一致 (0,)
rms_norm_quant_v3_44_small 一致 (0,)
softmax_grad_00_small 一致 (0,)
softmax_grad_00_large_r 一致 (0,)
softmax_grad_00_large_m 一致 (0,)
softmax_grad_01_small 一致 (0,)
softmax_grad_02_small 一致 (0,)
softmax_v2_00_small 一致 (0,)
softmax_v2_00_large_r 一致 (0,)
softmax_v2_00_large_m 一致 (0,)
softmax_v2_01_small 一致 (0,)
softmax_v2_02_small 一致 (0,)
softmax_v2_03_small 一致 (0,)
sync_bn_training_update_00_small 一致 (0,)
sync_bn_training_update_00_large_r 一致 (0,)
sync_bn_training_update_00_large_m 一致 (0,)
sync_bn_training_update_01_small 一致 (0,)
sync_bn_training_update_02_small 一致 (0,)
sync_batch_norm_backward_elemt_00_small 一致 (0,)
sync_batch_norm_backward_elemt_00_large_r 一致 (0,)
sync_batch_norm_backward_elemt_00_large_m 一致 (0,)
sync_batch_norm_backward_elemt_01_small 一致 (0,)
sync_batch_norm_backward_elemt_02_small 一致 (0,)
sync_batch_norm_backward_elemt_03_small 一致 (0,)
sync_batch_norm_backward_reduce_00_small 一致 (0,)
sync_batch_norm_backward_reduce_00_large_r 一致 (0,)
sync_batch_norm_backward_reduce_00_large_m 一致 (0,)
sync_batch_norm_backward_reduce_01_small 一致 (0,)
sync_batch_norm_backward_reduce_02_small 一致 (0,)
sync_batch_norm_gather_stats_00_small 一致 (0,)
sync_batch_norm_gather_stats_00_large_r 一致 (0,)
sync_batch_norm_gather_stats_00_large_m 一致 (0,)
sync_batch_norm_gather_stats_01_small 一致 (0,)
sync_batch_norm_gather_stats_02_small 一致 (0,)

【精度标准】与修改前一致

除以下两项基线差异外,已测固定输入按输出字节一致验收。两项不能表述为“与最初旧版本完全一致”:

  • LpNormV2 large_outer:原 opbase 0c5e257 与联调 6dc960b 的 Reduce 分块不同(ubFactorR 192→128),一个 fp16 元素发生变化。原算子源码使用未整改的同版本 6dc960b 后,与 workspace 整改版输出/tiling 一致,隔离确认不是 workspace 缩减引起。
  • GroupNormV2 large_outer:原版本同输入自回放也不稳定。补 V_MTE2 同步后,自回放及同样补同步的原始源码对照通过。独立 NumPy float32 数学参考中,误差 >0.01 的元素从 155403 个降为 0,最大绝对误差从 5.846163 降至 0.00195122。属于修复旧同步缺陷,不声称保留旧错误输出。

2026-10-13 空归约 14 项另作独立 NPY 检查:rstd 全为 NaN,其他输出为空,NaN 位模式在修改前后逐字节一致;两版越界检查均通过。

精度控制实验:独立数学参考及最终 GroupNorm 回归
{
  "independent_reference": {
    "method": "NumPy float32 mean/population variance, eps=1e-5, channel affine; separate diagnostic from byte-comparison gates",
    "case": "group_norm_v2_large_outer",
    "records": [
      {
        "variant": "original",
        "max_abs_error": 5.846162796020508,
        "elements_abs_error_above_0_01": 155403
      },
      {
        "variant": "original_self",
        "max_abs_error": 5.846162796020508,
        "elements_abs_error_above_0_01": 151284
      },
      {
        "variant": "workspace_before_sync_fix",
        "max_abs_error": 5.787575721740723,
        "elements_abs_error_above_0_01": 158699
      },
      {
        "variant": "sync_probe",
        "max_abs_error": 0.0019512176513671875,
        "elements_abs_error_above_0_01": 0
      },
      {
        "variant": "final",
        "max_abs_error": 0.0019512176513671875,
        "elements_abs_error_above_0_01": 0
      }
    ]
  },
  "final_regression": {
    "total": 8,
    "identical": 8,
    "cases": [
      {
        "case": "group_norm_v2_00_small",
        "identical": true,
        "reference": "original frozen baseline"
      },
      {
        "case": "group_norm_v2_00_large_r",
        "identical": true,
        "reference": "original frozen baseline"
      },
      {
        "case": "group_norm_v2_00_large_m",
        "identical": true,
        "reference": "original frozen baseline"
      },
      {
        "case": "group_norm_v2_01_small",
        "identical": true,
        "reference": "original frozen baseline"
      },
      {
        "case": "group_norm_v2_02_small",
        "identical": true,
        "reference": "original frozen baseline"
      },
      {
        "case": "group_norm_v2_03_small",
        "identical": true,
        "reference": "original frozen baseline"
      },
      {
        "case": "group_norm_v2_04_small",
        "identical": true,
        "reference": "original frozen baseline"
      },
      {
        "case": "group_norm_v2_large_outer",
        "identical": true,
        "reference": "synchronized original control"
      }
    ]
  }
}

【性能标准】与修改前一致

按约定判定:基线 <20 μs 的小 shape 允许 1 μs 波动;大 shape 允许 <5% 波动。性能改善单列为改善,不算退化。计时来自 CANN 硬件任务记录,不使用主机墙钟。下表保留原始首轮数据;超阈值项目以明确列出的复测结论评估。

原始性能对照:57 项
用例 修改前 μs 修改后 μs 差值 μs 差值 % 分类/说明
batch_norm_grad_v3_workspace_ra_float32 37.526000 37.686000 +0.160000 +0.4264 大(≥20 μs)
batch_norm_grad_workspace_ra_float32 38.485000 38.601000 +0.116000 +0.3014 大(≥20 μs)
batch_norm_v3_workspace_ra_float32 22.767000 22.802000 +0.035000 +0.1537 大(≥20 μs)
batch_norm_workspace_ra_float32 27.095000 27.246000 +0.151000 +0.5573 大(≥20 μs)
sync_batch_norm_gather_stats_00_small 3.161000 3.145000 -0.016000 -0.5062 小(<20 μs)
sync_batch_norm_backward_reduce_00_small 1.256000 1.254000 -0.002000 -0.1592 小(<20 μs)
sync_batch_norm_backward_elemt_00_small 1.912000 1.925000 +0.013000 +0.6799 小(<20 μs)
sync_bn_training_update_00_small 1.205000 1.205000 +0.000000 +0.0000 小(<20 μs)
softmax_v2_00_small 1.704000 1.698000 -0.006000 -0.3521 小(<20 μs)
softmax_grad_00_small 1.730000 1.731000 +0.001000 +0.0578 小(<20 μs)
rms_norm_quant_v3_00_small 2.576000 2.614000 +0.038000 +1.4752 小(<20 μs)
rms_norm_quant_v2_00_small 2.272000 2.247000 -0.025000 -1.1004 小(<20 μs)
rms_norm_grad_00_large_m 7.535000 7.613000 +0.078000 +1.0352 小(<20 μs)
rms_norm_dynamic_mx_quant_00_small 2.776000 2.792000 +0.016000 +0.5764 小(<20 μs)
rms_norm_00_small 2.670000 2.699000 +0.029000 +1.0861 小(<20 μs)
lp_norm_v2_00_large_r 4.903000 4.934000 +0.031000 +0.6323 小(<20 μs)
log_softmax_v2_00_small 1.719000 1.700000 -0.019000 -1.1053 小(<20 μs)
log_softmax_grad_00_small 1.696000 1.730000 +0.034000 +2.0047 小(<20 μs)
layer_norm_v4_00_small 2.618000 2.586000 -0.032000 -1.2223 小(<20 μs)
layer_norm_v3_00_small 2.535000 2.538000 +0.003000 +0.1183 小(<20 μs)
layer_norm_grad_v3_00_large_m 12.708000 12.841000 +0.133000 +1.0466 小(<20 μs)
layer_norm_grad_00_small 4.165000 4.204000 +0.039000 +0.9364 小(<20 μs)
layer_norm_00_small 3.121000 3.081000 -0.040000 -1.2816 小(<20 μs)
instance_norm_00_small 2.638000 2.627000 -0.011000 -0.4170 小(<20 μs)
inplace_add_rms_norm_00_small 2.574000 2.634000 +0.060000 +2.3310 小(<20 μs)
group_norm_v2_00_small 5.170000 5.151000 -0.019000 -0.3675 小(<20 μs)
group_norm_grad_00_large_m 220.561000 220.444000 -0.117000 -0.0530 大(≥20 μs)
confusion_softmax_grad_00_small 1.668000 1.688000 +0.020000 +1.1990 小(<20 μs)
broadcast_gradient_args_00_small 1.273000 1.272000 -0.001000 -0.0786 小(<20 μs)
batch_norm_v3_00_small 2.959000 2.929000 -0.030000 -1.0139 小(<20 μs)
batch_norm_grad_v3_workspace_rar_float32 31.002000 31.352000 +0.350000 +1.1290 大(≥20 μs)
batch_norm_grad_00_small 3.701000 3.554000 -0.147000 -3.9719 小(<20 μs)
batch_norm_00_small 5.425000 5.533000 +0.108000 +1.9908 小(<20 μs)
add_rms_norm_quant_v2_00_small 2.395000 2.388000 -0.007000 -0.2923 小(<20 μs)
add_rms_norm_quant_00_small 2.352000 2.338000 -0.014000 -0.5952 小(<20 μs)
add_rms_norm_dynamic_quant_v2_00_small 3.206000 3.173000 -0.033000 -1.0293 小(<20 μs)
add_rms_norm_dynamic_quant_00_small 3.137000 3.141000 +0.004000 +0.1275 小(<20 μs)
add_rms_norm_dynamic_mx_quant_00_small 3.026000 2.955000 -0.071000 -2.3463 小(<20 μs)
add_rms_norm_cast_00_small 2.696000 2.618000 -0.078000 -2.8932 小(<20 μs)
add_rms_norm_00_large_r 11.137000 10.978000 -0.159000 -1.4277 小(<20 μs)
add_layer_norm_quant_00_large_r 46.140000 46.315000 +0.175000 +0.3793 大(≥20 μs)
add_layer_norm_00_small 2.815000 2.822000 +0.007000 +0.2487 小(<20 μs)
add_layer_norm_quant_00_small 3.546000 3.532000 -0.014000 -0.3948 小(<20 μs)
add_rms_norm_00_small 2.718000 2.588000 -0.130000 -4.7829 小(<20 μs)
add_rms_norm_cast_00_large_r 45.831000 45.912000 +0.081000 +0.1767 大(≥20 μs)
add_rms_norm_dynamic_quant_00_large_r 72.998000 72.930000 -0.068000 -0.0932 大(≥20 μs)
add_rms_norm_dynamic_quant_v2_00_large_r 98.606000 98.708000 +0.102000 +0.1034 大(≥20 μs)
batch_norm_workspace_rar_float32 12.659000 12.640000 -0.019000 -0.1501 小(<20 μs)
batch_norm_grad_workspace_rar_float32 31.149000 31.200000 +0.051000 +0.1637 大(≥20 μs)
batch_norm_grad_v3_00_small 3.793000 3.601000 -0.192000 -5.0620 小(<20 μs)
batch_norm_v3_workspace_rar_float32 13.373000 13.271000 -0.102000 -0.7627 小(<20 μs)
group_norm_grad_00_small 6.075000 6.084000 +0.009000 +0.1481 小(<20 μs)
inplace_add_rms_norm_00_large_r 11.197000 10.930000 -0.267000 -2.3846 小(<20 μs)
layer_norm_grad_00_large_m 13.198000 13.514000 +0.316000 +2.3943 小(<20 μs)
layer_norm_grad_v3_00_small 4.062000 4.076000 +0.014000 +0.3447 小(<20 μs)
lp_norm_v2_00_small 1.992000 1.969000 -0.023000 -1.1546 小(<20 μs)
rms_norm_grad_00_small 3.046000 3.042000 -0.004000 -0.1313 小(<20 μs)
新增大规模候选:75 项(含少量实际 <20 μs 的候选)
用例 修改前 μs 修改后 μs 差值 μs 差值 % 分类/说明
add_layer_norm_large_reduce 183.571000 183.093000 -0.478000 -0.2604 大(≥20 μs)
add_layer_norm_large_outer 114.427000 113.165000 -1.262000 -1.1029 大(≥20 μs)
add_layer_norm_quant_large_reduce 191.562000 183.614000 -7.948000 -4.1490 大(≥20 μs)
add_layer_norm_quant_large_outer 339.017000 338.951000 -0.066000 -0.0195 大(≥20 μs)
add_rms_norm_large_reduce 80.547000 79.164000 -1.383000 -1.7170 大(≥20 μs)
add_rms_norm_large_outer 56.643000 54.543000 -2.100000 -3.7074 大(≥20 μs)
add_rms_norm_cast_large_reduce 162.030000 160.276000 -1.754000 -1.0825 大(≥20 μs)
add_rms_norm_cast_large_outer 83.987000 78.866000 -5.121000 -6.0974 大(≥20 μs)
add_rms_norm_dynamic_mx_quant_large_reduce 193.371000 192.971000 -0.400000 -0.2069 大(≥20 μs)
add_rms_norm_dynamic_mx_quant_large_outer 105.050000 105.290000 +0.240000 +0.2285 大(≥20 μs)
add_rms_norm_dynamic_quant_large_reduce 279.050000 272.027000 -7.023000 -2.5168 大(≥20 μs)
add_rms_norm_dynamic_quant_large_outer 79.412000 79.711000 +0.299000 +0.3765 大(≥20 μs)
add_rms_norm_dynamic_quant_v2_large_reduce 379.901000 396.241000 +16.340000 +4.3011 大(≥20 μs)
add_rms_norm_dynamic_quant_v2_large_outer 124.990000 117.110000 -7.880000 -6.3045 大(≥20 μs)
add_rms_norm_quant_large_reduce 240.711000 241.831000 +1.120000 +0.4653 大(≥20 μs)
add_rms_norm_quant_large_outer 225.123000 225.338000 +0.215000 +0.0955 大(≥20 μs)
add_rms_norm_quant_v2_large_reduce 247.289000 243.190000 -4.099000 -1.6576 大(≥20 μs)
add_rms_norm_quant_v2_large_outer 236.343000 236.604000 +0.261000 +0.1104 大(≥20 μs)
batch_norm_large_reduce 79.750000 85.262000 +5.512000 +6.9116 大(≥20 μs)
batch_norm_large_outer 425.535000 421.619000 -3.916000 -0.9203 大(≥20 μs)
batch_norm_grad_large_reduce 209.281000 212.844000 +3.563000 +1.7025 大(≥20 μs)
batch_norm_grad_large_outer 863.852000 862.349000 -1.503000 -0.1740 大(≥20 μs)
batch_norm_grad_v3_large_reduce 208.759000 209.788000 +1.029000 +0.4929 大(≥20 μs)
batch_norm_grad_v3_large_outer 872.920000 873.470000 +0.550000 +0.0630 大(≥20 μs)
batch_norm_v3_large_reduce 82.617000 83.464000 +0.847000 +1.0252 大(≥20 μs)
batch_norm_v3_large_outer 426.416000 421.018000 -5.398000 -1.2659 大(≥20 μs)
confusion_softmax_grad_large_reduce 57.541000 57.126000 -0.415000 -0.7212 大(≥20 μs)
confusion_softmax_grad_large_outer 51.288000 49.507000 -1.781000 -3.4725 大(≥20 μs)
group_norm_grad_large_reduce 130.399000 128.943000 -1.456000 -1.1166 大(≥20 μs)
group_norm_grad_large_outer 3354.090000 3350.134000 -3.956000 -0.1179 大(≥20 μs)
group_norm_v2_large_reduce 64.334000 64.322000 -0.012000 -0.0187 大(≥20 μs)
group_norm_v2_large_outer 566.581000 566.688000 +0.107000 +0.0189 大(≥20 μs)
inplace_add_rms_norm_large_reduce 75.420000 74.010000 -1.410000 -1.8695 大(≥20 μs)
inplace_add_rms_norm_large_outer 50.402000 46.978000 -3.424000 -6.7934 大(≥20 μs)
instance_norm_large_reduce 57.095000 56.810000 -0.285000 -0.4992 大(≥20 μs)
instance_norm_large_outer 481.566000 480.959000 -0.607000 -0.1260 大(≥20 μs)
layer_norm_large_reduce 109.419000 107.076000 -2.343000 -2.1413 大(≥20 μs)
layer_norm_large_outer 61.803000 61.842000 +0.039000 +0.0631 大(≥20 μs)
layer_norm_grad_large_reduce 367.832000 367.678000 -0.154000 -0.0419 大(≥20 μs)
layer_norm_grad_large_outer 199.878000 202.067000 +2.189000 +1.0952 大(≥20 μs)
layer_norm_grad_v3_large_reduce 304.385000 309.373000 +4.988000 +1.6387 大(≥20 μs)
layer_norm_grad_v3_large_outer 199.851000 198.681000 -1.170000 -0.5854 大(≥20 μs)
layer_norm_v3_large_reduce 109.313000 107.694000 -1.619000 -1.4811 大(≥20 μs)
layer_norm_v3_large_outer 57.374000 56.871000 -0.503000 -0.8767 大(≥20 μs)
layer_norm_v4_large_reduce 109.316000 107.577000 -1.739000 -1.5908 大(≥20 μs)
layer_norm_v4_large_outer 61.352000 56.932000 -4.420000 -7.2043 大(≥20 μs)
log_softmax_grad_large_reduce 112.613000 108.125000 -4.488000 -3.9853 大(≥20 μs)
log_softmax_grad_large_outer 109.281000 109.058000 -0.223000 -0.2041 大(≥20 μs)
log_softmax_v2_large_reduce 86.401000 83.778000 -2.623000 -3.0358 大(≥20 μs)
log_softmax_v2_large_outer 55.968000 55.219000 -0.749000 -1.3383 大(≥20 μs)
lp_norm_v2_large_reduce 26.330000 27.098000 +0.768000 +2.9168 大(≥20 μs)
lp_norm_v2_large_outer 37.541000 25.764000 -11.777000 -31.3710 大(≥20 μs)
rms_norm_large_reduce 42.292000 43.541000 +1.249000 +2.9533 大(≥20 μs)
rms_norm_large_outer 26.907000 26.928000 +0.021000 +0.0780 大(≥20 μs)
rms_norm_dynamic_mx_quant_large_reduce 121.715000 121.603000 -0.112000 -0.0920 大(≥20 μs)
rms_norm_dynamic_mx_quant_large_outer 86.551000 86.503000 -0.048000 -0.0555 大(≥20 μs)
rms_norm_grad_large_reduce 126.448000 125.565000 -0.883000 -0.6983 大(≥20 μs)
rms_norm_grad_large_outer 81.292000 80.969000 -0.323000 -0.3973 大(≥20 μs)
rms_norm_quant_v2_large_reduce 79.622000 79.950000 +0.328000 +0.4119 大(≥20 μs)
rms_norm_quant_v2_large_outer 54.365000 54.455000 +0.090000 +0.1655 大(≥20 μs)
rms_norm_quant_v3_large_reduce 81.995000 80.781000 -1.214000 -1.4806 大(≥20 μs)
rms_norm_quant_v3_large_outer 54.222000 54.410000 +0.188000 +0.3467 大(≥20 μs)
softmax_grad_large_reduce 135.846000 135.663000 -0.183000 -0.1347 大(≥20 μs)
softmax_grad_large_outer 107.926000 106.721000 -1.205000 -1.1165 大(≥20 μs)
softmax_v2_large_reduce 85.026000 85.232000 +0.206000 +0.2423 大(≥20 μs)
softmax_v2_large_outer 55.427000 53.990000 -1.437000 -2.5926 大(≥20 μs)
sync_bn_training_update_large_channels 48.042000 47.363000 -0.679000 -1.4133 大(≥20 μs)
sync_batch_norm_backward_elemt_large_reduce 170.779000 171.935000 +1.156000 +0.6769 大(≥20 μs)
sync_batch_norm_backward_elemt_large_outer 169.976000 169.511000 -0.465000 -0.2736 大(≥20 μs)
sync_batch_norm_backward_reduce_large_channels 107.863000 108.478000 +0.615000 +0.5702 大(≥20 μs)
sync_batch_norm_gather_stats_large_channels 185.059000 187.148000 +2.089000 +1.1288 大(≥20 μs)
broadcast_gradient_args_large_int32_8192 3.397000 3.128000 -0.269000 -7.9188 小(<20 μs)
broadcast_gradient_args_large_int32_65536 2715.384000 2716.331000 +0.947000 +0.0349 大(≥20 μs)
broadcast_gradient_args_large_int64_8192 466.005000 465.951000 -0.054000 -0.0116 大(≥20 μs)
broadcast_gradient_args_large_int64_65536 3756.208000 3761.026000 +4.818000 +0.1283 大(≥20 μs)

首轮超阈值复测:BatchNorm 大归约首轮 +6.91%。采用 修改前 → 修改后 → 修改后 → 修改前 顺序,每轮 100 次,两轮中位数合并结果如下,复测满足 <5% 阈值。

用例 修改前 μs 修改后 μs 差值 μs 差值 % 分类/说明
batch_norm_large_reduce 84.054500 83.310000 -0.744500 -0.8857 大(≥20 μs)

API 计时为一次调用内硬件核心任务时长之和,不含主机时间和任务间隔,不代表端到端时延。

组合 API:29 项字节及性能结果
用例 修改前 μs 修改后 μs 差值 μs 差值 % 分类/说明
rms_norm_quant_api_float16_8_256 2.154000 2.077000 -0.077000 -3.5747 小(<20 μs)
rms_norm_quant_api_float16_2_131072 21.260000 21.159000 -0.101000 -0.4751 大(≥20 μs)
batch_norm_elemt_api_float16_2 8.601000 6.263000 -2.338000 -27.1829 小(<20 μs)
batch_norm_elemt_api_float16_32 9.651000 7.670000 -1.981000 -20.5264 小(<20 μs)
rms_norm_quant_api_bfloat16_8_256 2.131000 2.083000 -0.048000 -2.2525 小(<20 μs)
rms_norm_quant_api_bfloat16_2_131072 21.338000 21.152000 -0.186000 -0.8717 大(≥20 μs)
batch_norm_elemt_api_bfloat16_2 8.617000 6.222000 -2.395000 -27.7939 小(<20 μs)
batch_norm_elemt_api_bfloat16_32 9.657000 7.652000 -2.005000 -20.7621 小(<20 μs)
rms_norm_quant_api_float32_8_256 2.200000 2.154000 -0.046000 -2.0909 小(<20 μs)
rms_norm_quant_api_float32_2_131072 22.228000 22.235000 +0.007000 +0.0315 大(≥20 μs)
batch_norm_elemt_api_float32_2 8.554000 6.237000 -2.317000 -27.0867 小(<20 μs)
batch_norm_elemt_api_float32_32 9.876000 7.841000 -2.035000 -20.6055 小(<20 μs)
batch_norm_elemt_api_float16_2_no_weight 9.807000 7.138000 -2.669000 -27.2153 小(<20 μs)
batch_norm_elemt_api_float16_2_no_bias 9.923000 7.228000 -2.695000 -27.1591 小(<20 μs)
batch_norm_elemt_api_float16_2_no_affine 10.654000 7.926000 -2.728000 -25.6054 小(<20 μs)
batch_norm_elemt_api_bfloat16_2_no_weight 9.800000 7.167000 -2.633000 -26.8673 小(<20 μs)
batch_norm_elemt_api_bfloat16_2_no_bias 9.862000 7.190000 -2.672000 -27.0939 小(<20 μs)
batch_norm_elemt_api_bfloat16_2_no_affine 10.652000 7.913000 -2.739000 -25.7135 小(<20 μs)
batch_norm_elemt_api_float32_2_no_weight 9.745000 7.183000 -2.562000 -26.2904 小(<20 μs)
batch_norm_elemt_api_float32_2_no_bias 9.662000 7.196000 -2.466000 -25.5227 小(<20 μs)
batch_norm_elemt_api_float32_2_no_affine 10.523000 7.862000 -2.661000 -25.2875 小(<20 μs)
rms_norm_quant_api_float32_large_outer 51.418000 50.259000 -1.159000 -2.2541 大(≥20 μs)
rms_norm_quant_api_float32_large_reduce 83.194000 86.799000 +3.605000 +4.3332 大(≥20 μs)
batch_norm_elemt_api_float32_large_outer 62.996000 65.630000 +2.634000 +4.1812 大(≥20 μs)
batch_norm_elemt_api_float32_large_spatial 60.027000 59.863000 -0.164000 -0.2732 大(≥20 μs)
rms_norm_quant_api_bfloat16_large_outer 40.847000 40.857000 +0.010000 +0.0245 大(≥20 μs)
rms_norm_quant_api_bfloat16_large_reduce 60.776000 60.711000 -0.065000 -0.1070 大(≥20 μs)
batch_norm_elemt_api_bfloat16_large_outer 35.477000 34.274000 -1.203000 -3.3909 大(≥20 μs)
batch_norm_elemt_api_bfloat16_large_spatial 30.594000 30.355000 -0.239000 -0.7812 大(≥20 μs)
GroupNorm 同步修复后边界对照:12 项
用例 修改前 μs 修改后 μs 差值 μs 差值 % 分类/说明
group_norm_v2_boundary_28673_float32_float32 187.197000 187.035000 -0.162000 -0.0865 大(≥20 μs)
group_norm_v2_boundary_28673_bfloat16_bfloat16 250.157000 250.108000 -0.049000 -0.0196 大(≥20 μs)
group_norm_v2_boundary_65537_float16_float32 568.796000 568.311000 -0.485000 -0.0853 大(≥20 μs)
group_norm_v2_boundary_28673_float16_float16 250.110000 250.038000 -0.072000 -0.0288 大(≥20 μs)
group_norm_v2_boundary_65537_float16_float16 568.775000 568.427000 -0.348000 -0.0612 大(≥20 μs)
group_norm_v2_boundary_28672_float16_float16 249.568000 249.711000 +0.143000 +0.0573 大(≥20 μs)
group_norm_v2_boundary_28672_float16_float32 249.746000 249.658000 -0.088000 -0.0352 大(≥20 μs)
group_norm_v2_boundary_28673_float16_float32 250.047000 250.115000 +0.068000 +0.0272 大(≥20 μs)
group_norm_v2_boundary_28672_bfloat16_bfloat16 249.532000 249.622000 +0.090000 +0.0361 大(≥20 μs)
group_norm_v2_boundary_65537_bfloat16_bfloat16 568.850000 568.313000 -0.537000 -0.0944 大(≥20 μs)
group_norm_v2_boundary_28672_float32_float32 186.939000 186.683000 -0.256000 -0.1369 大(≥20 μs)
group_norm_v2_boundary_65537_float32_float32 425.581000 424.732000 -0.849000 -0.1995 大(≥20 μs)
2026-10-13 空归约:14 项,每项 100 次,最大绝对波动 0.139 μs
用例 修改前 μs 修改后 μs 差值 μs 差值 % 分类/说明
cast_empty_bfloat16_1 0.986000 0.961000 -0.025000 -2.5355 小(<20 μs)
cast_empty_bfloat16_130000 1.843000 1.872000 +0.029000 +1.5735 小(<20 μs)
cast_empty_bfloat16_19 1.088000 1.074000 -0.014000 -1.2868 小(<20 μs)
cast_empty_bfloat16_20003 1.460000 1.459000 -0.001000 -0.0685 小(<20 μs)
cast_empty_bfloat16_4194304 7.159000 7.298000 +0.139000 +1.9416 小(<20 μs)
cast_empty_bfloat16_8192 1.052000 1.021000 -0.031000 -2.9468 小(<20 μs)
cast_empty_bfloat16_8193 1.201000 1.202000 +0.001000 +0.0833 小(<20 μs)
cast_empty_float16_1 0.986000 0.962000 -0.024000 -2.4341 小(<20 μs)
cast_empty_float16_130000 1.840000 1.856000 +0.016000 +0.8696 小(<20 μs)
cast_empty_float16_19 1.088000 1.073000 -0.015000 -1.3787 小(<20 μs)
cast_empty_float16_20003 1.460000 1.459000 -0.001000 -0.0685 小(<20 μs)
cast_empty_float16_4194304 7.315000 7.297000 -0.018000 -0.2461 小(<20 μs)
cast_empty_float16_8192 1.052000 1.021000 -0.031000 -2.9468 小(<20 μs)
cast_empty_float16_8193 1.200000 1.202000 +0.002000 +0.1667 小(<20 μs)

验证边界与待办

历史联调已覆盖大小 shape;当前变基后的全量设备回归和最终远程依赖版本默认构建未完成。Ascend350 仅有配置/源码审查,未做硬件验证。此附件发布已有结果,不代表专项已完成最终交付。

排版检查(2026-10-27)

对本 PR 全部 60 个改动文件运行 pre-commit,修正 7 个文件的缩进、空行及文件末尾换行。已核对修正前后去除空白字符的内容完全一致,未改变计算或 workspace 分配逻辑。修正后 pre-commit 全部适用检查通过;这是本地检查结果,线上流水线结果以最新提交为准。

Host UT workspace 边界断言修正(2026-10-27)

AddRmsNorm 的性能模板边界用例中,SplitAR(key=3000)保留“系统空间+实际 partial 用户空间”的检查,其余 key 的 workspace 期望更新为 0,与当前 tiling 申报一致。本次只调整算子 UT 一行,不修改生产代码、公共 UT 或 CMake。

本地使用 CANN 9.2.0,通过当前仓库实际选择参数配置并构建 UT:先复现相同的断言失败,再修正该断言并重建对象、归档和最终可执行文件。失败边界用例修正后通过;本次选入的 Host UT 为 44/44 通过;全部 60 个 PR 文件 pre-commit 通过。当前 CANN 9.3.0 线上结果以新流水线为准。

AddLayerNormQuant 的用户地址传递已核对 asc-devkit 标准包装器:包装器先计算 usrWorkspace,再传给原始 kernel。该处沿用传入用户地址,Host 动态量化仍保留原申请策略。源码依据已回复对应检视线程。

主干同步与修改范围核对(2026-10-27)

已同步主干 a90fa6a3529c,当前仍为一次提交。唯一内容冲突位于 RmsNorm arch35 tiling:主干新增 SplitAR、Transpose、空归约模板,已在普通 RmsNorm 路径设置 workspace=0,并在 SplitAR 路径保留系统预留与 partial 用户空间申请。本 PR 沿用该主干实现,不重复加入入口清零,不覆盖新增模板或其用户空间申请。

逐文件核对原提交:其余 59 个文件的实质增删行保持不变;3 个文件的末尾换行修正已由主干包含。因此当前差异为 59 个文件,无新增修改路径。全部当前改动文件 pre-commit 通过,生产/公共测试 CMake 未新增改动。

AddRmsNorm 刚修正的 workspace UT 断言和 AddLayerNormQuant 用户地址传递实现均保留。GroupNormV2 的 Host、Kernel 及本算子 CMake 与同步前版本逐字节一致,当前隔离包验证不受此次变基影响。此处不将已有测试结果表述为全仓重新验证。

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 zhang-song-rui 的贡献)
zhang-song-ruizhang-song-rui成员
24 天前 创建了 pull request,commit b0428149
atomgit-bot
atomgit-bot
24 天前 评论:

变更摘要

本改动主要面向 DAV_3510(Ascend950)平台,去除向量算子在 SSBUF 场景下冗余的系统 workspace 预留。核心是新增 norm/norm_common/op_host/vector_workspace.h,提供 Ops::NN::GetVectorSystemWorkspaceSize:当 NPU 架构为 NpuArch::DAV_3510 时返回 0,其余平台仍返回 GetLibApiWorkSpaceSize()。大量 norm 类算子(batch_norm*、layer_norm*、rms_norm*、group_norm*、add_layer_norm*、softmax 等)的 tiling 将原先固定预留的系统 workspace(如 GetLibApiWorkSpaceSize()、各 MINIMAL_WORKSPACE/DEFAULT_WORKSPACE_SIZE 常量)改为 0 或改为调用该 helper;对应 kernel 在 __NPU_ARCH__ == 3510 下直接使用 workspace 而非 AscendC::GetUserWorkspace,并去掉 workspace == nullptr 的提前返回;同时补充 ascend950/ascend350 的 SoC 名映射与 JIT wrapper 的编译依赖。

主要改动

  • 新增向量 workspace 辅助接口: 新增 vector_workspace.h 中的 Ops::NN::GetVectorSystemWorkspaceSize,按 NpuArch::DAV_3510 判定系统 workspace 预留,成为各算子 tiling 的统一入口。
  • norm 类算子系统 workspace 置零/切换: 各算子 tiling 将 GetLibApiWorkSpaceSize() 或固定常量(如 MINIMAL_WORKSPACE、DEFAULT_WORKSPACE_SIZE、BNG_WORKSPACE_RESERVED、LNV3_MINIMAL_WORKSPACE 等)改为 0 或改调 GetVectorSystemWorkspaceSize,使 workspaceSize_ 与 currentWorkspace[0] 不再包含冗余系统预留。
  • kernel 侧 workspace 获取方式调整: add_layer_norm_quant、batch_norm_grad(_v3)、layer_norm_grad(_v3)、group_norm_grad 等在 __NPU_ARCH__ == 3510 下直接以 workspace 作为 usrWorkspace,非 3510 仍走 AscendC::GetUserWorkspace。
  • 移除空 workspace 提前返回与冗余参数: group_norm_v2、layer_norm_v3/v4、add_rms_norm_dynamic_mx_quant 等去掉 workspace == nullptr/userWS == nullptr 的早返回,并删除 Init 中的 workspace 形参及传入;group_norm_grad 将空 tensor 分支前移并调整 tiling key 顺序。
  • 构建与平台映射配套: opdesc_parser.py 新增 ascend950、ascend350、ascend950pr_9599 的 SoC 映射,gen_ops_info.cmake 将 opdesc_parser.py 与 custom_compile_options.ini 加入 JIT wrapper 生成依赖,保证编译选项变更能触发重新生成。

此外 batch_norm_elemt 以 AllocScalar/ConvertToTensor 广播标量 1 替代 l0op::OnesLike,group_norm_v2 两趟 kernel 增加了 V_MTE2 同步。


🧩 本次 Review 已使用自定义 Skill:

likedislike
不准确?
atomgit-bot
atomgit-bot
24 天前 评论:

代码审查

✅ 未发现问题


🧩 本次 Review 已使用自定义 Skill:

likedislike
不准确?
CANN-robotCANN-robot成员
24 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
24 天前 评论:

CLA Signature Pass

zhang-song-rui, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了168条消息 查看更多
CANN-robotCANN-robot成员
9 天前 添加了label:lgtm
CANN-robot
CANN-robot成员
9 天前 评论:

The MR can not be merged, because of CodeReview discussion not resolved

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike
zhang-song-ruizhang-song-rui成员
9 天前 解决了最后一个问题
CANN-robotCANN-robot成员
9 天前 合入了pull request
CANN-robot
CANN-robot成员
9 天前 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike