适用于 AMD 的 Windows CUDA
摘要
此工具提供可复现的 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 将:
- 检测 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 -> validated-reference
当前 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 的组件 | 结果 |
|---|---|
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 编译器
CUDA-oxide 是由 NVIDIA 开发的实验性 Rust 转 CUDA 编译器,支持使用地道的 Rust 编写安全的 GPU 核函数,可直接编译为 PTX,无需借助领域特定语言或外部绑定。
AMD的Lemonade SDK为本地AI添加了NVIDIA CUDA支持
AMD的Lemonade SDK在10.7版本中为本地AI添加了NVIDIA CUDA支持,使得在竞争对手的GPU上也能获得相同的本地AI服务器体验。该版本还引入了lemonade bench,用于跨后端的LLM基准测试,并提供了更广泛的Vulkan支持。
AMD Strix Halo RDMA 集群搭建指南
一份使用自定义 Docker/Podman 工具箱,借助 ROCm/RCCL RDMA 支持,将两个 AMD Strix Halo 节点集群化,以在 256GB 统一内存上通过张量并行启用 vLLM 的搭建指南。
AMD 用户:您试过 llama.cpp 的 AMD-Ecosystem 分支吗?最高 2 倍提示处理速度
本文讨论了 llama.cpp 的一个 AMD 特定分支,该分支显著提升了 AMD 用户的提示处理速度,使用 ROCm/Hip 时,在密集模型上性能最高提升 2 倍,尽管在其他指标上有些权衡。
GLM 和我创建了一个针对 AMD GFX906(Mi50、Mi60、Radeon VII、GCN HIP)优化的 llama.cpp 分支 - 机器学习、大语言模型和 AI
已创建一个 llama.cpp 的分支,并针对 AMD GFX906 GPU 进行了优化,提升了 Mi50、Mi60、Radeon VII 和 GCN HIP 上的性能,适用于机器学习和大语言模型应用。