已关闭
[Bug-Report|缺陷反馈]: PSROIPoolingV2 Golden拒绝Promote float64导致GEIR用例失败 #6578
陈展熹创建于 16 天前关闭于 16 天前
16 天前 关闭了 issue
16 天前 添加了label:resolved
HuangRZzzz
10 天前 评论:
10 天前 评论:
修复已确认合入 master,当前实现与 issue 预期一致。
master(HEAD 0c33f63)pooling/psroi_pooling_v2/tests/assets/golden.py 中 psroi_pooling_v2_golden(golden.py:152)的 dtype 入口校验:
- golden.py:178 读取 golden_mode;:183 基础集为 float16/float32;:185-186 仅当 golden_mode == "Promote" 时追加 float64;:187 仍强制 rois.dtype == x.dtype;:188-191 抛 TypeError(提示 "float64 is allowed only in Promote mode")。
在 master 上实测 issue 的最小复现:Promote + float64 输入返回 float64 的 4.0(断言通过);非 Promote + float64 仍抛 TypeError;Promote 下 x/rois 混型同样抛 TypeError。即未放行多余组合,非 Promote 仍限 float16/float32。
PR !11830 base 为 master、merged 2026-10-13 11:00,commit a0df562f 仅改该 1 文件(+9/-2),共享计算 core 与 TestSpec 判据未动,与 issue 描述吻合。
另:该目录仓内目前没有针对 Golden 的独立 Python 单测(tests/ut 仅 op_host 的 tiling/infershape 用例),行为回归仍依赖 TTK;如需防回归可补一个最小 Promote/非 Promote 单测。


Describe the current behavior / 问题描述 (Mandatory / 必填)
PSROIPoolingV2 的
pooling/psroi_pooling_v2/tests/assets/golden.py在 TTK GEIRcross_check精度比较中拒绝Promote后的 float64 输入,导致 Golden 生成失败,无法完成数值比较。TTK 为获得高精度真值将原 float32 输入提升为 float64;Golden 计算核心本来支持 float64,但入口只允许 float16/float32,提前抛出:
这不是已经完成数值比较后的 kernel 精度失败,也不是 CSV 声明错误:设备输入/输出仍为 float32,只有高精度参考输入被 Promote 为 float64。
原始缺陷及附件:https://gitcode.com/wangyueting/changwei_hebaojing/issues/23
Environment Information / 环境信息 (Mandatory / 必填)
46fe46ebdbb60f07a63662a6419cb67c17efc55f。3f80c6707107c5dcd793187fdc0b4dbc0819f8a5。cross_checkL1,第三方为真实 Torch CPU provider。Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)
import importlib.util from pathlib import Path import numpy as np path = Path("pooling/psroi_pooling_v2/tests/assets/golden.py") spec = importlib.util.spec_from_file_location("psroi_golden", path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) x = np.array([1, 3, 5, 7], dtype=np.float64).reshape(1, 1, 2, 2) rois = np.array([0, 0, 0, 1, 1], dtype=np.float64).reshape(1, 5, 1) y = module.PsroiPoolingV2TestSpec.golden( x, rois, spatial_scale=1.0, output_dim=1, group_size=1, golden_mode="Promote", )[0] assert y.dtype == np.float64 and y.item() == 4.0修复前在 dtype 入口校验抛出 TypeError;修复后返回 float64 的 4.0。
PSROIPoolingV2_L0_accuracy_perf_c_s_002、PSROIPoolingV2_L0_accuracy_perf_c_s_008回归。Describe the expected behavior / 预期结果 (Mandatory / 必填)
golden_mode == "Promote"时允许 float64,保证高精度真值不被降回 float32。Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
已完成修复及实际回归:
PSROIPoolingV2_L0_accuracy_perf_c_s_002(48456,93,1,1)7.947285973752827e-08,无 NaN/InfPSROIPoolingV2_L0_accuracy_perf_c_s_008(9186,1,127,127)148160994个 +Inf 完全一致;0 NaN、0 -Inf每条 NPU 实际执行 3 次,输出 MD5 一致;
cst_precision=PASS、precision_status=PASS、deterministic_status=PASS。原 Spec cross_check L1 判据未放宽。额外公共接口行为测试:三份本地 Golden 36/36 PASS;PR 版本重新执行 12/12 PASS,TTK SpecLoader 的 Promote 调用及 Python 语法检查 PASS。
Special notes for this issue/备注 (Optional / 选填)
修复 PR:https://gitcode.com/cann/ops-nn/pull/11830 (已提,尚未合并)。
单提交:
a0df562f11027c64824444cf98b7d005bed5f8be;仅修改 Golden 入口的 Promote float64 准入、函数说明和错误信息,共 1 文件,9 行新增、2 行删除。共享计算 core 和 TestSpec 判据保持原样。本次只回归上述 002/008,不宣称全量通过。三方仅验证 Torch CPU 功能,未验证 GPU 三方性能,本轮没有可报告的 CST kernel 耗时。不修改已有 OPP 包,也不将原 issue 中历史性能数据当作本轮结果。