Prhub

#29373 [AMD] [GLM5] Guard cuda_runtime.h for ROCm in fused_metadata_copy

原始 PR 作者 Raiden-Makoto 合并时间 2026-06-27 14:29 文件变更 1 提交数 1 评论 2 代码增减 +4 / -0

执行摘要

修复 ROCm fused_metadata_copy 编译失败

PR body 明确指出 ROCm/HIP 下 <cuda_runtime.h> 无条件包含导致 JIT 编译失败,DSA 后端回退到 per-element 拷贝循环,当 --speculative-num-steps >= 4 时推理延迟从 9.8ms 飙升到 963ms,吞吐从 227 tok/s 掉到 6.9 tok/s。

推荐 AMD 用户和有 ROCm CI 的开发者关注。此 PR 是一个典型的平台兼容性修复案例,代码量小但收益显著,值得快速合并。

讨论亮点

无 review 评论。HaiShaw 直接批准,说明变更简单清晰且已有充分性能数据支撑。

实现拆解

  1. 定位问题文件python/sglang/jit_kernel/csrc/elementwise/fused_metadata_copy.cuh 中无条件包含了 <cuda_runtime.h>,在 ROCm 环境下头文件不存在。
  2. 添加条件编译:在 #include <cuda_runtime.h> 前后加入 #ifndef USE_ROCM / #else / #endif,ROCm 时换为 <hip/hip_runtime.h>,与 sgl_kernel/utils.cuh 做法一致。
  3. 仅 4 行新增:未改动其他文件,CUDA 构建路径字节不变。
  4. 性能验证:PR 提供 MI355X 上深度 4 EAGLE 基准测试,输出吞吐从 6.9 tok/s 恢复到 578.3 tok/s,提升约 84 倍,且精度不受影响(GSM8K 0.95)。
文件 模块 状态 重要度
python/sglang/jit_kernel/csrc/elementwise/fused_metadata_copy.cuh JIT 内核 modified 4.44

关键源码片段

python/sglang/jit_kernel/csrc/elementwise/fused_metadata_copy.cuh dependency-wiring

修复的核心文件,通过条件编译解决 ROCm 编译失败问题,恢复 EAGLE 深度推测编码性能。

// ... 文件头部
#include <tvm/ffi/container/tensor.h>
#include <algorithm> // for std::min// 平台兼容头文件:ROCm 使用 hip/hip_runtime.h,CUDA 使用 cuda_runtime.h
#ifndef USE_ROCM
#include <cuda_runtime.h>
#else
#include <hip/hip_runtime.h>
#endif// Forward mode enum (must match Python ForwardMode in sglang/srt/layers/attention/dsa_backend.py)
enum ForwardModeEnum {
  DECODE = 0,
  TARGET_VERIFY = 1,
  DRAFT_EXTEND = 2
};

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低:仅修改一行条件包含,CUDA 构建路径不变,ROCm 构建从失败转为成功。可能的风险是若某些 ROCm 环境没有 <hip/hip_runtime.h>,但该头文件是 HIP 标准头文件,实际部署中未报告此问题。

影响范围限于 ROCm(AMD GPU)上使用 EAGLE 推测解码且 --speculative-num-steps >= 4 的场景。恢复后的吞吐使深度 4 EAGLE 成为更高效率配置(相比深度 3 降低 ITL)。对 CUDA 用户无影响。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论