Intel GPU 技术生态日报 (2026-09-23)

技术日报显卡 #Intel#GPU#Arc#oneAPI#XPU#日报
目录

核心速览

  • [Merged] Triton XPU 将 ReduceOp 折叠逻辑上移并拒绝 num_ctas>1:精简 884 行 fork,折叠顺序移至 TargetInfoBase,并拒绝 num_ctas>1。
  • [Merged] Triton XPU 将循环内 2D dot 操作数加载下沉至首次使用:ReduceVariableLiveness 新增下沉循环内 2D dot 操作数加载,降低寄存器压力。
  • [Merged] vLLM XPU 支持 VLLM_BATCH_INVARIANT 并自动选择 MoE 后端:对齐 CUDA 行为,自动选择 Triton MoE 后端,并采用确定性归约顺序。

下游优化与加速库 (intel/llm-scaler / Triton / OpenVINO)

  • [vLLM XPU] VLLM_BATCH_INVARIANT support for Dense/MoE models:该 PR 修复了两个问题:1) 当 VLLM_BATCH_INVARIANT=1 时自动选择 Triton MoE 后端,与 CUDA 行为对齐(注意力后端自动选择已存在);2) 在 VLLM_BATCH_INVARIANT 模式下使用确定性的固定秩序归约,确保批处理不变性。 [PR #55881]

    影响: 使 XPU 上的批处理不变性行为与 CUDA 一致,提高可预测性和稳定性。

  • [SGLang XPU] Disable XPU NIXL disaggregation test in CI:由于 PR #40288 导致 XPU CI 回归,且 XPU CI 镜像未提供 XPU 兼容的 NIXL/UCX 环境,该 PR 暂时禁用本地测试中的 XPU NIXL disaggregation 测试。 [PR #40540]

    影响: CI 恢复稳定,但该功能在 XPU 上的验证被暂停。

  • [SGLang XPU] Enable KV Canary on Intel XPU:KV Canary 原本仅支持 CUDA,该 PR 将仅限 CUDA-JIT 的 canary 内核路由到非 CUDA 设备上的字节等价 torch 参考实现,并用 torch.get_device_module(device) 替换硬编码的 torch.cuda 用法,同时添加了 XPU 端到端测试。 [PR #33520]

    影响: KV Canary 功能扩展到 XPU,便于在 Intel 硬件上进行 KV 缓存验证。

  • [vLLM XPU] Remove model_runner_v2 test from Intel GPU CI:继 PR #54823 之后,该 PR 将 model_runner_v2 测试从 Intel GPU CI 中移除,可能是由于该测试在 XPU 上不稳定或不适用。 [PR #58050]

    影响: CI 更稳定,但减少了相关测试覆盖。

  • [vLLM XPU] Fix Nemotron FP8 LM-eval config for XPU:NVIDIA-Nemotron-3-Nano-30B-A3B-FP8.yaml 配置中设置了 moe_backend: “flashinfer_cutlass”,该后端仅支持 CUDA,无法在 Intel XPU 上运行。该 PR 添加了 XPU 专用配置,并接入新的 Buildkite 作业。 [PR #49685]

    影响: 修复 XPU 上 Nemotron FP8 评估配置,使 LM-eval 可在 Intel 硬件上运行。

主流框架与上游集成 (PyTorch / vLLM / SGLang / llama.cpp / Ollama)

  • [Triton XPU] Shrink forked ReduceOp lowering and reject num_ctas > 1:Intel 的 ReduceOp fork 原本有 884 行,但其中大部分并非维持 within-thread left fold 所必需。该提交将 fold 顺序逻辑上移至 TargetInfoBase::getReduceOp 中,从而大幅精简 fork 代码,并显式拒绝 num_ctas > 1 的情况,避免不支持的配置。 [Commit 0e4f28f]

    影响: 减少代码维护成本,明确限制 num_ctas>1 不支持,避免潜在错误行为。

  • [Triton XPU] Sink in-loop 2D dot operand loads to their first use:ReduceVariableLiveness 此前仅能下沉循环不变量(在循环前加载一次)的 2D dot 操作数加载,对于循环内变化的操作数没有处理。该提交扩展了该 pass,将循环内 2D dot 操作数的加载下沉到其首次使用点,从而减少变量活跃范围,降低寄存器压力。 [Commit 8ae6142]

    影响: 改善循环内 2D dot 操作的寄存器分配,可能减少溢出,提升性能。

  • [Triton XPU] Do not allow SPIR-V extensions unknown to the LTS driver’s IGC:getAllowedExtensions() 允许 32 个 SPIR-V 扩展,但 LTS 驱动附带的 IGC 并不认识其中 12 个。该提交将这些未知扩展从允许列表中移除,避免生成 LTS 驱动无法处理的 SPIR-V 扩展。 [Commit 13a4250]

    影响: 确保 LTS 驱动下生成的 SPIR-V 可被正确消费,避免运行时错误。

  • [Triton XPU] Skip LTS bf16<->f16 and fp16 scaled_dot failures in CI:LTS 分支的 Build and test 在 main 上持续失败,原因是 bf16<->f16 和 fp16 scaled_dot 测试失败。该提交在 CI 中跳过这些失败测试,但未修复根本问题,属于临时规避。 [Commit 6313627]

    影响: CI 恢复绿色,但底层问题未解决,可能掩盖真实缺陷。

  • [Triton XPU] Cut unroll count in num_warps=64 spill recompile test:测试 test_jit_spill_recompile_num_warps_64_does_not_crash 在 BLOCK=65536 和 num_warps=64 下对五个活跃向量展开 tl.static_range(64),导致每个 lane 有 64 个 f32,可能引发编译时间过长或资源问题。该提交减少展开次数以稳定测试。 [Commit f2e85bd]

    影响: 测试更稳定,但可能降低了对极端情况的覆盖。

  • [Triton XPU] Reduce core divergence in triton-opt, lit tests and AsmDict:该提交移除了 triton-opt 链接行中冗余的 TritonIntelLLVMIR(add_triton_library 已将其包含在 TRITON_LIBS 中),并调整了两个 lit 测试和 AsmDict 以减少与上游的差异。 [Commit e41a9e5]

    影响: 减少与上游 Triton 的代码分歧,简化维护。

  • [Triton XPU] Use tensor descriptors in fla kernels on GDN path:Triton 移除了 block pointers,导致 fla 内核中调用 tl.make_block_ptr 的代码无法编译,因此 test_chunk_gated_delta_rule.py 中的 29 个测试被跳过。该提交在 GDN 路径上改用 tensor descriptors 替代 block pointers,使这些测试能够编译运行。 [Commit 2380c20]

    影响: 恢复 fla 内核在 GDN 路径上的可用性,消除测试跳过。

  • [Triton XPU] Update spirv-llvm-translator.conf:自动 PR 更新 spirv-llvm-translator 的提交 ID,以同步最新的翻译器版本。 [Commit 385d7df]

    影响: 保持与最新 SPIR-V LLVM 翻译器同步,可能带来 bug 修复或新功能。