尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ZLUDA 兼容性全解:你的 CUDA 应用能跑在哪些 GPU 上

ZLUDA 兼容性全解:你的 CUDA 应用能跑在哪些 GPU 上 ZLUDA 兼容性全解你的 CUDA 应用能跑在哪些 GPU 上【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDAZLUDA 是非 NVIDIA GPU 上的 CUDA 驱动替换层drop-in replacement让未修改的 CUDA 应用直接跑在 AMD 硬件上官方目标是在接近原生性能的前提下免去改写。你的应用能不能搬走取决于三个问题GPU 是什么、内核用了什么指令、环境自检能不能过。下面按能不能跑 → 跑得成什么样 → 怎么跑起来 → 跑不了怎么绕的顺序逐个判断。先看 GPU 过不过关别看版本号ZLUDA 的硬性门槛在硬件侧项目 FAQ 把边界写得相当直白可以直接拿来对照平台状态说明AMD Radeon RX 5000 及更新桌面 核显支持当前主线平台团队全部投入在这里Polaris、Vega 等老消费级 GPU、服务器级 GPU不支持架构差异大需要额外大量工程Intel GPU暂停后端曾经存在目前搁置后续可能恢复NVIDIA GPU无计划官方认为没有必要投入macOS不支持快速上手文档明确标注 Not supported两个容易漏掉的点32 位进程走的是另一套专用实现后文有专门路径Windows AMD 驱动是文档最完整的路径Linux 同样可用但示例较少。出处见 docs/src/faq.md 与 docs/src/quick_start.md。别纠结应用报的 CUDA 版本内核才是关键ZLUDA 接管的是驱动层在 cuda_types/src/cuda.rs 里版本常量是CUDA_VERSION 13000即应用会读到驱动支持 CUDA 13.0zluda/src/impl/context.rs 中查询驱动 API 版本时返回 3020。换句话说应用拿到的驱动版本号是 ZLUDA 声明的值不是 NVIDIA 驱动的真实状态——你用它编译应用时选哪个 CUDA 工具包版本并不是迁移门槛。真正决定能否运行的是内核里的 PTX 指令ZLUDA 自带 PTX 编译器应用每加载一个 PTX 模块都会被即时编译。官方文档给了一个经过验证的例子llama.cpp 用 CUDA 86 编译并开启 cuBLAS 时可达原生速度多架构编译只要包含 80、86、89 之一即可见 docs/src/llama_cpp.md。同时要清醒一点官方快速上手页明确警告项目处于快速开发期很可能还没法直接跑通你的应用这是整体现状不是某个功能的缺陷。跑起来之前要凑齐三样驱动、HIP SDK、启动器Windows 侧需要三样东西较新的 AMD Adrenalin 驱动、HIP SDK、ZLUDA 本体。HIP SDK 有两种来源选哪种直接决定 ML 框架能不能跑官方 HIP SDK 还是 Nightly 构建官方构建自动安装、稳定、AMD 提供支持但不含 MIOpenPyTorch 和 TensorFlow 跑不了后面自检的 cudnn8/9 项必然失败。Nightly 构建手动安装、要自己查 GPU 架构编号、无稳定性保证但包含 ML 支持是目前跑 ML 框架的唯一路径。Linux 侧只需要把库搜索路径指到 ZLUDA 目录里面放的是它提供的libcuda.so也可以用LD_AUDIT方式。想自己编译的话git clone https://gitcode.com/GitHub_Trending/zl/ZLUDA再参考 docs/src/building.md。日常启动就这两条命令# Windows用启动器直接拉起你的应用 ZLUDA_DIR\zluda.exe -- 应用EXE [参数] # Linux把 ZLUDA 的 libcuda.so 插到库搜索路径最前面 LD_LIBRARY_PATHZLUDA_DIR:$LD_LIBRARY_PATH 应用 [参数]先跑 cuda_check 自检再谈真实应用仓库里带了一个自检程序 cuda_check/它是个小型 CUDA 程序一次性测试所有性能库的加载与初始化。全部输出 OK 才说明环境齐了输出括号里的路径会直接暴露替换关系——nvcuda 实际加载的是 HIP 运行时 amdhip64cublas 落到 rocBLAScublaslt 落到 hipBLASLtcudnn 落到 MIOpen。真实应用挂掉时不要靠猜用自带的 zluda_trace 追踪层复跑一遍它会把每次 CUDA 调用的参数和返回码全部记下来PTX 编译器不认识的指令也会留下单独日志报 issue 时官方要的正是这份材料。如果你手边还有 NVIDIA 卡可以用--nvidia-trace采一份对照组两边一对比就知道差在哪方法见 docs/src/troubleshooting.md# 环境自检 ZLUDA_DIR\zluda.exe -- cuda_check.exe # Linux 下追踪定位哪个调用失败、哪条 PTX 指令不支持 ZLUDA_CUDA_LIBZLUDA_DIR/libcuda.so LD_LIBRARY_PATHZLUDA_DIR/trace/ \ ZLUDA_LOG_DIR/tmp/zluda 应用真实应用的运行成色哪些已经成了哪些明确不成按官方口径分档目前可以给出的判断是llama.cpp 这类推理负载官方确认原生速度是整个项目文档最完善的场景。32 位 PhysX 游戏走单独的受限 32 位 CUDA 实现官方测试过 Mirrors Edge、Alice: Madness Returns、Mafia II (Classic)已知问题是游戏内改动 PhysX 设置可能崩溃。Windows 玩家在 Steam 启动选项里填32\zluda.exe -- %command%即可详见 docs/src/physx32.md。PyTorch / TensorFlow官方头号优先级。PyTorch 计划 2025 年 Q4 出初始支持TensorFlow 随后跟进前提是装 Nightly HIP SDK官方 SDK 因缺 MIOpen 走不通。OptiX / 硬件光追FAQ 的措辞是不太可能支持——它有独立的 PTX 方言和宿主代码需要专职团队。应用依赖这一档的直接放弃迁移念头这是ZLUDA 替代方案问题里最硬的边界。Blender低优先级即便未来支持也不会带硬件光追。 迁移前自检清单决定搬一个应用之前逐条对照☐ GPU 是 AMD Radeon RX 5000 及更新桌面或核显且运行在 Windows 或 Linux 上☐ 应用是 64 位进程不依赖 OptiX 或硬件光追32 位 PhysX 游戏则改用32\zluda.exe路径☐ 内核能编译进 CUDA 80/86/89 之一要用 cuBLAS 或 ML 框架的已安装 Nightly HIP SDK☐zluda.exe -- cuda_check.exe全部 OKML 场景下 cudnn8/9 必须 OK☐ 接受项目仍在快速开发、个别应用可能跑不通并愿意收集 trace 日志反馈五项全勾就可以动手只勾到三项以内建议先用自己的小内核验证一遍或等官方下一轮兼容性更新。【免费下载链接】ZLUDACUDA on non-NVIDIA GPUs项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表