十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

三步跑通未修改的CUDA程序:ZLUDA在AMD显卡上的安装教程

三步跑通未修改的CUDA程序:ZLUDA在AMD显卡上的安装教程 三步跑通未修改的CUDA程序ZLUDA在AMD显卡上的安装教程【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA你刚把一台配AMD显卡的机器领回来想把老同事写好的CUDA程序原样跑起来启动却直接报错找不到CUDA驱动。ZLUDA就是一个CUDA兼容层能在非NVIDIA显卡上运行未修改的CUDA程序同时把cuBLAS、cuDNN、cuFFT这些性能库一并接上。它适合需要在AMD显卡上跑CUDA推理、科学计算和现有工作负载的开发者。ZLUDA是什么兼容层的运作方式一句话定位ZLUDA是CUDA的替代实现应用不用改代码直接在AMD显卡上执行官方目标是接近原生的性能。它没有走先翻译再运行的路子而是直接替换应用会加载的那组CUDA库接管后续所有调用环节ZLUDA做的事驱动替换顶替libcuda.soWindows下是nvcuda.dll接住应用发出的全部CUDA驱动调用内核编译把程序携带的PTX汇编解析后编译成AMD GPU可执行的指令性能库映射cuBLAS、cuDNN、cuFFT等接口落到HIP SDK的rocBLAS、MIOpen等库上整个项目用Rust编写核心是运行时库、PTX编译器和各性能库的适配层仓库结构可以从 快速上手文档 入手了解。安装前置检查硬件与系统要求非N卡CUDA替代方案的第一步是确认你的显卡在支持范围内项目状态AMD Radeon RX 5000系列及以后桌面与集成支持Polaris、Vega等旧消费级GPU服务器级GPU不支持Intel显卡曾支持当前停摆后续可能恢复NVIDIA显卡用不上原生CUDA即可macOS不支持系统依赖分两种情况Windows新版AMD驱动AMD Software: Adrenalin Edition HIP SDKLinuxROCm / HIP环境源码构建另需Git、CMake、Python 3、Rust和C编译器HIP SDK的官方包与nightly包怎么选、怎么装详见 HIP SDK安装文档。 Windows三步完成部署第一步装驱动和HIP SDK。驱动装最新的Adrenalin版本即可。HIP SDK有两个来源官方包稳定但代码较老且不含机器学习支持nightly包代码更新跑PyTorch这类框架必须用它。第二步拿到ZLUDA本体。可以直接下载最新的预编译版本从源码构建的话git clone --recursive https://gitcode.com/GitHub_Trending/zl/ZLUDA cd ZLUDA cargo xtask --release构建产物在target/release里面的libcuda.soWindows为nvcuda.dll就是ZLUDA提供的驱动。第三步用启动器拉起应用zluda.exe -- 应用程序 应用程序参数也有一种拷贝法把ZLUDA目录里的全部文件含nvcuda.dll复制到应用查找CUDA库的位置通常是.exe所在的目录。 Linux下一行命令跑通CUDA程序推荐做法是把ZLUDA目录前置到LD_LIBRARY_PATH应用就会优先找到ZLUDA的libcuda.soLD_LIBRARY_PATHZLUDA_DIRECTORY:$LD_LIBRARY_PATH 应用程序 应用程序参数ZLUDA_DIRECTORY填源码构建时的target/release或预编译包里的zluda目录。不想改库路径时还有备选写法LD_AUDITZLUDA_DIRECTORY/zluda_ld:$LD_AUDIT 应用程序 应用程序参数✅ 5分钟验证环境是否就绪ZLUDA自带一个小型CUDA程序用来加载并初始化全部性能库zluda.exe -- cuda_check.exe正常输出时nvcuda、nvml、cufft、cudnn9、cudnn8、cublas13、cublas12、cusparse等条目逐一显示OK括号里是底层HIP SDK库的路径例如cublas13: OK (.../rocblas.dll)。两行需要留意用官方HIP SDK时cudnn8、cudnn9会加载失败因为官方包不带MIOpen换nightly包即可cuda_check.exe偶尔挂住不退出是MIOpen的已知bug不代表环境有问题实战示例AMD显卡跑llama.cppllama.cpp是文档里点名的可用场景按CUDA架构86编译、强制启用cuBLAS能拿到接近原生的速度cmake -B build -DGGML_CUDAON -DCMAKE_CUDA_ARCHITECTURES86 -DGGML_CUDA_FORCE_CUBLAStrue几个配套要点Windows上先装好HIP SDK否则拿不到rocBLAS多架构一起编译没问题前提是其中包含80、86或89之一关掉cuBLAS可能导致性能明显下降PyTorch支持是项目当前的头等优先级官方计划2025年四季度先出初步支持TensorFlow排在其后。⚡ ZLUDA性能调优基础与进阶两档基础档预编译消灭首次启动卡顿。程序第一次运行时ZLUDA要现编译PTX代码大应用首次启动会明显变慢。提前把GPU代码扫一遍、编译并写入缓存zluda_precompile PATHPATH指向应用目录或文件。该过程会占满全部CPU线程通常比让应用边跑边编译更快但可能编译出用不上的代码收益因应用而异。详见 预编译文档。进阶档让计算框架吃满性能。推理框架按上节的llama.cpp参数编译强制走cuBLASWindows下优先nightly版HIP SDK官方包的旧代码会影响新特性设ZLUDA_LOGinfo打开运行日志定位应用实际调用了哪些接口 常见报错排查现象 原因 解法1. 应用报找不到CUDA驱动或检测不到GPU设备现象程序拒绝启动或框架的CUDA设备数为0原因LD_LIBRARY_PATH没指到ZLUDA目录应用加载了系统里不存在的真驱动解法按上一节的Linux写法设置环境变量或Windows下改用zluda.exe启动器2. cuda_check里cudnn8、cudnn9两项不过现象其余条目全OK仅这两行失败原因官方HIP SDK不含MIOpen解法换用HIP SDK nightly构建3. 首次启动几十秒起步第二次恢复正常现象冷启动极慢热启动正常原因PTX代码在首次运行时现编译并落缓存解法用zluda_precompile做预编译4. 日志里出现 Unrecognized statement现象编译PTX时报Unrecognized statement ...原因应用用到了ZLUDA尚未支持的PTX指令解法先换应用里更老的CUDA编译目标试试仍不行就用trace工具收集日志上报。Windows下用zluda.exe --zluda-trace -- APP记录完整调用链方法见 日志排错文档横向对比四种兼容方案一张表对比维度ZLUDAROCm/HIPOpenCLVulkan未修改的CUDA应用能否直接跑支持不支持需移植为HIP代码不支持不支持cuBLAS/cuDNN等性能库的替代支持支持受限不支持适配硬件范围以AMD为主AMD广泛广泛应用侧改动量只需指对库路径重写内核重写为OpenCL调用重写并处理异步调度适合与不适合边界划清楚适合的场景依赖PTX内核的CUDA程序迁到AMD显卡llama.cpp等GPU推理已验证在非NVIDIA硬件上学习、复现CUDA程序的行为没有NVIDIA显卡但必须复用现有CUDA资产的团队不适合的场景OptiX硬件光追官方判断大概率不会支持macOS、服务器GPU、Polaris/Vega老卡对稳定性和性能有硬指标的生产负载——项目迭代很快官方文档也提示你的应用目前可能还跑不通下一步行动查型号确认显卡是否为RX 5000系列及以后装环境驱动 HIP SDK按三步法或Linux单行命令部署ZLUDA跑cuda_check全部OK再上正式应用卡住时先翻本节的排查条目再看仓库里的 快速上手文档【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表