[CI][Bugfix] Extend groupwise rms_norm scale tolerance to CUDA (#58252)

Signed-off-by: kimi-no-na-wa <kimi-no-na-wa@users.noreply.github.com> Co-authored-by: kimi-no-na-wa <kimi-no-na-wa@users.noreply.github.com>

vllm-agent committed Sep 23, 2026 at 01:29 UTC 955bd6abef5a253f43c462cedb4d7279edc9ddc3
1 file changed +7 -4
tests/kernels/core/test_fused_quant_layernorm.py
+7 -4
@@ -318,10 +318,13 @@ def test_rms_norm(
318 # Per-block bf16 scales: allow a small relative tolerance for a few groups
319 # whose abs-max flips by one ULP between the fused and reference paths. The
320 # per-token and fp32 paths stay strict.
321 - relax_block_rocm = (
321 + # The same one-ULP group-scale flip also occurs on CUDA (H200), so extend
322 + # the block relaxation there too — the fused groupwise reduction rounds
323 + # differently than the reference for isolated groups.
324 + relax_block = (
325 group_size is not None
326 and dtype == torch.bfloat16
324 - and current_platform.is_rocm()
327 + and (current_platform.is_rocm() or current_platform.is_cuda())
328 )
329 use_gfx950_fp8_allclose = (
330 current_platform.is_rocm()
@@ -340,7 +343,7 @@ def test_rms_norm(
343 def scales_close(rtol: float, atol: float) -> bool:
344 if torch.allclose(ref_scales, ops_scales, rtol=rtol, atol=atol):
345 return True
343 - return relax_block_rocm and torch.allclose(
346 + return relax_block and torch.allclose(
347 ref_scales, ops_scales, rtol=1e-2, atol=atol
348 )
349
@@ -354,7 +357,7 @@ def test_rms_norm(
357 b = ops_out.to(dtype=torch.float32)
358 ok = torch.allclose(a, b, atol=1e-6)
359 if not ok:
357 - if relax_block_rocm:
360 + if relax_block:
361 # ULP-flipped group scale can cross an E4M3 tie; tolerate a
362 # bounded count of isolated fp8 outliers.
363 ulp = fp8_ulp_distance(ref_out, ops_out)