没有 N 卡也能跑 CUDA:ZLUDA 在 Intel / AMD 显卡上运行的完整指南
【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA
ZLUDA 是一个 CUDA 兼容层,能让未经修改的 CUDA 应用程序直接在 Intel 或 AMD 显卡上运行,无需重新编译,也不需要 N 卡。它当前覆盖 CUDA 8.8 的计算能力,支持 Windows 和 Linux 两个平台,适合手头只有 A 卡或 Intel Arc 显卡、但仍想运行 PyTorch、TensorFlow 等 CUDA 程序的人。
先确认你的显卡能不能用
动手安装之前,先查一下自己的显卡架构。ZLUDA 支持的范围如下:
| 显卡 | 架构 | 支持情况 |
|---|---|---|
| AMD RX 5000 系列 | RDNA | 支持(桌面与核显) |
| AMD RX 6000 系列 | RDNA2 | 支持(桌面与笔记本) |
| AMD RX 7000 系列 | RDNA3 | 支持 |
| Intel Arc A380 / A750 / A770 等 | Intel Arc | 支持(详见下文说明) |
| AMD RX 400 / RX 500 系列 | Polaris | 不支持 |
| AMD Vega 系列 | Vega | 不支持 |
| 服务器级专业计算卡 | — | 不支持 |
Polaris、Vega 这类老架构与近年的桌面显卡差距较大,短期内不在支持计划内。Intel 显卡此前有可用后端,官方文档目前的状态是"暂不维护、可能恢复",如果你用的是 Intel Arc,建议先翻一遍 docs/ 里的 FAQ 再决定。
系统与驱动版本的最低要求可以参考这张表:
| 平台 | 最低驱动/运行时 | 推荐版本 | 覆盖范围 |
|---|---|---|---|
| Windows 10 / 11 | Adrenalin Edition 23.10.1(另需 HIP SDK) | Adrenalin 24.3.1 | CUDA 8.8 基础功能 |
| Ubuntu 22.04 | ROCm 5.4.3 | ROCm 6.0.0 | CUDA 8.8 完整计算能力 |
| CentOS 8 | ROCm 5.6.0 | ROCm 5.7.1 | 同左 |
Windows 上把文件放对位置
整个过程分三步:装驱动和 HIP SDK、摆放 ZLUDA 文件、选择启动方式。
第 1 步:准备驱动。AMD 显卡安装 Adrenalin Edition 23.10.1 或更新版本,Intel Arc 使用 Intel 官方最新驱动。此外无论哪家显卡,Windows 上还需要 HIP SDK,官方版本装起来简单但代码较旧,需要 ML 功能(PyTorch、TensorFlow)时建议装带 ML 支持的版本,具体取舍见 hip_sdk.md。
第 2 步:放置文件。把 ZLUDA 的nvcuda.dll和zluda_ld.dll复制到你的应用程序能加载 CUDA 库的路径下,通常就是.exe所在的目录。如果用的是zluda_with.exe之类的启动器,也可以把它们放在 ZLUDA 目录里统一管理。
第 3 步:启动应用。推荐方式是用 ZLUDA 自带的启动器包一层:
zluda.exe -- 你的程序.exe 程序参数如果你的程序来自 Steam,可以在游戏属性的"启动选项"里填同样的内容,让每次启动都走 ZLUDA:
Linux 下配置 ROCm 和库路径
Linux 侧的依赖是 ROCm 而非 HIP SDK,步骤同样不多:
第 1 步:装 ROCm 运行时。以 Ubuntu 为例,一条命令安装开发库与运行时:
sudo apt install rocm-dev rocm-libs hip-runtime-amd第 2 步:设置库路径。把 ZLUDA 所在目录(内含它提供的libcuda.so)加进LD_LIBRARY_PATH,让动态链接器优先找到 ZLUDA 的库:
export LD_LIBRARY_PATH="/path/to/zluda:$LD_LIBRARY_PATH"也可以改用LD_AUDIT指向 ZLUDA 目录下的zluda_ld,效果类似,官方文档两种都给了说明。
第 3 步:直接运行。路径配置好之后,用平时的方式启动你的 CUDA 程序即可,不需要额外参数。
跑通之后怎么确认装好了
最直接的验证方式是用 ZLUDA 自带的cuda_check小工具,它会依次加载并初始化各性能库,输出逐行的 OK 状态:
zluda.exe -- cuda_check.exe看到 cuBLAS、cuDNN、cuFFT 等条目全部显示 OK,就说明兼容层工作正常。平时运行程序时,日志里出现带[ZLUDA]标识的行,也说明应用确实走到了 ZLUDA。
遇到问题时,先对照下面这张表自查:
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 提示驱动版本不足(driver version is insufficient) | GPU 驱动或 HIP SDK 版本过低 | 升级到推荐版本后重启系统 |
| 提示 libcuda.so not found | ZLUDA 目录不在库搜索路径里 | 重新配置LD_LIBRARY_PATH,确认 ZLUDA 目录名无误 |
| 程序找不到 GPU 或设备识别异常 | 显卡架构不在支持列表内 | 用lspci | grep VGA确认显卡型号,对照上文支持列表 |
| 首次启动明显变慢 | PTX 内核在首次运行时实时编译 | 参见 precompiling.md 做预编译 |
| 应用中途失败、不知卡在哪一步 | 兼容层某次调用未覆盖 | 按 troubleshooting.md 开启 zluda_trace 抓日志定位 |
原理一句话版
ZLUDA 的工作方式是"顶替":应用照常加载libcuda.so/nvcuda.dll,但拿到的是 ZLUDA 提供的同名库,所有 CUDA 调用都在这一层被拦截;程序里的 PTX 内核代码由 ZLUDA 自己的编译器转译成目标 GPU 可执行的指令,cuBLAS、cuDNN 这类性能库则被映射到 HIP/ROCm 的对应实现上。对应用来说,这一切是透明的,所以程序本身一行都不用改。
相关资源
- 官方文档:docs/(快速上手、HIP SDK 安装、FAQ 都在里面)
- 核心实现源码:zluda/src/
- PTX 翻译层的测试用例:ptx/test/
- 兼容层入口与驱动模拟实现:zluda/src/impl/
代码与文档迭代很快,建议关注仓库的最新版本而不是某个固定 tag。跑通cuda_check并确认全部 OK 之后,再把你实际要用的程序跑一遍,重点观察日志里是否有[ZLUDA]错误条目——这一步能尽早暴露兼容性问题。
【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考