Prhub

#45140 [Kernel][XPU] Adjust kernel unit tests for XPU

原始 PR 作者 adobrzyn 合并时间 2026-06-30 17:57 文件变更 1 提交数 9 评论 2 代码增减 +5 / -5

执行摘要

为 XPU 放宽 Mamba SSM 测试精度阈值

XPU上的Triton selective_state_update核函数内部以fp32累积,相比纯PyTorch bf16参考实现(bf16内累积)在某些元素上更精确,导致默认bf16容差下部分元素不满足allclose。PR body指出ROCm已因相同原因加倍atol,本次扩展至XPU,使测试通过。

本PR是常规的测试适配变更,改动小且经过review确认,建议快速合并。值得关注的是使用current_platform统一平台检查的实践,可在其他测试中推广。

讨论亮点

Review中jikunshang建议将torch.version.hip or current_platform.is_xpu()改为current_platform.is_rocm() or current_platform.is_xpu(),以使用更统一的平台检查API。adobrzyn接受并完成修改(commit 778a7474d)。

实现拆解

  1. 修改测试容差逻辑:在tests/kernels/mamba/test_mamba_ssm.py中,将5处if torch.version.hip:条件扩展为if current_platform.is_rocm() or current_platform.is_xpu():,使ROCm和XPU均享受bf16 atol翻倍的宽松阈值。
  2. 平台检查方式优化:应review建议,将torch.version.hip替换为更规范的current_platform.is_rocm(),与新增的current_platform.is_xpu()保持风格一致。
  3. 无其他文件变更:本PR仅修改测试文件,不涉及源码、配置或部署。
文件 模块 状态 重要度
tests/kernels/mamba/test_mamba_ssm.py 测试 modified 3.87

关键符号

test_selective_state_update test_selective_state_update_varlen test_selective_state_update_with_batch_indices test_selective_state_update_with_num_accepted_tokens test_selective_state_update_varlen_with_num_accepted

关键源码片段

tests/kernels/mamba/test_mamba_ssm.py test-coverage

唯一变更文件,修改 5 处 bf16 atol 条件判断,新增 XPU 支持并统一平台检查方式。

# 在 tests/kernels/mamba/test_mamba_ssm.py 中,
# 多个测试函数都包含类似的 bf16 容差调整逻辑。
# 以下是 test_selective_state_update 中的示例:if itype == torch.bfloat16:
    rtol, atol = 1e-2, 5e-2
    # 对于 ROCm 和 XPU 平台,放大 atol 以避免因 fp32 累积精度
    # 高于 bf16 参考实现而导致的误报失败。
    if current_platform.is_rocm() or current_platform.is_xpu():
        atol *= 2# 其余 4 个测试函数(test_selective_state_update_varlen、
# test_selective_state_update_with_batch_indices、
# test_selective_state_update_with_num_accepted_tokens、
# test_selective_state_update_varlen_with_num_accepted)
# 均使用完全相同的条件结构。

评论区精华

平台检查方式改进 设计

jikunshang 建议将 `torch.version.hip or current_platform.is_xpu()` 改为 `current_platform.is_rocm() or current_platform.is_xpu()`,以使用更统一的 `current_platform` API。

结论:adobrzyn 接受建议并在后续 commit 中修改了所有 5 处条件。 · 已解决

风险与影响

风险极低。仅修改测试容差逻辑,且仅针对bf16类型放大atol,不影响CUDA或其他平台行为。放大atol可能掩盖真实的精度问题,但幅度(2倍)较小,且ROCm已长期使用相同倍数,风险可控。

直接影响:XPU上Mamba SSM的5个bf16测试用例从失败变为通过,消除CI误报。间接影响:增强vLLM对Intel XPU平台的支持完整性,降低开发者适配成本。影响范围局限于测试环境。

测试容差放宽 仅影响 XPU/ROCm

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论