ZLUDA 使用指南让 AMD 显卡跑 CUDA 应用【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA在没有 NVIDIA 显卡的机器上绝大多数 CUDA 程序要么启动即报错要么装完 PyTorch 之后torch.cuda.is_available()直接返回 False。ZLUDA 干的事很具体把 CUDA 驱动和性能库顶在你的 AMD 显卡上让原本没改过一行的 CUDA 应用照常加载、照常编译、照常跑且不需要重写代码。它本质上是一套 CUDA 的替身——应用照旧调用libcudaZLUDA 在背后把这些调用翻译成 AMD 的 HIP 实现ROCm/HIP SDK 提供。先说明它现在的支持范围免得你白折腾。先确认你的显卡和系统是否在支持列表里ZLUDA 当前只认真正较新的 AMD 桌面和核显 GPU从 RX 5000 系列往上算再往前的 Polaris、Vega 这些老架构以及服务器卡都不支持这些架构差异太大官方明确不做。Intel 显卡早期有过后端但现在处于搁置状态团队精力集中在 AMD 上NVIDIA 显卡本身有原生 CUDA不在规划内macOS 也基本可以排除。另外它不基于 OpenCL 或 Vulkan 做通用回退——那样会丢一堆特性比如非规范化数模式、子组操作、内联汇编、指针强转等而且 cuBLAS/cuDNN 这类库也很难映射过去所以它的通用性依赖 AMD 的原生 HIP 后端。一句话自查Windows 或 Linux RX 5000 及更新的 AMD 卡才值得往下走。Windows 与 Linux 上如何启动一个 CUDA 应用装好驱动之后两个系统的启动方式都是把 ZLUDA 塞到应用加载 CUDA 的路径里。Windows先装 AMD 显卡驱动Adrenalin再装 HIP SDK。装完用 ZLUDA 自带的启动器去拉起你的程序即可ZLUDA目录\zluda.exe -- 你的程序 程序参数也可以把zluda目录下的nvcuda.dll等文件直接拷到应用读取 CUDA 的目录通常是 exe 旁边。这里有个容易踩的坑HIP SDK 的官方包不带 MIOpen所以 cudnn8/cudnn9 会加载失败PyTorch、TensorFlow 这类需要 MIOpen 的框架在 Windows 上要改用带 MIOpen 的 Nightly 构建therock-dist-windows-gfx架构号那个包解压后把HIP_PATH指过去。GPU 架构号不确定时可以先随便下个包跑一下里面的hipInfo.exe看gcnArchName。Linux不需要装 HIP SDK 到系统路径直接用环境变量把 ZLUDA 提供的libcuda.so插到动态链接器前面LD_LIBRARY_PATHZLUDA目录:$LD_LIBRARY_PATH ./你的程序 参数ZLUDA目录指你下载好的zluda包目录或是自己编译出的target/release。另一种等价写法是用LD_AUDIT指向zluda_ld效果一样二选一即可。两种平台共同点应用不用改改的是它加载哪个 CUDA。用 cuda_check 和 trace 确认它真的在工作跑起来不等于跑对了。ZLUDA 附带一个小程序专门用来验证驱动和各个性能库cuBLAS、cuDNN、cuFFT、cuSPARSE 等是不是都成功顶上了。在 Windows 上zluda.exe -- cuda_check.exe正常的话每一行都会打OK括号里是它实际顶替的 HIP SDK 库路径比如cublas12顶到了rocblas.dll、cudnn9顶到了MIOpen.dll。哪一行不是OK基本就能定位到缺哪个库。注意官方 HIP SDK 下 cudnn8/cudnn9 会失败这是预期内的另外cuda_check偶尔会因为 MIOpen 的 bug 卡住不退别当成 ZLUDA 挂了。确认在跑之后如果某个应用跑不起来下一步是抓 trace。zluda_trace是一个 CUDA API 的追踪垫片它把应用每一次 CUDA 调用、参数和返回码都记下来还会把涉及的 PTX 模块存成文件能直接看到应用到底用了哪些 PTX 指令、哪条没被支持。Windows 上给启动器加--zluda-trace就行Linux 上则把LD_LIBRARY_PATH指到zluda下的trace/子目录再设ZLUDA_LOG_DIR指定日志目录、ZLUDA_CUDA_LIB指定 ZLUDA 的libcuda.so然后照常跑程序。日志里每个运行会生成一个独立目录里面有log.txt、对应的.ptx/.elf以及编译失败时的module_NNNN_NN.log形如Unrecognized statement nanosleep.u32 ...这种就是应用用到了 ZLUDA 还没支持的 PTX。把这份日志整理出来是排查兼容性问题最快、也最能帮上忙的材料仓库里的 troubleshooting 文档 对日志字段都有说明。第一次启动很慢时用预编译绕开CUDA 应用首次启动时GPU 代码PTX要现场编译大应用这一步可能拖很久。ZLUDA 提供了一个预编译工具zluda_precompile指向你的程序目录它会扫出所有 GPU 代码、提前编译并写进缓存这样应用第一次启动时缓存里已经有东西了。Windows 上叫zluda_precompile.exe 路径Linux 上叫zluda_precompile 路径。它的取舍是会占满所有 CPU 线程比留给应用自己编快但也可能编一些你的应用其实用不到的代码所以不一定总是赢大应用建议试一下。哪些应用好跑、哪些还跑不了挑应用时可以参考仓库 docs 里已经验证过的几类llama.cpp按 CUDA 架构 86也接受 80/89编译、并强制走 cuBLAS 时能跑到接近原生的速度多架构编译只要包含 80/86/89 之一即可关掉 cuBLAS 则会明显掉速。PyTorch / TensorFlow是官方当前最优先的两个目标PyTorch 排在最前TensorFlow 紧随其后。目前还在推进中能跑的范围取决于你用的模型和算子覆盖度。32 位 PhysX老游戏物理引擎ZLUDA 有一版为 PhysX 定制的 32 位实现通过 Steam 启动项或命令行拉起游戏即可32目录里有专门的zluda.exe。已知限制PhysX 重新初始化可能失败游戏内改物理设置可能崩溃或卡住官方测试过的有 Mirrors Edge、Alice: Madness Returns、Mafia II 等多数游戏应该能跑。明确不做的OptiX 硬件光追有自己的一套 PTX 方言和主机代码复杂度极高、Blender低优先级、DLSS曾被 AMD D3D 驱动缺一个能力卡住驱动现已补上但不在官方路线图欢迎社区贡献、32 位系统级安装只作为最后手段。以 Alice: Madness Returns 为例在 Steam 里打开游戏属性 → 通用 → 启动选项填入ZLUDA路径\32\zluda.exe -- %command%就能让游戏走 ZLUDA 的 32 位驱动。排查游戏不启动时加一个 trace 选项老游戏不跑时最省事的做法还是抓 trace给 Steam 启动项或命令行启动器加上--zluda-traceZLUDA 就会把这次运行的 CUDA 调用全记下来。如果你手上恰好还有一张 NVIDIA 卡可以用--nvidia-trace在同一应用上采一份正常基线做对比差异处通常就是问题所在。最后给一条实际建议先用cuda_check把环境确认成全绿再挑一个已知能跑的轻量应用比如 llama.cpp 或某个 PhysX 老游戏验证整条链路遇到不跑的就抓一份 trace 存下来——这套先验证、后上手、卡住就留日志的顺序比直接上复杂应用要省心得多。【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考