已关闭
[Bug-Report|缺陷反馈]: LpNormReduce Ascend950 边界与极大有限 p 加固 #6246
raoliang_sac创建于  24 天前关闭于  24 天前
raoliang_sac成员
24 天前 创建

Describe the current behavior / 问题描述

基于已合入的 LpNormReduce,现有 Ascend950 实现的 Host 仅限制非零维度乘积接近 INT64_MAX,未同时约束 FLOAT 字节跨度;固定 16KiB 归约树缓存也缺少启动前容量检查,极大 shape 的元数据可能使字节偏移不可表示或缓存需求超过容量。有限 p 的原有平方-乘路径对极大整数阶仍执行多轮向量运算。

Environment Information / 环境信息

  • 目标实现:Ascend 950,arch35。
  • 本次本地 CI 环境:CANN 9.2.0;定向检查 Ascend950、Ascend910B。
  • 改动范围:仅 norm/lp_norm_reduce;不新增 aclnn 或 Torch 算子接口。

Steps to reproduce the issue / 重现步骤

  1. 在修改前 Host 的 shape 元数据检查中考察 FLOAT 输入的非零维度乘积:元素数量合法不保证乘以 4 后的字节跨度仍可表示。
  2. 根据 reduction tiling 的 local R 循环数、归约树层数和块对齐 A 行跨度计算缓存需求,考察需求超过 16KiB 的元数据。
  3. 考察非无穷哨兵的有限 p >= 2147483648:修改前仍使用通用整数快速幂路径。

上述巨大 shape 边界应先使用元数据/静态分析,不要求实际分配巨大 Tensor。

Describe the expected behavior / 预期结果

  • Host 将非零维度乘积限制为 floor((INT64_MAX-4096)/4),避免字节跨度溢出。
  • Host 在启动前校验归约树缓存需求,超出固定缓存容量时返回 GRAPH_FAILED。
  • 对极大有限正整数 p 使用 FP32 饱和等价路径,保留 0、1、Inf、NaN 的分支语义;正负无穷哨兵仍走原有归约语义。
  • 统一 kernel 文件名与 CMake、OpDef 绑定;保留 reduce-only 语义,不增加最终开根。
  • 增加独立 NumPy Golden 和 ST 冒烟 CSV;开发辅助测试脚本与性能对照插件不随源码 PR 合入。

关联 PR 的测试章节记录既有精度、性能验证。父提交 682c7f87e 的统一本地 CI 已完成 pre-commit、OAT、文档链接以及 Ascend950/Ascend910B 定向构建;最新提交仅移出四个开发辅助文件,未修改 kernel、Host 或 Golden,也未重跑设备测试。仓内 UT 入口的 0 tests 不作为新增单测覆盖证明。

Special notes for this issue / 备注

本 Issue 跟踪本次质量加固,不代表新增 LpNormReduce 算子。支持范围仍为 Kernel/GEIR。未验证能力和既有证据边界以 PR 及交付件为准,不将原始精度 FAIL 改写为 PASS。

关联 PR:https://gitcode.com/cann/ops-nn/pull/11238

likedislike
Rraoliang_sac成员
24 天前 添加了label:bug-report
yuning_chenyuning_chen成员
24 天前 将 raoliang_sac 设为负责人
CANN-robotCANN-robot成员
24 天前 关闭了 issue
CANN-robotCANN-robot成员
24 天前 添加了label:resolved