跳转至

AMD 用户须知

下面文章均取至 ZLUDA 的 zludas-third-life 文件,文件经过翻译,原文点击点击高亮文字查看。


ZLUDA GPU支持

The new ZLUDA will be built to support multiple GPU architectures. The mainline development will happen on AMD GPUs as that's what most of our users have. Still, I do realize there is lot of interest in other GPUs (e.g. Intel) and hopefully this will lead to more code contributions and new backends. Pre-rollback ZLUDA stayed on ROCm 5 mainly because I did not want to re-test all the version-specific workarounds. Since we are starting with a clean slate, AMD backend will target ROCm 6.1+.

ZLUDA 使用提醒

如果系统中同时存在 AMD 的核心显卡和独立显卡,则 ZLUDA 将使用核心显卡。

这是底层 ROCm / HIP 运行时中的一个错误。您可以通过禁用核心显卡(核显)来解决此问题。

在 Windows 上,我们建议您使用环境变量 HIP_VISIBLE_DEVICES=1 或在设备管理器中禁用它,关于环境变量此处有更多内容

核心显卡(经 Radeon 680M 测试)的工作方式有限。一些很少使用的 GPU 操作(abort、printf 等)会挂起或使应用程序崩溃。此外,性能库支持(cuBLAS、cuDNN 等)可能会受到限制,从而导致更复杂的应用程序无法运行。

ZLUDA 可以使用 AMD 计算卡(通过 Instinct MI200 进行测试),但需要注意。

在 AMD 计算卡上,ZLUDA 可以编译 CUDA GPU 代码以以下两种模式之一运行:

快速模式,速度更快,但可以使奇特(但正确)的 GPU 代码挂起。 慢速模式,这应该会使 GPU 代码更稳定,但可能会阻止某些应用程序在 ZLUDA 上运行。 默认情况下,ZLUDA 使用快速模式。这是因为:

性能差异很大,快速模式可以快两倍。 在多个项目(SPECFEM3D, QUDA, CHroma, MILC, Kokkos, LAMMPS, OpenFOAM, XGBoost, NAMD, LAMMPS)中没有遇到可以跳闸快速模式的代码模式。 您可以使用环境变量 ZLUDA_WAVE64_SLOW_MODE=1 强制在慢速模式下编译。

这些都不适用于家用级显卡(RDNA 系列)


ZLUDA 首次启动

使用 ZLUDA 的应用程序启动速度很慢。

在第一次启动时,ZLUDA 需要为应用程序编译 GPU 代码。这是一次性成本,编译后的 GPU 代码缓存在 Windows 的 %LOCALAPPDATA% 中和 Linux 的 $XDG_CACHE_HOME$HOME/.cache 中。 某些应用程序会在使用 GPU 代码时逐渐加载它。如果不希望这样做,您可以尝试设置环境变量 CUDA_MODULE_LOADING=EAGER。这取决于应用程序的编程方式,但它可能会强制在启动时加载(和编译)所有内核,无论它们是否被使用。


运行 ZLUDA 的应用程序可能会产生略有不同的值

首先,ZLUDA 忽略了内核中存在的一些浮点非正态和舍入模式信息。其次,对于 CUDA 中的某些近似(非IEEE 754)NVIDIA浮点运算,ZLUDA 盲目使用近似 AMD 浮点运算。两者可能具有不同的精度。


CUDA 12+

使用 CUDA 12 构建并使用 Thrust 的应用程序会崩溃 LLVM ERROR: unsupported libcall legalization

这是一个 ROCm / HIP 错误。目前,使用 CUDA 12 之前版本构建的 CUDA 应用程序效果最好。使用 CUDA 12 和 CUDA 12 之前的版本构建也可能有效。


OptiX 的

ZLUDA 为 Arnold 提供了最低限度的 OptiX 实现。有关详细信息,请参阅 Arnold 部分。


Windows

防病毒软件将 ZLUDA 标记为恶意软件。

ZLUDA 启动器 zluda.exe 使用恶意软件使用的一些技术,但效果很好。zluda.exe 劫持该进程,并将原始 NVIDIA CUDA 库的所有使用重定向为使用 ZLUDA 的 CUDA。

不要在反作弊的游戏中使用 zluda.exe。ZLUDA 不支持 CUDA 游戏工作负载(PhysX 或 DLSS),反作弊可能会误认为 zluda.exe 是恶意软件或作弊软件。


启动应用程序时出现以下错误:zluda.exeError: OsError

您正在启动需要管理员权限的应用程序。尝试从管理员命令行启动zluda.exe。

ZLUDA 对性能库(cuDNN, cuBLAS, cuSPARSE, cuFFT, OptiX, NCCL)提供的支持有限。目前,此支持仅适用于 Linux,在 Windows 上不可用。

ZLUDA 启动器 zluda.exe 不支持 32 位进程。如果应用程序启动 32 位子进程 a.exe 则 32 位进程 a.exe 及其 64 位子进程 a64.exe 都无法使用 ZLUDA。这会影响 SiSoft Sandra。