已合并
fix(lp_norm_reduce): 加固 Ascend950 边界与极大 p 性能 #11238
fix(lp_norm_reduce): 加固 Ascend950 边界与极大 p 性能 #11238
已合并
raoliang_sac创建于 9月27日
raoliang_sac成员
9月27日

描述

基于已合入的 LpNormReduce 实现,补齐独立 FP64 Golden 与 Kernel/GEIR 测试资产,规范 kernel 入口命名,修复 Host 超大 shape 字节跨度及 16KiB 归约树缓存容量边界;对 p≥2^31 的极大有限正整数幂增加 FP32 饱和等价快捷路径,并增加编译型 A100 第三方性能对照插件。Golden 数值公式未改,支持面仍仅 Kernel/GEIR,不新增 aclnn、e2e 或 Torch 算子接口。

关联的Issue

#6246

https://gitcode.com/cann/ops-nn/issues/6246

测试

  • CANN 9.2.0 / Ascend950PR,受控仅本算子构建 jobs4 通过,部署两套 vendor 路径的本算子 binary/source 逐文件一致;预提交格式、ruff、OAT 和远端 Git hooks 通过。
  • Golden/Host 定向 CPU 与元数据边界测试通过;普通8/8、大 shape 单条1/1及代表性24条有效原始 PASS;极大 p 风险10/10、特殊值6/6原始 PASS。
  • 冻结 Kernel200:200条 BINARY_MATCH、内存与同例 A100/NPU设备计时有效;原始精度198 PASS/2 FAIL,两条 FAIL 经独立复核均为相邻1 ULP,原始 TTK FAIL 保留。raw G/N 最小0.123777506、均值0.979005841,全部达到0.1门槛。
  • 冻结 GEIR50:静态和动态图同例三方最终50/50原始 PASS,保守 raw G/N 最小0.120204724、均值0.658032303。主队列 A100 隧道断线的原始8 FAIL及额外1条动态图 GOLDEN_FAILURE 保留;9条故障窗口加2条构建重叠窗口用例定向复测11/11原始 PASS,逐例来源和原始CSV见迁移 PR https://gitcode.com/raoliang_sac/MyCodeWork/merge_requests/2。
  • TTK 每次显式 --pc=1。仓库旧 pre-push 钩子会越过本任务≤8并行上限,误触发后已定向停止;已完成受控定向构建和设备验证,源码推送仅跳过该不合规本地钩子,未声称它通过。

文档更新

更新算子 README 与测试资产说明;正式迭代交付及原始证据边界见 https://gitcode.com/zl_hw/myOpen/merge_requests/8。

类型标签

AI/Agent生成声明

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 raoliang_sac 的贡献)
Rraoliang_sac成员
9月27日 创建了 pull request,commit 56a842d3
atomgit-bot
atomgit-bot
9月27日 评论:

变更摘要

本 PR 在已合入的 LpNormReduce 实现基础上做加固与测试资产补齐,未改动数值计算公式与现有支持面。Host 侧将超大 shape 的元素数上界由按元素计改为按字节跨度约束,避免 GM stride × sizeof(DT) 溢出;新增固定 UB 缓存归约树容量校验 CheckCacheCapacity;规范 kernel 文件名与绑定,将 lp_norm_reduce_apt.cpp 重命名为 lp_norm_reduce.cpp 并同步 opFile.value;同时新增独立 FP64 Golden 与 CPU-only 守卫测试。

主要改动

  • Host shape 边界改为字节跨度口径:GetShapeAndDtype 中 kNumelLimit 由 INT64_MAX - 4096 收紧为 (INT64_MAX - 4096) / FP32_BYTES,以最大元素字节数约束非零维连乘,防止下游 stride 与字节偏移溢出,并同步更新报错文案为字节跨度语义。
  • 新增 UB 缓存容量校验:新增 CheckCacheCapacity,按 group 场景下最大的本地 R 循环数 localRLoops 计算二叉树层数 cacheLevels,校验对齐后的层步长不超过 CACHE_BUF_BYTES 容量,并在 TilingFuncLpNormReduce 中于 ComputeUbSizes 前调用。
  • kernel 入口命名规范化:kernel 文件由 op_kernel/lp_norm_reduce_apt.cpp 重命名为 op_kernel/lp_norm_reduce.cpp,lp_norm_reduce_def.cpp 中 ExtendCfgInfo("opFile.value", ...) 由 lp_norm_reduce_apt 改为 lp_norm_reduce,并同步 lp_norm_reduce_tiling_key.h 注释中的入口路径。
  • 新增独立 FP64 Golden 资产:新增 tests/assets/golden.py,提供 LpNormReduceTestSpec(NumPy FP64 oracle)与 TorchLpNormReduce(原生 Torch 参考),覆盖 p=0/1/2/3/±inf、keepdim、空张量、标量等分支,并定义 customize_inputs 按用例名注入零点与 inf/NaN 特殊值、tolerance 与 third_party 配置。
  • 新增 CPU-only 测试守卫:新增 tests/golden/test_golden.py 与 tests/golden/test_assets.py,分别校验 oracle 与 Torch 参考的数值/类型/异常行为、TTK 容差与 promote 语义,以及 kernel 文件绑定、CMakeLists.txt 中 KERNEL_SRC、opFile.value 配置与 smoke.csv 用例的 p 值与 dtype 覆盖。
likedislike
不准确?
atomgit-bot
atomgit-bot
9月27日 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
9月27日 添加了label:stat/needs-squash
CANN-robotCANN-robot成员
9月27日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
9月27日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

✅ Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
*/*/README.md ✅ 陈展熹, 钱泽洪, 陈娇 (3/2) ✅ 陈娇 (1/1)
*/*/op_host/*_def.cpp ✅ 钱泽洪, 陈展熹, 汤磊 (3/2) ✅ 汤磊 (1/1)
norm ✅ 钱泽洪, 陈展熹 (2/2) ✅ 钱泽洪, 陈展熹 (2/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

raoliang_sac, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
CANN-robotCANN-robot成员
9月27日 将zengjuan,u010470851,chaotang233,kevin_huang1234,crystalhu,yangyang016,fanqirui,gitee-duhuiping,wangrui_,renruhai,su-yueming,zhajianqing123,tang-lei01,yourealize,chenqi317,wang-xing001,liubo75,tangweiwei2,gitcode-chenjiao,chenxingyu18,liujie12345678,pingchuantang,Chen_HaoWen,qianzehong,wangyongguang,fengying555682,caiwenwen,yanglu-1设为评审人
此处折叠了12条事件消息 查看更多
CANN-robotCANN-robot成员
9月28日 添加了label:cann-cla/yes
raoliang_sac成员
9月28日 评论:

compile

likedislike
Rraoliang_sac成员
9月28日 预合并成功(commit_id: 672601abfc0101c8e4f2c4fa3fadf47720b8b9af)
CANN-robot
CANN-robot成员
9月28日 评论:
🚀 CI 流水线已启动
📋 执行详情: 点击查看流水线
likedislike
CANN-robotCANN-robot成员
9月28日 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
9月28日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
9月28日 添加了label:ci-pipeline-passed
tang-lei01成员
9月28日 评论:

/approve

likedislike
Rraoliang_sac成员
9月28日 修改了pull request 的描述
陈展熹成员
9月28日 评论:

/lgtm
/approve

likedislike
qianzehong成员
9月28日 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
9月28日 添加了label:lgtm
chenjiao成员
9月28日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
9月28日 添加了label:approved
CANN-robotCANN-robot成员
9月28日 关闭了关联的issue
CANN-robotCANN-robot成员
9月28日 合入了pull request