没有N卡,CUDA程序照样跑:ZLUDA在AMD显卡上的上手指南
【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA
假设手里有一个 CUDA 程序——比如用 cuBLAS 编译的大模型推理工具 llama.cpp——而机器上只有 AMD 显卡。ZLUDA 就是一个 CUDA 平替层:它让未经修改的 CUDA 应用直接跑在非 NVIDIA 显卡上,不少程序还能保持接近原生的性能。
它能做什么
一句话定位:它不是新的图形驱动,也不是新的编程框架,而是顶替 CUDA 驱动入口的“影子驱动”。当前的覆盖范围大致是:
- 硬件:AMD Radeon RX 5000 系列及更新的显卡(独显和核显均可),老架构和 Intel GPU 暂不支持
- 系统:Windows 与 Linux
- 场景:llama.cpp 这类本地大模型推理、科学计算等标准 CUDA 程序
- 游戏里的 32 位 PhysX 物理引擎
- NVIDIA 显卡和 macOS 明确不在支持列表里
它为什么行
先明白背景:CUDA 程序编译后,GPU 部分通常会生成 PTX 中间代码(一种类似虚拟汇编的通用指令集),最终由 NVIDIA 驱动编译执行。ZLUDA 做的链路是这样的:
应用调用 CUDA API → ZLUDA 的库文件接管调用 ↓ 内核代码(PTX) → ZLUDA 自带编译器 → AMD 显卡可执行的代码 ↓ AMD 显卡原生执行它随包提供了一整套与 CUDA API 对得上的库文件,包括 cuBLAS、cuDNN、cuFFT 等数学库的替身,底层的矩阵运算映射到 AMD 的 HIP SDK 组件(rocBLAS、MIOpen 等)上。应用拿到接口时,感知不到任何区别。
边界也说清楚:它不模拟 NVIDIA 硬件的物理特性,不支持 OptiX 硬件光线追踪,也不会让系统层面“认为”这是一块 N 卡——它只是接管了 CUDA 的调用入口。
从零开始
项目迭代很快,官方建议直接下载最新的发布包,而不是用旧版。核心就三步:
- 装好 AMD 显卡驱动(Adrenalin Edition),Windows 用户再装 HIP SDK,Linux 用户装 ROCm 里的 HIP 组件。
- 用启动器方式运行程序:
zluda.exe -- 你的程序.exe 参数 # WindowsLD_LIBRARY_PATH="<ZLUDA目录>:$LD_LIBRARY_PATH" ./你的程序 # Linux- 验证环境。ZLUDA 自带一个小工具 cuda_check,会测试所有数学库的加载情况,每行输出 OK 就说明对应库没问题:
zluda.exe -- cuda_check.exe几个不同环境下的常见配置项:
- Windows 不想用启动器时,可以把 ZLUDA 目录里的全部文件(含 nvcuda.dll)复制到程序所在目录,让应用直接加载
- Linux 还有
LD_AUDIT指向zluda_ld的替代加载方式,适合部分特殊场景 - 32 位游戏使用 zluda32 版本,官方文档的 physx32 一节有说明
- 源码编译需要 Rust、CMake、Python 3,克隆 仓库 后执行
cargo xtask,细节见 源码构建文档
确认它跑起来 + 让它更快
先做自检:
- 运行 cuda_check,逐行确认输出为 OK;括号里的路径指向 HIP SDK 的库文件,路径不对多半是 SDK 版本问题
- 挑一个小的 CUDA 示例程序完整跑一遍,核对结果正确
- 想跑 PyTorch / TensorFlow 的话,确认装的是 nightly 版 HIP SDK,官方 SDK 不带机器学习支持
- 升级 ZLUDA 版本后重新跑一遍 cuda_check
💡 再给两条优化建议:
- 大型程序首次启动时内核要现编译,启动偏慢。可以用
zluda_precompile <程序路径>提前把 GPU 代码编译进缓存,下次直接起飞 - 编译 llama.cpp 时按官方建议指定 CUDA 架构 86 并开启 cuBLAS,官方文档称此时可达原生速度
卡住了看这里
程序起不来、报缺库→ 先核对 AMD 驱动与 HIP SDK 版本(HIP SDK 安装文档区分了官方版和 nightly 版的能力差异),再跑 cuda_check 看具体哪个库没通过。
应用崩溃或结果不对→ 用跟踪模式重新运行(Windows 下加--zluda-trace参数),zluda_trace 会记录每次 CUDA 调用的参数和返回值,顺着 ZLUDA_LOG_DIR 目录下的日志定位是哪一步走的岔路,方法见 日志排查文档。
首次运行特别慢→ 通常是编译缓存为空,属于正常现象,跑一次zluda_precompile或把程序完整跑完一遍即可,见 预编译文档。
实际效果可以看这张图:在 Steam 的启动选项里填入 zluda32 启动器,游戏即可通过 ZLUDA CUDA 兼容层运行:
资源入口:
- 快速上手:docs/src/quick_start.md
- 常见问题:docs/src/faq.md
- 核心实现源码:zluda/src/、PTX 编译器 compiler/
- 项目 README 里有 Discord 社区入口,问题反馈响应较快
ZLUDA 适合手里有现成 CUDA 程序、手上却是 AMD 显卡的人,从科研计算到本地大模型推理都能尝试。下载一个最新发布包,跑通第一条 cuda_check,剩下的交给时间。
【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考