适用于 AMD 的 Windows CUDA

Hacker News Top 工具

摘要

此工具提供可复现的 Windows 环境,用于在 AMD GPU 上运行针对 CUDA 的应用程序,使用 ZLUDA 和 AMD HIP/ROCm,并通过 RX 9060 XT 和 LibTorch 工作负载进行了验证。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/09/13 17:39

Speedstu/CUDA-for-AMD-Windows

来源:https://github.com/Speedstu/CUDA-for-AMD-Windows

适用于AMD GPU的Windows版CUDA

可复现的完整技术栈现已上传。

通过 ZLUDA + ROCm/HIP 在 AMD GPU 上运行面向 CUDA 的 Windows 应用程序。

Windows (https://github.com/Speedstu/CUDA-for-AMD-Windows) AMD (https://github.com/Speedstu/CUDA-for-AMD-Windows) 验证 (https://github.com/Speedstu/CUDA-for-AMD-Windows/actions/workflows/verify.yml)

基于 ZLUDA + AMD HIP/ROCm 构建的可复现 Windows CUDA 兼容环境。适用于面向 CUDA 的计算应用,包括使用启用 CUDA 的 LibTorch 的工作负载。

目前仅验证了 AMD Radeon RX 9060 XT (gfx1200) 硬件。 其他 AMD GPU 为候选设备,不保证可用。如测试其他显卡,请提交 GPU 兼容性报告 (https://github.com/Speedstu/CUDA-for-AMD-Windows/issues/new?template=gpu-compatibility.yml),无论成功与否。

当前验证结果

公开的上游路径已测试通过,未使用任何私有/恢复的 DLL:

  • ZLUDA v6-preview.69(来自官方 ZLUDA 发布版)
  • 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 网络在面向 CUDA 的设备上完成了前向/推理、PPO 学习及优化器工作
  • 一次完整的验证迭代使用本仓库生成的运行时完成 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 库的 Windows 版 AMD HIP SDK。

验证参考使用的是 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 将:

  1. 检测 AMD GPU 和原生 gfxXXXX 目标架构;
  2. 验证 AMD 驱动程序/HIP SDK 及所需的数学库;
  3. 下载固定版本的官方 ZLUDA Windows 构建;
  4. 下载 LibTorch 2.3.0+cu118(约 2.66 GB);
  5. 验证下载文件的 SHA-256 哈希值;
  6. 生成 .runtime\runtime-config.json 和 .runtime\gpu-report.json;
  7. 对安装的 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 -> validated-reference

当前 GPU 状态

GPU目标架构项目状态
Radeon RX 9060 XTgfx1200✅ 已验证参考

扫描器会识别其他 Windows HIP 架构系列,并将其标记为未验证候选,而非声称支持。检测到硬件并不意味着工作负载可运行。

AMD 当前的 Windows 硬件表: https://rocm.docs.amd.com/projects/install-on-windows/en/latest/reference/system-requirements.html

验证设置上的运行时覆盖

当前上游运行时检查结果:

面向 CUDA 的组件结果
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 工作负载在没有它的情况下完成。

性能

2026-09-13 的一次受控 A/B 测试在相同的 RX 9060 XT PPO 工作负载上对每个运行时运行了 10 次迭代。在丢弃每次试验的第一次迭代作为预热后,公开上游路径达到了 13,278 中位数整体 SPS,而恢复的自定义覆盖层为 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?

请发布一个问题。失败的测试同样有用。

.\scripts\gpu-scan.ps1 -OutputPath .\gpu-report.json
.\scripts\test-runtime.ps1

然后打开一个 GPU 兼容性报告 (https://github.com/Speedstu/CUDA-for-AMD-Windows/issues/new?template=gpu-compatibility.yml) 并包含应用程序、结果和第一个有用的错误/输出。

仓库布局

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 架构。

许可证和第三方软件

项目拥有的脚本和文档采用 MIT 许可证。ZLUDA、AMD ROCm/HIP、NVIDIA CUDA 组件和 PyTorch/LibTorch 保留其各自的上游许可证。详见 THIRD_PARTY_NOTICES.md。

相似文章

CUDA-oxide:NVIDIA 官方 Rust 转 CUDA 编译器

Hacker News Top

CUDA-oxide 是由 NVIDIA 开发的实验性 Rust 转 CUDA 编译器,支持使用地道的 Rust 编写安全的 GPU 核函数,可直接编译为 PTX,无需借助领域特定语言或外部绑定。

AMD的Lemonade SDK为本地AI添加了NVIDIA CUDA支持

Reddit r/artificial

AMD的Lemonade SDK在10.7版本中为本地AI添加了NVIDIA CUDA支持,使得在竞争对手的GPU上也能获得相同的本地AI服务器体验。该版本还引入了lemonade bench,用于跨后端的LLM基准测试,并提供了更广泛的Vulkan支持。

AMD Strix Halo RDMA 集群搭建指南

Hacker News Top

一份使用自定义 Docker/Podman 工具箱,借助 ROCm/RCCL RDMA 支持,将两个 AMD Strix Halo 节点集群化,以在 256GB 统一内存上通过张量并行启用 vLLM 的搭建指南。