AGENT PULSESJCPal Special EditionAI 行业证据与趋势
2026年9月24日 · PyTorch

viable/strict/1790283096: [ROCm] Run the SDPA view-grouping test at ieee fp32 precision (#198289)

发生了什么

PyTorch 仓库中 viable/strict/1790283096 记录:test_pattern_fails_with_mismatched_view_grouping_gpu 自 #195383 合入后在 rocm-mi300 的每次 trunk 运行中确定性失败。失败点是测试第二个 _check_common 的数值断言,而非测试所针对的 pattern 匹配;每次运行结果逐位相同:最大绝对差 0.0011501904809847474,位于索引 (2, 1, 14, 7),超出 atol=1e-3。TestSDPAPatternRewriterTemplate.setUp 设置 fp32_precision="tf32"。在 NVIDIA 上该设置使比较两侧精度一致;在 ROCm 上不一致:hipBLASLt 在 gfx942 与 gfx950 上把该标志当作 XF32,eager bmm 参考被降精度,而融合路径下沉到 AOTriton,无论标志为 ieee 还是 tf32 都按完整 fp32 计算。以 fp64 金标准在 gfx942 上测量:ieee 下 eager 参考距金标准 2.41e-06、融合结果 2.46e-06;tf32 下参考为 6.04e-03,融合结果不变。

EVENT STORY

发展脉络

  1. 首次出现viable/strict/1790283096: [ROCm] Run the SDPA view-grouping test at ieee fp32 precision (#198289)PyTorch Core
  2. 当前判断判断:此类问题反映异构加速器生态中同一精度标志在不同 BLAS 实现下语义漂移,会持续增加跨厂商测试与数值可复现性的维护成本。可验证信号是后续 ROCm 与 PyTorch 是否就 fp32_precision 的 XF32 映射给出统一文档或行为约定。Agent Pulse · 分析
改变了什么

该事件的核心是 PyTorch SDPA view-grouping 测试在 ROCm 上的确定性数值失败。测试用 fp32_precision="tf32" 建立比较基准,在 NVIDIA 上两侧精度一致,但在 ROCm 上 hipBLASLt 将标志解释为 XF32 从而降低 eager bmm 参考的精度,而融合路径经 AOTriton 始终以完整 fp32 计算,于是测试把降精度参考与全精度内核相比,被测对象反而更准确。证据给出的 fp64 金标准测量显示,ieee 下参考与融合结果误差分别为 2.41e-06 与 2.46e-06,tf32 下参考误差升至 6.04e-03 而融合结果不变。该 pattern 因不做 1/sqrt(d) 缩放并加入 mask 而比邻近用例更暴露。

能力边界怎么变了

判断:这不是 pattern 重写逻辑的缺陷,而是跨后端精度语义不一致导致的测试基准问题。可验证的下一信号是修复方式——若改为在 ROCm 上以 ieee 精度运行该测试,或让参考路径与融合路径精度对齐,则说明社区认可「参考精度必须不低于被测内核」这一原则;若仅放宽 atol,则属于掩盖语义差异。

为什么重要

判断:此类问题反映异构加速器生态中同一精度标志在不同 BLAS 实现下语义漂移,会持续增加跨厂商测试与数值可复现性的维护成本。可验证信号是后续 ROCm 与 PyTorch 是否就 fp32_precision 的 XF32 映射给出统一文档或行为约定。

对谁有影响

判断:对使用 ROCm 训练或推理的团队,这类精度语义差异意味着同一代码在不同硬件上可能得到不同数值结果,影响回归测试可信度与调试成本。可验证信号是修复后该测试在 rocm-mi300 上是否恢复确定性通过。

接下来观察

判断:短期内该测试可能以精度对齐或跳过方式恢复绿色;中期看,若更多算子测试依赖 tf32 基准,类似跨后端数值分歧可能重复出现。可验证信号是后续 trunk 运行中该用例是否稳定通过,以及是否出现同类精度相关 issue。