Prhub

#41344 [XPU] Disable CUDA graph memory estimate on XPU platform

原始 PR 作者 chaojun-zhang 合并时间 2026-05-06 16:38 文件变更 1 提交数 2 评论 2 代码增减 +1 / -1

执行摘要

XPU 平台禁用 CUDA graph 内存估算

修复 Intel GPU 在启用 VLLM_XPU_ENABLE_XPU_GRAPH=1 时启动失败,因为 CUDA graph 内存估算的代码会调用 CUDA 特 API(如 torch.cuda.mem_get_info),导致 XPU 平台上报错。

值得合入,修复明确,审查充分。建议精读的开发者关注 vllm/v1/worker/gpu_worker.py 中的内存估算逻辑,了解跨平台条件判断的设计模式。

讨论亮点

gemini-code-assist[bot] 建议将黑名单方式改为白名单(直接检查 current_platform.is_cuda()),认为这样更健壮且易于维护,避免后续因新增平台而需要反复修改黑名单。该建议被采纳并合并到了最终代码中。

实现拆解

  1. 修改条件判断:在 vllm/v1/worker/gpu_worker.pydetermine_available_memory 函数中,将 cudagraph_memory_estimate 的计算条件从 not current_platform.is_rocm() 改为 current_platform.is_cuda()
  2. 逻辑效果:现在只在 CUDA 平台上执行 CUDA graph 内存估算,ROCm 和 XPU 均跳过该步骤,维持 cudagraph_memory_estimate 为 0。
  3. 影响范围:该变更仅涉及一行代码,但影响所有非 CUDA 平台的内存估算行为,确保 XPU 用户能正常启动 vLLM server。
文件 模块 状态 重要度
vllm/v1/worker/gpu_worker.py GPU 工作器 modified 4.32

关键符号

determine_available_memory

关键源码片段

vllm/v1/worker/gpu_worker.py core-logic

核心修改文件,修改了 CUDA graph 内存估算的判断条件,从排除 ROCm 改为仅对 CUDA 启用,影响所有非 CUDA 平台的内存估算行为。

# file: vllm/v1/worker/gpu_worker.py, method: determine_available_memory
# 该代码段展示 CUDA graph 内存估算的条件判断变更# Profile CUDA graph memory if graphs will be captured.
# Skip on ROCm/HIP/XPU as graph pool handles and mem_get_info behave
# differently and can produce incorrect/negative estimates.
cudagraph_memory_estimate = 0
if (
    current_platform.is_cuda() # 原为 not current_platform.is_rocm(),改用白名单方式
    and self.vllm_config.compilation_config.cudagraph_mode
    != CUDAGraphMode.NONE
):
    cudagraph_memory_estimate = self.model_runner.profile_cudagraph_memory()# 后续代码不变,On ROCm 和 XPU 时 cudagraph_memory_estimate 保持为 0

评论区精华

黑名单 vs 白名单方式 设计

gemini-code-assist[bot] 建议将 `not current_platform.is_rocm()` 改为 `current_platform.is_cuda()`,认为白名单更健壮且易于维护。

结论:采纳了白名单建议,最终代码使用 `current_platform.is_cuda()`。 · 已解决

风险与影响

低风险。变更仅涉及一行条件判断,且从黑名单改为白名单后,逻辑更精确(只有确认支持 CUDA graph 内存估算的平台才执行)。潜在风险是如果未来有非 CUDA 但兼容 CUDA 内存估算 API 的平台,会被误排除;但当前无此类情况,如有需要可后续调整。

直接影响 XPU 平台用户,使其能正常启动 vLLM server 并启用 XPU graph 功能。不影响 CUDA 和 ROCm 平台行为(ROCm 此前已被排除,CUDA 仍然启用)。代码库的维护性因白名单方式而改善。

缺少测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论