Prhub

#37029 [Hardware][XPU] Align memory usage with cuda on xpu

原始 PR 作者 jikunshang 合并时间 2026-03-25 18:14 文件变更 1 提交数 2 评论 1 代码增减 +1 / -0

执行摘要

在 XPU 平台添加 empty_cache 调用以对齐 CUDA 内存分析,但测量逻辑可能不正确。

根据PR body,动机是"cuda platform add empty_cache for get_current_memory_usage in https://github.com/vllm-project/vllm/issues/19033 xpu/rocm platform should add this to keep memory profiling part align with cuda.",即为了对齐CUDA平台的内存使用分析,XPU和ROCm平台需要添加empty_cache调用。

建议关注此PR中未解决的逻辑问题,后续可能需要修复测量逻辑以真正对齐CUDA。对于技术管理者,值得检查是否有相关issue跟进;对于工程师,可精读review讨论以了解硬件平台内存测量差异和潜在改进点。

讨论亮点

review中,gemini-code-assist[bot]在xpu.py第253行评论指出关键问题:"The logic for get_current_memory_usage on XPU appears incorrect. Calling torch.xpu.max_memory_allocated(device) after reset_peak_memory_stats will likely return 0, not the current memory usage. To align with the ROCm and CUDA platforms, this function should use torch.xpu.mem_get_info()...",建议使用mem_get_info计算当前内存使用。然而PR未采纳此建议,仅添加了empty_cache,导致逻辑问题未解决,但两个人类reviewer(yma11和bigPYJ1151)仍批准了PR。

实现拆解

实现方案仅修改一个文件:vllm/platforms/xpu.py,在get_current_memory_usage方法中添加了一行代码torch.xpu.empty_cache(),以在重置峰值内存统计前清空缓存,但未修改核心测量逻辑(仍使用torch.xpu.max_memory_allocated)。ROCm平台的类似更改在后续提交中被回滚。

文件 模块 状态 重要度
vllm/platforms/xpu.py platforms/xpu modified 4.0

关键符号

get_current_memory_usage

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

XPU 内存测量逻辑正确性 正确性

gemini-code-assist[bot] 指出 get_current_memory_usage 使用 max_memory_allocated 可能返回 0,建议使用 mem_get_info 计算当前内存使用以对齐 ROCm 和 CUDA 平台。

结论:PR 未采纳此建议,仅添加了 empty_cache,逻辑问题未解决,但 PR 仍被批准合并。 · 未解决

风险与影响

主要风险在于内存使用测量逻辑不正确:在XPU平台,get_current_memory_usage方法在调用reset_peak_memory_stats后使用max_memory_allocated,可能导致返回0而非当前实际内存使用,影响内存分析准确性。这可能导致性能监控偏差或误导优化决策。风险具体集中在vllm/platforms/xpu.py文件中的get_current_memory_usage函数。

影响范围限于XPU平台的内存分析模块,对用户和系统其他部分无直接功能影响,但测量不准确可能间接影响性能调优或资源管理决策。影响程度中等,因仅涉及特定硬件平台的辅助功能,不改变核心推理逻辑。

核心测量逻辑错误 内存分析不准确

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论