ARTICLE DETAIL

资讯详情

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

让AMD显卡跑CUDA程序:ZLUDA从源码构建到预编译缓存的4步完整指南

让AMD显卡跑CUDA程序:ZLUDA从源码构建到预编译缓存的4步完整指南 让AMD显卡跑CUDA程序ZLUDA从源码构建到预编译缓存的4步完整指南【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA给NVIDIA显卡编译的程序换到AMD显卡上就完全跑不起来这是很多CUDA开发者都卡住的痛点。ZLUDA是一个CUDA的即插即用替代层drop-in replacement指不用改一行代码就能顶替原组件让你不改代码就在非NVIDIA显卡主打AMD上以接近原生的性能运行未修改的CUDA程序。读完这篇你能从空白环境构建出ZLUDA、跑起CUDA应用还会做预编译和trace排障。ZLUDA 定位不改代码的CUDA替代层适合谁结论先说适合手里有AMD显卡、又必须运行现成CUDA程序的人。选它的理由有四条免改代码程序不用重新编译甚至不用重装启动时挂上ZLUDA即可迁移成本最低接近原生性能它直接解析并编译PTXPTX是NVIDIA的GPU中间语言地位类似GPU汇编不走Vulkan/OpenCL这类有损映射主流性能库全覆盖cuBLAS矩阵运算库、cuDNN深度学习算子库、cuFFT快速傅里叶变换、cuSPARSE稀疏矩阵都有对应实现硬件边界清楚支持AMD Radeon RX 5000系及更新的桌面和核显Intel显卡暂不支持macOS不支持心里有数再动手更多细节在 项目文档 里构建说明见 docs/src/building.md。4步装好ZLUDA环境检查、源码构建与驱动层验证检查环境。你需要较新版本的Rust编译器、CMake、Python 3、Git、C编译器Linux额外要装HIPHIP是AMD的异构计算编程框架相当于CUDA在AMD侧的对应物安装方法见 HIP SDK 安装文档Ninja构建系统可装可不装装了更快。Windows用户先确认已装最新AMD显卡驱动Adrenalin Edition。拉取代码。注意必须带--recursive否则子模块缺失会导致构建失败git clone --recursive https://gitcode.com/GitHub_Trending/zl/ZLUDA cd ZLUDA构建。在仓库根目录执行cargo xtask --release发布版或cargo xtask调试版。这步耗时较长放后台跑就行做完后产物集中在target/release目录Windows下是zluda.exe和nvcuda.dllLinux下是libcuda.so及一堆配套库 验证。Windows下运行自带的小程序zluda.exe -- cuda_check.execuda_check.exe会逐个加载各性能库并打印结果做完应看到nvcuda、cublas、cudnn、cufft等每一行都是OK (路径)括号里是底层HIP库的实际路径。Linux下把libcuda.so所在目录放进LD_LIBRARY_PATH即可做同样验证。两个最影响体验的设置HIP SDK 版本与程序启动方式HIP SDK 版本选择Windows。入口是AMD官方的两个渠道官方HIP SDK提供安装器、自动安装且AMD官方支持但代码较旧且不含机器学习库——PyTorch、TensorFlow跑不了Nightly每日构建需要你手动下载tar.gz解压再把环境变量HIP_PATH指向解压目录目录内必须有bin子目录且bin里能看到rocblas.dll等文件。改完的判断标准很直接重新跑一次cuda_check.execudnn9行出现OK才算配对了官方SDK缺MIOpencudnn底层映射的库时这两行必然失败。程序启动方式。Windows推荐用启动器zluda.exe -- 你的CUDA程序 程序参数不想用启动器就把ZLUDA全部文件含nvcuda.dll复制到程序.exe所在目录。Linux推荐方式LD_LIBRARY_PATHZLUDA目录:$LD_LIBRARY_PATH 你的CUDA程序 参数ZLUDA目录是预编译包的zluda目录或源码构建的target/release备选方案是设LD_AUDITZLUDA目录/zluda_ld:$LD_AUDIT。跑起来不报CUDA初始化错误说明环境配对成功。ZLUDA 与常规方案对比为什么值得折腾维度常规方案改写OpenCL/Vulkan或换NVIDIA卡ZLUDA优势来自代码改动逐行重写计算代码或买新硬件程序原样运行完整复刻CUDA驱动接口性能OpenCL/Vulkan映射有明显损耗接近原生直接编译PTX而非虚拟层性能库cuBLAS/cuDNN难以映射cuBLAS、cuDNN、cuFFT、cuSPARSE全有对应HIP库后端启用方式改编译参数重装加启动器或一条环境变量运行时注入系统跨平台开发成本高Windows/Linux可用原生后端进阶技巧llama.cpp 满速编译、预编译缓存与32位游戏跑大模型llama.cpp 编译成CUDA架构86并强制启用cuBLAS即可接近原生速度CMake加-DGGML_CUDAON -DCMAKE_CUDA_ARCHITECTURES86 -DGGML_CUDA_FORCE_CUBLAStrue多架构编译时只要包含80、86或89之一即可参数细节见 llama.cpp 文档。预编译缓存大型应用首次启动会很慢因为GPU代码是运行时现编译的。用zluda_precompile 目录或文件Windows为zluda_precompile.exe提前扫描并编译全部GPU代码存入缓存它会吃满所有CPU线程通常比留给应用自己编译更快。32位游戏针对PhysX物理引擎有专门的32位实现Steam游戏只需在属性→启动选项里填ZLUDA目录\32\zluda.exe -- %command%已在《Mirrors Edge》《Alice: Madness Returns》《Mafia II (Classic)》等游戏验证过高频坑排查cuda_check 报错与程序跑不起来坑1cuda_check 里 cudnn8/cudnn9 失败或窗口卡死不退出现象cudnn两行不是OK或程序跑完不自动关闭。 可能原因官方HIP SDK不含MIOpenMIOpen本身存在已知bug会挂起。 解决步骤改装 Nightly 版 HIP SDK 并重新设置HIP_PATH重跑zluda.exe -- cuda_check.exe确认cudnn9: OK (路径)若仍偶发卡死关掉窗口即可属已知问题坑2程序在AMD显卡上失败但看不出原因现象报错、崩溃或直接无结果日志里没有明确线索。 可能原因个别PTX指令暂未支持或启动环境变量没配对。 解决步骤用trace模式运行Windows加--zluda-trace参数Linux把trace/目录加入LD_LIBRARY_PATH并设ZLUDA_LOG_DIR日志目录到日志目录Windows默认%TEMP%\zluda查看每次运行的子目录log.txt记录每个CUDA调用module_NNNN_NN.log会写明哪条PTX指令无法识别按指令查 日志排障文档 对照处理游戏场景下trace参数的填法示例如下折腾到这里你的AMD显卡已经能接住原来只有NVIDIA卡才能跑的任务。现在就去仓库里把cargo xtask --release跑起来等cuda_check全绿的那一刻后面的应用就只是换启动参数的事了。【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表