Hacker News 中文摘要

RSS订阅

Windows 下 AMD 显卡支持 CUDA -- CUDA for AMD on Windows

一个可在 Windows 上通过 ZLUDA + ROCm/HIP 让超微半导体(AMD) GPU 运行 CUDA 目标应用的可复现堆栈已上传。该方案围绕 ZLUDA + 超微半导体 HIP/ROCm 构建,面向 CUDA 计算应用包括 CUDA 版 LibTorch 负载。当前验证硬件仅超微半导体(AMD)镭龙 RX 9060 XT(Radeon RX 9060 XT)(gfx1200)。今日验证无私有 DLL 的公开上游路径:ZLUDA v6-preview.69、超微半导体 HIP SDK 6.4、LibTorch 2.3.0 + cu118 与镭龙 RX 9060 XT / gfx1200,nvcuda、cuBLAS、cuBLASLt、cuSPARSE 和 cuFFT 通过 cuda_check,真实 2,216,347 参数 PPO 网络完成推理,一次干净验证迭代完成 65,536 步。

正文

CUDA on AMD Windows 项目预览

CUDA for AMD on Windows

可用的可复现软件栈已上传。通过 ZLUDA + ROCm/HIP,在 AMD GPU 上运行面向 CUDA 的 Windows 应用程序。这是一个围绕 ZLUDA + AMD HIP/ROCm 构建的可复现 Windows CUDA 兼容方案,面向使用 CUDA 的计算应用,包括启用 CUDA 的 LibTorch 工作负载。

重要提示:目前唯一验证过的硬件是 AMD Radeon RX 9060 XT(gfx1200)。其他 AMD GPU 只是候选,不保证可用。如果你测试了别的显卡,无论成功失败,请提交 GPU 兼容性报告。

今日验证

纯上游公开路径已测试,未使用任何私有/恢复的 DLL: - 官方 ZLUDA 发布的 ZLUDA v6-preview.69 - AMD HIP SDK 6.4 - LibTorch 2.3.0 + cu118 - RX 9060 XT / gfx1200 - nvcuda、cuBLAS、cuBLASLt、cuSPARSE 和 cuFFT 均通过 cuda_check - 一个真实的 2,216,347 参数 PPO 网络完成了前向/推理,PPO 学习和优化器在 CUDA 设备上工作 - 使用本仓库运行时完成了一次干净的 65,536 步验证迭代

该集成测试使用了最初推动本项目的同一 CUDA 版 LibTorch 训练负载。详见 docs/VALIDATION.md。这并不意味着所有 CUDA 程序或 AI 模型都能跑,CUDA API/库覆盖取决于具体负载。

工作原理

面向 CUDA 的 Windows 应用 | ZLUDA | cuBLAS / cuSPARSE / cuFFT 兼容层 | rocBLAS / hipBLASLt / rocSPARSE / HIP | AMD GPU

安装

  1. 安装 AMD 前置条件 安装最新的 AMD GPU 驱动和包含 HIP 库的 AMD HIP SDK for Windows。验证参考使用 HIP SDK 6.4,更新版本可能可用,但在有人报告前视为未验证。AMD Windows HIP SDK 指南:https://rocm.docs.amd.com/projects/install-on-windows/en/docs-6.4.2/index.html

  2. 克隆并运行安装器 git clone https://github.com/Speedstu/CUDA-for-AMD-Windows.git cd CUDA-for-AMD-Windows powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1

install.ps1 会: - 检测 AMD GPU 和原生 gfxXXXX 目标 - 验证 AMD 驱动/HIP SDK 及所需数学库 - 下载固定的官方 ZLUDA Windows 构建 - 下载 LibTorch 2.3.0+cu118(约 2.66 GB) - 校验下载的 SHA-256 哈希 - 生成 .runtime\runtime-config.json 和 .runtime\gpu-report.json - 对安装的 AMD 栈运行 ZLUDA 的 cuda_check.exe

如果不需要 LibTorch: .\scripts\install.ps1 -SkipLibTorch

运行面向 CUDA 的应用

.\scripts\run-zluda.ps1 -Program C:\path\to\app.exe 启动器会将所需的 ZLUDA 兼容 DLL 布置到目标应用旁,并为本次运行设置 HIP/ROCm 运行时路径。

也可只布置不启动: .\scripts\stage-runtime.ps1 -TargetDir C:\path\to\your-app

诊断机器

.\scripts\doctor.ps1 .\scripts\gpu-scan.ps1 .\scripts\test-runtime.ps1 GPU 扫描器记录型号、gfx 架构、驱动和 HIP 信息,不会有意收集用户名、令牌或用户文件。

验证机器上的例子: AMD Radeon RX 9060 XT -> gfx1200 -> RDNA4 -> 验证参考

当前 GPU 状态

GPU 目标 | 项目状态 Radeon RX 9060 XT | gfx1200 | ✅ 验证参考

扫描器能识别其他 Windows HIP 架构系列,标记为未验证候选而非声称支持。检测到不代表负载能运行。AMD 当前 Windows 硬件表:https://rocm.docs.amd.com/projects/install-on-windows/en/latest/reference/system-requirements.html

验证环境上的运行时覆盖

当前上游运行时检查: - CUDA 驱动 / nvcuda ✅ - cuBLAS ✅ 经由 rocBLAS - cuBLASLt ✅ 经由 hipBLASLt - cuSPARSE ✅ 经由 rocSPARSE - cuFFT ✅ - cuDNN ⚠️ 验证过的稳定 Windows HIP SDK 中不可用

稳定的 Windows HIP SDK 不提供完整 ROCm AI 库栈(如 MIOpen),因此需要 cuDNN 的卷积密集型软件可能需要更新或夜间版 HIP 栈或额外工作。密集/GEMM 密集型 LibTorch 训练不一定需要 cuDNN,验证的 PPO 负载在无 cuDNN 下完成。

性能

2026-09-13 的一次受控 A/B 测试在相同 RX 9060 XT PPO 负载上每运行时跑 10 次迭代。丢弃每次试验首次迭代预热后,公开上游路径中位整体 SPS 达 13,278,恢复自定义覆盖层为 12,876。此负载下自定义覆盖层慢约 3.03%,故上游仍是默认。

历史上的调优运行使用不同训练配置,达到约 70k–109k 整体步/秒。详见 docs/BENCHMARKS.md。

可选的历史自定义覆盖层

原开发环境还试验过自定义 cuBLAS/cuBLASLt/HIP 覆盖层。验证公开路径不需要它,且根据上述受控 A/B,它对参考 PPO 负载目前非性能赢家。

恢复的 DLL 仍在 manifests/recovered-artifacts.sha256 中留指纹。它们不作为二进制发布,因为原自定义包装源码/出处不完整,且恢复的 HIP 运行时含第三方 AMD 二进制。详见 docs/CUSTOM_OVERLAY.md。

发现 bug 或测了别的 GPU?

请提 issue,失败测试也有用。 .\scripts\gpu-scan.ps1 -OutputPath .\gpu-report.json .\scripts\test-runtime.ps1 然后开 GPU 兼容性报告,附上应用、结果和首个有用错误/输出。

仓库布局

  • scripts/ 安装、诊断、扫描、布置和启动
  • manifests/ 固定版本、哈希和 GPU 架构元数据
  • docs/ 验证、架构、基准和排障
  • examples/ 集成/参考片段
  • .runtime/ 生成的依赖和报告;Git 忽略
  • local-artifacts/ 本地归档;Git 忽略

限制

  • 目前本项目只验证 RX 9060 XT / gfx1200。
  • ZLUDA 不是完整的 CUDA 实现。
  • Windows 只暴露完整 ROCm 生态的子集。
  • 验证的稳定 HIP SDK 路径无 cuDNN/MIOpen。
  • NCCL、TensorRT、不支持的 PTX 行为和某些自定义 CUDA 扩展可能失败。
  • ZLUDA_CC=8.6 是面向 CUDA 的兼容值,非 AMD GPU 架构。

许可和第三方软件

评论

这个帖子由一个把 CUDA 应用搬到 Windows 上 AMD 显卡的个人项目引出,气氛是技术互助加对封闭生态的长期抱怨;分歧主轴在于「靠翻译层一点点蚕食 CUDA 霸权」还是「干脆全行业转投 HIP、SYCL、OpenCL」,而更现实的一层是大量 AMD 用户觉得自己这代卡已经被落下。

认为翻译层一旦成熟,CUDA 就不再是护城河,而会退化成中间表示

  • 当把 CUDA/PTX 翻译到 HIP、SYCL 或 Metal 变得轻而易举,锁定效应就消失了,CUDA 的地位会从「壁垒」变成「通用中间层」。(少数人) > 真正的护城河是别人换不掉的生态,一旦翻译变便宜,CUDA 就成了大家都经过的那条 IR。(@swerner)

更希望全行业直接押注 HIP、SYCL、OpenCL 这类开放标准

  • 抱怨当下大多数 LLM 推理跑在封闭硬件、封闭驱动和封闭 SDK 上,这种局面让人难以忍受,方向应该是开放标准而不是再造一个兼容层。(少数人) > 与其继续修补某个厂商的私有栈,不如把力气花在开放标准上。(@linuxhansl)

认为 AMD 用户的真实处境是没得选,老卡尤其被抛弃

  • 有人手里的 5700XT 只能躺在抽屉里,因为 RDNA1 根本进不了这条路线;RDNA2 用户也形容在 AMD 上跑机器学习是一场苦战,并怀念当年在 N 卡上随手就能玩 ML 的日子。(较多人) > 在 AMD 上搞这些像打仗,尤其是我手上这代 RDNA2,真希望有一天 CUDA 能被正确翻译过来。(@Nurysso)

作者展示的是一条 Windows 上可落地的 ZLUDA + ROCm/HIP 组合,并公开征集兼容性反馈

  • 目前只在 RX 9060 XT(gfx1200)上验证过,配套了自动扫描系统,能识别显卡型号、gfx 架构、ROCm/HIP 安装情况、驱动信息以及该卡是否已被项目验证,现在最缺的是 RX 6000/7000/9000 的实测报告。(少数人) > 现在只在 RX 9060 XT 上跑通过,包括长时间的 AI 训练,希望更多 AMD 显卡用户来提交可用或不可用的兼容性报告。(@chiassedu80)

认为同类尝试已经不止一个,兼容层正在变成小生态

  • 有人做了面向 Mac 的 cuda-metal,评论里还点出 Booth 和 scale-lang 等值得关注的路线。(少数人) > 顺手说一句,我自己做了个把 CUDA 带到 Mac 上的 cuda-metal。(@lulzx)

有价值的补充

  • 作者给出的验证链路是「显卡型号 → gfx 架构 → RDNA 代际 → 检测到 HIP → 是否已被项目验证」,这种自动探测很关键,因为不同 RDNA 代际的支持状态差别极大,靠用户手动填配置基本没法收集样本。
  • 反馈入口是仓库里专门的 GPU 兼容性 issue 模板,说明当前成功与失败的样本都极少,单卡跑通不能当成通用可用。
  • 评论点出的几条路线目标并不相同:cuda-metal 面向 Apple Metal,Booth 与 scale-lang 属于另外的探索方向,可以理解为「CUDA 兼容层」已经成为一个分散的小生态,而不是孤例。