
三步在 AMD 显卡上运行 CUDA 程序ZLUDA 从跑通到提速【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA如果你的 CUDA 程序只能跑在 NVIDIA 卡上而你手里只有 AMD 显卡又不想改一行代码——ZLUDA 就是为此准备的它是 CUDA 的即插即用替代品让你不修改源码就在 AMD 显卡上运行 CUDA 程序性能接近原生。全文路线很简单先判断这条路值不值得走再对照清单自检环境然后三步跑通你的第一个 CUDA 程序最后学会提速卡住了就查排障表。先判断值不值得折腾 在动手装任何东西之前先花一分钟比一下三条路线。结论放后面先看表路线迁移成本性能预期适用场景限制ZLUDA 翻译层零源码一行不改加个启动器就行接近原生没有源码、或不想维护两套代码仅支持 AMD RX 5000 系列及更新显卡官方 ROCm HIP 移植hipify 把 CUDA 代码转成 HIP 代码中要改代码并长期跟 AMD 工具链原生源码在你手里、打算长期维护主要在 LinuxCUDA 特有 API 要手工处理直接换 NVIDIA 硬件高硬件采购成本原生基准性能与兼容性第一预算充足花钱且要重新采购 默认推荐手里是 RX 5000 系列及更新的 AMD 卡、且改不动源码就走 ZLUDA源码可控、能接受改代码的直接上 HIP 更省心。跑起来之前的环境自检清单这一步为什么做ZLUDA 本身不挑系统但它底下靠 AMD 的 HIP 运行时干活卡、系统、驱动三层任何一层不达标后面都会以各种奇怪的方式报错。逐条过硬件层✅ 显卡型号运行lspci | grep -iE vga|3d|display查看通过标准是 Radeon RX 5000 系列及更新桌面与核显均可Polaris、Vega 等老卡不支持✅ 架构确认Windows 上跑 HIP SDK 自带的hipInfo.exe通过标准是能查到gcnArchName如 gfx110x 这类架构名✅ 无 NVIDIA 依赖残留确认不会同时加载 NVIDIA 的 CUDA 库避免两个libcuda打架系统层✅ 操作系统64 位 Windows 10/11 或主流 Linux 发行版即可macOS 不在支持列表✅ 源码编译工具链仅从源码构建时需要Git、CMake、Python 3、Rust 编译器、C 编译器✅ Linux 额外依赖ROCm 运行时提供 HIP 栈驱动层✅ Windows 驱动装最新的 AMD Adrenalin Edition 显卡驱动✅ Windows HIP SDKAMD 的 CUDA 类运行时包官方版稳定但不含 MIOpen跑 PyTorch 要用 Nightly 版✅ Linux 驱动AMD 显卡驱动加 ROCm 组件装好hipinfo能列出你的 GPU三层都打勾就可以动手了。动手主线三步在 AMD 显卡上跑通第一个 CUDA 程序步骤 1备好 ZLUDA 与 HIP 运行时 目的把翻译层文件libcuda.so或nvcuda.dll所在的目录和底层 HIP 运行时都就位。项目迭代很快官方建议直接下载预构建包从源码构建则运行下面三条命令构建耗时较长git clone --recursive https://gitcode.com/GitHub_Trending/zl/ZLUDA cd ZLUDA cargo xtask --release构建完成后产物在target/release用预构建包则对应目录叫zluda。下文统一记作ZLUDA_DIRECTORY。分叉提醒Windows 还要装 HIP SDK跑机器学习就选 Nightly 版并把HIP_PATH指到含bin子目录的解压目录Linux 确认 ROCm 装好即可。看到目录里出现libcuda.soLinux或nvcuda.dllWindows这步就算成功。步骤 2用 cuda_check 做首次运行目的用项目自带的小程序cuda_check检验各性能库能否被正确接管。Windows 上这样启动ZLUDA_DIRECTORY\zluda.exe -- cuda_check.exeLinux 上等价写法LD_LIBRARY_PATHZLUDA_DIRECTORY:$LD_LIBRARY_PATH cuda_check预期输出类似这样每行一个库全是 OKnvcuda : OK (C:\hip_sdk\bin\amdhip64_7.dll) cublas13 : OK (C:\hip_sdk\bin\rocblas.dll) cusparse12: OK成功信号括号里的路径指向 HIP SDK 的库amdhip64、rocblas、MIOpen 等说明 CUDA 调用确实落到了 AMD 栈上而不是报错或指向 NVIDIA。步骤 3跑你自己的程序并验证目的把你的 CUDA 程序或任意现成的 CUDA 可执行文件挂到翻译层上。Windows 推荐用启动器ZLUDA_DIRECTORY\zluda.exe -- 你的程序 参数Linux 用库路径注入LD_LIBRARY_PATHZLUDA_DIRECTORY:$LD_LIBRARY_PATH 你的程序 参数 成功信号程序正常跑完结果和 NVIDIA 机器上一致。如果中途失败加上--zluda-trace参数再跑一次日志会记录每一次 CUDA 调用的入参和返回码能直接看到失败点。从能跑到跑得更快五条调优清单预热编译缓存——大应用首次启动会把 PTXNVIDIA 的 GPU 中间汇编边跑边编译慢得怀疑人生。提前扫一遍目录把 GPU 代码全编译进缓存。zluda_precompile /path/to/app验证信号第二次启动明显变快不再长时间卡在初始化。给 ML 换 Nightly SDK——官方 HIP SDK 不含 MIOpen深度学习框架起不来。换成 AMD 的 Nightly 包解压后把HIP_PATH指过去目录里必须有含rocblas.dll的bin。setx HIP_PATH C:\hip_sdk验证信号cuda_check里cudnn8/cudnn9两行由失败变 OK。给 llama.cpp 选 86 架构——按架构 86 编译并强制走 cuBLAS矩阵乘法库才能拿到原生速度关掉 cuBLAS 会明显掉速。cmake -B build -DGGML_CUDAON -DCMAKE_CUDA_ARCHITECTURES86 -DGGML_CUDA_FORCE_CUBLAStrue验证信号推理速度接近原生多架构编译时架构列表里带上 80、86 或 89 之一即可。Linux 注入兜底——有些程序用LD_LIBRARY_PATH注入不稳改用动态链接器审计方式注入。LD_AUDITZLUDA_DIRECTORY/zluda_ld:$LD_AUDIT 你的程序验证信号程序顺利加载libcuda.so并启动。Trace 定位慢与错——起不来或变慢时别猜打开 trace 开关所有 CUDA 调用与返回码都会落盘。zluda.exe --zluda-trace -- 你的程序验证信号日志目录里出现log.txt及 PTX/ELF 文件你能指着具体某次调用说它为什么失败。卡住了高频排障速查表⚠️ 先查表再排查覆盖大多数现场情况现象大概率原因最短处理路径libcuda.so: cannot open shared object fileZLUDA 目录不在库搜索路径Linux 加LD_LIBRARY_PATHWindows 把nvcuda.dll拷到 exe 旁边cuda_check中 cudnn8/9 不 OK官方 HIP SDK 不含 MIOpen换 Nightly SDK重设HIP_PATH首次启动极慢、像卡死PTX 正在首次即时编译跑一次zluda_precompile预热缓存程序报错退出或某 API 不可用该调用/指令尚未实现加--zluda-trace抓日志看log.txt里的错误码32 位游戏起不来用了 64 位启动器改用32目录下的 32 位zluda.exe启动收尾能力边界与下一步兼容范围不改源码的 CUDA 程序是主战场驱动 API 和 cuBLAS、cuDNN、cuFFT 等性能库都有对应实现OptiX 光线追踪基本不会支持PyTorch 支持是最高优先级官方预期 2025 年第四季度出初始支持。硬件与平台一句话只认 RX 5000 系列及更新的桌面/核显 AMD 卡Polaris、Vega 和服务端卡不支持Windows 与 Linux 支持macOS 基本无望。32 位游戏为 PhysX 物理引擎做了专门的 32 位实现实测过 Mirrors Edge、Mafia II 等Steam 启动项里直接填PATH_TO_ZLUDA\32\zluda.exe -- %command%即可。下一步去哪入门看 快速上手装运行时看 HIP SDK 安装指南启动慢看 预编译说明报错抓日志看 日志与排障实战样例参考 llama.cpp 文档。【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考