Prhub

#31143 [AMD] jit_kernel: complete utils.cuh HIP-compat (cudaDevAttr / cudaDeviceGetAttribute)

原始 PR 作者 ankith117 合并时间 2026-07-14 16:06 文件变更 1 提交数 1 评论 0 代码增减 +3 / -0

执行摘要

为 utils.cuh 添加缺失的 HIP 映射

JIT 内核共享头文件 utils.cuh 的 HIP 兼容块中缺少 cudaDeviceGetAttribute 及其相关的 cudaDevAttrComputeCapabilityMajor/Minor 枚举的映射,导致包含 utils.cuh 的 JIT 内核在 ROCm 上编译失败,错误为 'use of undeclared identifier'。该问题在 gfx1151(Strix Halo)等 RDNA 设备上暴露,因为 CDNA 路径跳过了这些 JIT 内核。PR 作者在 body 中说明:'On ROCm this makes any JIT kernel that includes utils.cuh — e.g. the KV-cache kernel every model compiles — fail to build'。此修复是消费者 RDNA 支持(issue #30599)的一部分。

3

讨论亮点

Review 审核较少:

  • gemini-code-assist[bot] 的自动化审查未提供实质反馈。
  • DarkSharpness 批准(LGTM)。
  • 没有实质性讨论或争议。

实现拆解

  1. jit_kernel/include/sgl_kernel/utils.cuh 文件的 #else /* USE_ROCM */ 分支内,已有的 HIP 兼容宏块中添加三行 #define 映射。
    - cudaDeviceGetAttributehipDeviceGetAttribute
    - cudaDevAttrComputeCapabilityMajorhipDeviceAttributeComputeCapabilityMajor
    - cudaDevAttrComputeCapabilityMinorhipDeviceAttributeComputeCapabilityMinor
  2. 这些宏位于 #ifndef USE_ROCM#else 分支中,因此仅对 ROCm 构建生效,CUDA 构建不受影响。
  3. 无需其他文件变更、测试或文档更新,因为这只是预处理阶段的符号映射,不影响运行时数值逻辑。
文件 模块 状态 重要度
python/sglang/jit_kernel/include/sgl_kernel/utils.cuh JIT 内核 modified 3.04

关键符号

getSMVersion

关键源码片段

python/sglang/jit_kernel/include/sgl_kernel/utils.cuh core-logic

这是唯一被修改的文件。缺失的 HIP 映射导致 ROCm 上所有包含此文件的 JIT 内核编译失败。添加三个宏定义修复了该问题。

// File: python/sglang/jit_kernel/include/sgl_kernel/utils.cuh
// Context: 该文件是 SGLang JIT 内核的共享头文件,包含 CUDA/HIP 兼容宏。
// 以下代码位于 `#ifndef USE_ROCM` 的 `#else` 分支中,仅 ROCm 编译时生效。// ... 其他 HIP 兼容宏 ...
#define cudaMemcpyAsync hipMemcpyAsync
#define cudaMemcpyHostToDevice hipMemcpyHostToDevice
#define cudaMemcpyDeviceToHost hipMemcpyDeviceToHost// 新增:映射 cudaDeviceGetAttribute 及 cudaDevAttrComputeCapabilityMajor/Minor
// 这些符号被 `getSMVersion()` 函数用于获取设备计算能力,
// 缺失会导致所有包含 utils.cuh 的 JIT 内核编译失败。
#define cudaDeviceGetAttribute hipDeviceGetAttribute
#define cudaDevAttrComputeCapabilityMajor hipDeviceAttributeComputeCapabilityMajor
#define cudaDevAttrComputeCapabilityMinor hipDeviceAttributeComputeCapabilityMinor#endif /* USE_ROCM */
// ...

评论区精华

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

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

风险与影响

极低风险。

  • 变更仅涉及三行宏定义,且位于 USE_ROCM 条件编译块内,CUDA 构建无变化。
  • 映射与运行时内核 runtime.cuh 中已有的定义一致,已通过实际的 gfx1151 设备端到端验证(Qwen2.5-7B 和 OLMoE-1B-7B 正确运行)。
  • 不会引入数值变化或性能影响。

影响范围有限但至关重要:

  • 仅影响 AMD ROCm 平台上的 JIT 内核编译,特别是 gfx1151(RDNA3.5)等消费者 RDNA 设备。
  • 同时修复的 PR #31137 启用了 sgl-kernel 的 gfx1151 构建,本 PR 使得 JIT 路径可以编译,从而模型可以实际提供服务。
  • 对 CUDA 平台无影响。
  • 这是 sglang 支持消费者 RDNA GPU(#30599)这一更大能力的一部分。

关联 Issue

#30599 [Feature][AMD] Officially support consumer Radeon RDNA3/RDNA4 (gfx1100/gfx1201) — tracking + enablement plan

完整报告

参与讨论