在非NVIDIA显卡上免费运行CUDA应用:ZLUDA完整配置指南
【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA
你手头有一张非NVIDIA显卡(比如AMD或Intel),但想运行的程序却只认CUDA,官方驱动又给不了你这份支持。ZLUDA 就是为这个痛点准备的:它是一个 CUDA 的"平替"驱动层,让你无需修改代码,就能在非NVIDIA GPU 上以接近原生的性能运行现成的 CUDA 应用,而且完全免费。
ZLUDA 是什么、能做什么
简单说,ZLUDA 会伪装成nvcuda.dll(Windows)或libcuda.so(Linux)出现在你的程序面前。你的 CUDA 应用以为自己在和 NVIDIA 驱动打交道,实际算力却落在了非NVIDIA GPU 上。它还顺带把 cuBLAS、cuDNN、cuFFT 这些性能库都做了对应实现。
不过要先认清硬件支持现状,避免装完发现不兼容(详见 docs/src/faq.md):
- AMD GPU:目前的主力,支持 Radeon RX 5000 系列及更新的产品(桌面核显均可)。更老的 Polaris、Vega 和服务器级 GPU 不在支持范围
- Intel GPU:早期版本曾支持,当前版本暂不支持,团队专注 AMD 后端
- NVIDIA GPU:基本不会支持——有N卡的人本来就能直接用真CUDA
- macOS:基本不会支持
所以本文的配置流程以Windows + AMD GPU为主线,Linux 用户我在后文给出对等命令。
环境要求:动手前确认这三件事
- 一张 RX 5000 系列或更新的 AMD GPU,并装好最新的 AMD 显卡驱动(Adrenalin Edition)
- Windows 系统(Linux 也可行,步骤见后文)
- 一套 HIP SDK——这是 ZLUDA 真正干活的后端,下一步单独讲怎么选
⚠️ 注意:ZLUDA 处于快速开发期,官方自己承认"大概率还不能运行你手头那个应用",但鼓励你尝试并反馈结果。把它当成"能跑最好,跑不了也算帮我测试了"的心态。
HIP SDK 怎么选:先给结论,再看两条路线
推荐结论:如果你的目标是跑机器学习框架(PyTorch、TensorFlow),直接选 Nightly 构建版;如果只是普通 CUDA 程序、更在意稳定,选官方安装版。
| 对比项 | 官方 HIP SDK | Nightly 构建版 |
|---|---|---|
| 安装方式 | 图形化安装器,自动 | 手动解压 + 配环境变量 |
| 稳定性 | AMD 官方支持,稳定 | 每日构建,无稳定性保证 |
| 代码新旧 | 较旧 | 较新 |
| 机器学习支持 | ❌ PyTorch/TensorFlow 跑不了 | ✅ 可支持 |
两条路线的安装步骤:
官方版:访问 AMD HIP SDK for Windows 下载页,下载与你系统匹配的最新版本,跑安装程序一路下一步即可。
Nightly 版(稍繁琐,但多数场景需要它):
- 确定你的 GPU 架构号。文件名里要带
gfx<GPUARCH>,不确定自己的架构号就先去 TechPowerUp 的 GPU 数据库查对应显卡的 Shader ISA(例如 Radeon RX 9070 是 1201);也可以先随便下载一个压缩包,解压后运行里面的hipInfo.exe,它显示的 gcnArchName 就是你要的架构号 - 从 ROCm SDK nightly tarballs 页面下载较新的
therock-dist-windows-gfx<GPUARCH>...tar.gz文件 - 用 7-Zip 之类的工具解压到你选定的目录。注意可能要解两次:先解
.tar.gz,再解里面的.tar - 把环境变量
HIP_PATH指向解压后的目录。两个校验点:该目录下必须有bin子目录,且bin里要有rocblas.dll等一堆.dll文件
完整说明可参考 docs/src/hip_sdk.md。
获取 ZLUDA:优先下载预编译版
ZLUDA 迭代很快,官方推荐直接拿最新的预发布(pre-release)版本,等某次构建被标记为 stable 后也可以从 Releases 页下载。只有在你需要跟源码开发时,才走编译路线:
git clone --recursive https://gitcode.com/GitHub_Trending/zl/ZLUDA进入目录后,先装好依赖(Git、CMake、Python 3、较新版本的 Rust 编译器、C++ 编译器;Linux 额外需要 ROCm HIP,推荐装 Ninja),然后执行(这步比较耗时):
cargo xtask --release编译产物在target\release(Linux 为target/release)。构建细节见 docs/src/building.md。
启动你的第一个 CUDA 应用
装好 HIP SDK 和 ZLUDA 后,Windows 下最推荐的方式是用启动器把目标程序包起来跑:
<ZLUDA目录>\zluda.exe -- <你的应用> <应用参数>这是让 ZLUDA 在程序加载 CUDA 之前先接管。另一种方式是"就地替换":把 ZLUDA 目录里的全部文件(含nvcuda.dll)拷到应用加载 CUDA 的路径下,通常就是.exe所在的目录。两种方式各取所需,前一种干净不污染原目录。
Linux 下对等做法是:
LD_LIBRARY_PATH="<ZLUDA目录>:$LD_LIBRARY_PATH" <你的应用> <应用参数>其中<ZLUDA目录>指 ZLUDA 自带的libcuda.so所在目录(预编译包是zluda,源码构建是target/release)。也可以用LD_AUDIT指向zluda_ld的替代方案,见 docs/src/quick_start.md。
验证安装:一条命令体检所有性能库
这一步值得做,因为它能一次确认驱动层和 cuBLAS/cuDNN/cuFFT 等性能库是否全部就位。ZLUDA 自带一个小测试程序cuda_check.exe:
zluda.exe -- cuda_check.exe全部正常的输出长这样:
nvcuda : OK (C:\hip_sdk\bin\amdhip64_7.dll) nvml : OK cufft11 : OK cudnn9 : OK (C:\hip_sdk\bin\MIOpen.dll) cudnn8 : OK (C:\hip_sdk\bin\MIOpen.dll) cublaslt13: OK (C:\hip_sdk\bin\libhipblaslt.dll) cusparse12: OK cufft12 : OK cublas13 : OK (C:\hip_sdk\bin\rocblas.dll) cublaslt12: OK (C:\hip_sdk\bin\libhipblaslt.dll) cublas12 : OK (C:\hip_sdk\bin\rocblas.dll) cusparse11: OK括号里是 ZLUDA 实际对应的底层 HIP 库路径。有 OK 就说明该层已通;某一行报错或整行缺失,就回到上一节检查HIP_PATH和 HIP SDK 解压是否完整。
常见坑与排查
cuda_check 显示 OK 但路径没被使用?括号里的路径只表示"ZLUDA 能加载哪个库",不保证一定用它。如果你的应用在加载 ZLUDA 之前已经从别的路径加载了同名库,ZLUDA 会沿用已加载的那个。
测试程序偶尔挂住不退?已知问题,是 MIOpen 内部的一个 bug 导致cuda_check.exe有时挂起不关闭,强退即可,不影响正式使用。
cudnn8/cudnn9 加载失败?如果你用的是官方 HIP SDK,这是预期现象——官方 SDK 不带 MIOpen,换 Nightly 版即可。
应用报错了找不到原因?用 ZLUDA 的调用追踪来定位。Windows 下加一个参数:
zluda.exe --zluda-trace -- <你的应用> <应用参数>它会记录应用每一次 CUDA 调用的参数和返回码,日志目录在%TEMP%\zluda。排查文档还讲了怎么读日志、怎么看 PTX 编译错误(module_NNNN_NN.log),见 docs/src/troubleshooting.md。
大应用首次启动很慢?GPU 代码首次运行要现场编译。可以提前用预编译工具把整包代码扫一遍、编译进缓存:
zluda_precompile.exe <目录或文件路径>它会把机器所有线程拉满来编译,通常比留给应用自己做更快,详见 docs/src/precompiling.md。
两个典型场景:本地大模型与 32 位物理引擎游戏
llama.cpp(本地大模型):用 CUDA 86 架构并强制启用 cuBLAS 编译,即可接近原生速度:
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="86" -DGGML_CUDA_FORCE_CUBLAS=true多架构编译没问题,只要其中包含 80、86 或 89 之一;但关闭 cuBLAS 会掉性能。Windows 上记得先装好 HIP SDK 才有 rocBLAS 可用,详见 docs/src/llama_cpp.md。
Steam 上的 32 位 PhysX 游戏:ZLUDA 提供针对 PhysX 的 32 位 CUDA 实现。在游戏的 Steam 属性 → 启动选项里填入:
"<ZLUDA路径>\32\zluda.exe" -- %command%也有直接命令行调用32\zluda.exe的替代方式,以及一个不推荐的"系统级安装"兜底方案。已验证可玩的游戏包括 Mirror's Edge、Alice: Madness Returns、Mafia II (Classic),多数游戏应该能跑。已知问题:PhysX 重新初始化可能失败,游戏内改动物理设置可能崩溃或卡死,细节见 docs/src/physx32.md。
游戏跑不起来时,同样可以加--zluda-trace收一份追踪日志,在 Steam 启动选项里对应的写法如下:
下一步建议
- 先跑
cuda_check.exe把基础层验通,再碰真实应用——报错时能少猜一半 - 应用不工作时,第一时间开
--zluda-trace收日志,别干看错误弹窗 - 关注项目动态:PyTorch 支持是当前最高优先级(官方预期 2025 年第四季度出初步支持),TensorFlow 紧随其后;项目每季度会在官方博客发进展报告
- 完整文档目录在 docs/,从 quick_start 开始按图索骥即可
【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考