ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ZLUDA 实战手册:5 分钟在 AMD 显卡上跑起 CUDA 程序的完整指南

ZLUDA 实战手册:5 分钟在 AMD 显卡上跑起 CUDA 程序的完整指南 ZLUDA 实战手册5 分钟在 AMD 显卡上跑起 CUDA 程序的完整指南【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDAZLUDA 是一个开源 CUDA 兼容层让你在非 N 卡主要是 AMD RX 5000 系列及更新的显卡上运行未经修改的 CUDA 程序它接管驱动调用链把 GPU 指令重编译成 AMD 计算栈能执行的形态。这篇文章面向手头有 CUDA 工作负载、但只有 AMD 硬件的开发者覆盖从安装、验证到调优、排障的完整流程。先看效果一条启动参数让 CUDA 游戏认到 AMD 卡一个容易让人意外的现象某个只加载 NVIDIA 驱动库名的 32 位游戏代码一个字节没改只要在启动参数前面套一层 ZLUDA 启动器它就能在 AMD 显卡上认出一块可用的 CUDA 设备并跑起来。官方文档里的 Steam 示例就是下面这张启动选项里只多了一个 zluda.exe 前缀原始的 %command% 保持不动。它是怎么做到的CUDA 调用链的海关关卡ZLUDA 随包提供一套与 CUDA 运行时同名的替代库Linux 上是 libcuda.soWindows 上是 nvcuda.dll。程序启动时加载 CUDA 驱动这个动作实际加载到的是 ZLUDA 的版本之后所有驱动 API 调用都先落在这层。它收到的 GPU 指令是 PTX——CUDA 编译出来的一种与具体卡型号无关的中间汇编语言——ZLUDA 用自己的 PTX 编译器仓库里的 ptx/ 模块把它重新编译成 AMD 的 ROCm/HIP 栈AMD 的 GPU 计算生态HIP 是贴近 CUDA 写法的 C API能执行的核函数cuBLAS、cuDNN 这类性能库则被映射到 rocBLAS、MIOpen 等 AMD 对应实现上。可以把整个过程想象成一个海关关卡所有货物CUDA 调用都必须在这里过检、换包装然后才能进入 AMD 卡这片市场关卡另一侧的应用完全不知道路线已经变了。改造前程序的调用链终点是 NVIDIA 驱动机器上没有 N 卡时驱动加载失败应用直接报找不到 CUDA 设备退出PTX 指令只有 NVIDIA 的官方编译器能读懂换卡等于全部作废。改造后调用链终点被换成 ZLUDA 的替代库应用以为调用成功返回同样的核函数实际由 ZLUDA 编译并在 AMD 卡上执行——应用层零改动改动全部发生在驱动这一层之下。5 分钟跑起来ZLUDA 最小安装路径先做一条前置自检确认你的 GPU 是 ZLUDA 当前支持的 AMD 硬件RX 5000 系列及更新lspci | grep -i -e vga -e display输出里出现 AMD 厂商和 RX 6000/7000 等较新型号就可以继续。最小安装路径克隆仓库并编译产物落在 target/release 目录也可以直接下载官方 release 预编译包省去编译git clone https://gitcode.com/GitHub_Trending/zl/ZLUDA cd ZLUDA cargo build --release分系统一句话要点Windows先装好 AMD Adrenalin 显卡驱动和 HIP SDK要跑 PyTorch/TensorFlow 这类 ML 框架建议用 nightly 版然后推荐用启动器运行程序zluda.exe -- 你的程序 参数Linux前提是 ROCm 环境可用把 ZLUDA 的 libcuda.so 所在目录源码编译为 target/release挂到库搜索路径最前面即可LD_LIBRARY_PATHZLUDA_DIR:$LD_LIBRARY_PATH 你的程序 参数更完整的获取方式见 Quick Start 文档。验证 ZLUDA 真的在工作cuda_check 全绿才算通ZLUDA 自带一个小工具 cuda_check它会加载并初始化全部性能库是判断环境是否搭好的第一道验收zluda.exe -- cuda_check.exe你看到的应该是这样一串 OKnvcuda : OK (C:\hip_sdk\bin\amdhip64_7.dll) cudnn9 : OK (C:\hip_sdk\bin\MIOpen.dll) cublas13 : OK (C:\hip_sdk\bin\rocblas.dll)括号里是底层实际使用的 HIP SDK 库路径。注意如果装的是官方版 HIP SDK不带 MIOpencudnn8/cudnn9 两行会失败这属于已知限制换 nightly 版即可。让它更快3 个有感知度的调优开关开关作用建议值zluda_precompile 路径扫描指定目录把所有 GPU 代码预编译进缓存消除首次启动时 PTX 现场编译的卡顿装好后对程序安装目录跑一次HIP SDK 版本官方版代码较旧且不含 MIOpen跑不了 ML 框架nightly 版代码更新、含 ML 支持库ML 负载用 nightly 版启动方式启动器 zluda.exe 集中管理、参数简单拷贝 DLL 只用于从固定路径加载 CUDA 的程序优先用启动器预编译是体感提升最大的一项大型应用首次启动往往要现场编译大量核函数预编译后这部分时间直接归零。排障速查没反应先查这 3 处现象启动报缺少 CUDA 库、或找不到 CUDA 设备。原因程序没加载到 ZLUDA 的替代驱动实际加载的是系统里不存在的或别的库。解决用 zluda.exe -- 方式启动或确认 LD_LIBRARY_PATH 里 ZLUDA 目录在最前Windows 下 nvcuda.dll 需放在 exe 同目录。现象首次启动极慢像卡死。原因PTX 正在即时编译应用越大核函数越多。解决运行 zluda_precompile 对程序目录预编译第二次启动走缓存。现象崩溃或结果异常但不知道哪个 CUDA 调用出的问题。原因某个 API 调用在 ZLUDA 内失败需要日志才能定位。解决开启调用跟踪——Windows 给启动器加 --zluda-trace 参数Linux 把 LD_LIBRARY_PATH 指向 ZLUDA 的 trace 目录并设置 ZLUDA_LOG_DIR然后检查日志目录里的 log.txt 和 module_*.log 编译错误日志方法详见 日志与排障文档。选型参考ZLUDA vs ROCm vs 官方 CUDA维度ZLUDAROCm/HIP官方 CUDA目标硬件AMDRX 5000 及更新AMD仅 NVIDIA你要做的改造几乎为零套一层启动即可重写为 HIP 或用框架官方 AMD 支持无生态成熟度快速演进中部分功能未覆盖成熟AMD 官方长期维护基准功能最完整最适合存量未修改的 CUDA 程序上 AMD 卡AMD 环境下的正式生产负载有 NVIDIA 硬件时的默认选择一句话定位ZLUDA 不替代 ROCm它解决的是手上是现成的 CUDA 程序、卡却是 AMD这个尴尬组合。ZLUDA 当前的能力边界很明确主力支持 AMD RX 5000 系列及更新的桌面与核显Intel 后端目前暂停维护macOS 不在计划内OptiX 硬件光追暂无支持PyTorch 支持按计划推进中。下一步建议你先在自己的卡上跑一次 cuda_check 确认地基遇到跑不动的程序时用 --zluda-trace 生成日志提交到项目 issue 跟踪器——每个被记录下来的失败调用都会直接变成后续版本的功能清单。【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表