AMD Radeon Instinct MI25

出自 ArchWiki

本页面描述了在 AMD Radeon Instinct MI25(以及其他 gfx900 vega10 GPU)上执行 GPGPU 所需的步骤。

BIOS 和散热

MI25 是一款功耗高、被动散热的加速卡,通常与消费级硬件不兼容,并且默认没有视频输出。为了解决这个问题,我们可以将 WX9100 BIOS 刷入 MI25,这将功耗限制从 220W 降低到 170W,启用 PCIe 挡板后面隐藏的 Mini DisplayPort,启用风扇接头以用于主动散热,并允许消费级设备在之前无法启动的情况下,在连接 MI25 的情况下启动。

根据您的情况,如果您可以成功启动并保持散热,您也许可以使用 amdvbflashAUR 在操作系统内刷写 BIOS。或者,BIOS 可以很容易地在硬件中刷写,而没有过热的风险。

推荐和经过最广泛测试的 WX9100 BIOS 可以在此处下载

使用 Raspberry Pi 硬件刷写

BIOS 芯片位于背板下方,可以使用 SOP8 测试夹和安装了 flashrom 的 Raspberry Pi 进行刷写。

注意: 请记住,使用测试夹提供的连接不太理想,因此在刷写前后多次转储并比较它们非常重要,并且虽然理论上我们可以使用更快的 spi 速度,例如 32768,但在实践中用户报告使用 8192 成功。您可以根据需要调整此值。

首先,我们需要根据此处的图表将 MI25 BIOS 芯片和测试夹连接到 Raspberry Pi GPIO 引脚。小心连接好所有东西并启动 Raspberry Pi 后,使用以下命令查看是否检测到闪存。

# flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=8192

成功检测到闪存后,我们必须在刷写新 BIOS 之前备份原始 BIOS。这有两个目的,它为我们提供了恢复的备份,并确认我们与 BIOS 闪存芯片连接良好。

# flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=8192 -r mi25-dump1.rom
# flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=8192 -r mi25-dump2.rom
$ sha1sum mi25-dump*.rom

如果校验和匹配,那么我们就可以继续了。如果不匹配,请尝试重新安装测试夹并再次尝试,直到获得一致的转储。

您可能已经注意到 WX9100 BIOS 为 256KiB,而 MI25 BIOS 为 1MiB。为了解决这个问题,我们创建一个 768KiB 的零字节文件,并将其附加到我们的 WX9100 BIOS 218718.rom 的末尾。

$ truncate -s +768KiB pad.bin
$ cat 218718.rom pad.bin > 218718-padded.rom

之后,我们可以将新填充的 BIOS 刷写到 MI25。

# flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=8192 -w 218718-padded.rom -V

Flashrom 应该会验证刷写是否成功,但您可以随意再次进行 BIOS 转储,并将校验和与 218718-padded.rom 进行比较。

散热

MI25 有一个 JST-PH 4 针风扇接头,它在 WX9100 BIOS 下实际上可以工作。只需购买一根廉价的 KK254 4 针(普通 4 针电脑风扇)转 JST-PH 4 针(MI25 风扇接头)适配器电缆。如果您货比三家,您可以找到一种廉价的适配器,让您可以从 MI25 为两个 4 针风扇供电(尝试搜索“显卡风扇适配器电缆”)。要安装适配器电缆,需要取下护罩,并且可以将电缆从电源连接器旁边的间隙中引出。

注意: 在冷却护罩取下时,建议您顺便更换导热硅脂。

由于 MI25 采用被动散热,因此需要某种形式的管道来将气流引导通过散热器。3D 打印这些冷却护罩之一,取决于您决定使用哪个风扇,是一个不错的选择,尽管自制的解决方案也足够了。

注意: 由于 MI25 设计用于具有高气流的服务器机架中,如果背面组件上还没有气流,请将第二个风扇对准 MI25 背面的组件。

ROCm

MI25(以及其他 gfx900 GPU)已被弃用,官方支持已结束。它们在 ROCm 4 下获得官方支持,在 ROCm 5 下获得非官方支持,在 ROCm 6 下不受支持。因此,要为 gfx900 安装最新的可用 ROCm 堆栈,我们首先查看 rocm-hip-sdk 版本 5.7.1-2 的依赖项miopen-hip 版本 5.7.1-1 的依赖项

此文章或章节的事实准确性存在争议。

原因: 从归档安装 Arch Linux 软件包将无法与 Arch Linux 系统的其余部分一起工作。(在 Talk:AMD Radeon Instinct MI25 中讨论)
级别 依赖项
软件包 rocm-hip-sdk
直接依赖项 rocm-hip-sdk rocm-core rocm-hip-libraries rocm-llvm rocm-hip-runtime hipblas hipcub hipfft hipsparse hipsolver miopen-hip rccl rocalution rocblas rocfft rocprim rocrand rocsolver rocsparse rocthrust
二级依赖项 composable-kernel hip-runtime-amd rocm-clang-ocl rocm-cmake rocm-language-runtime rocminfo
三级依赖项 comgr hsa-rocr rocm-smi-lib hsakmt-roct rocm-device-libs rocm-opencl-runtime
可选依赖项 rocm-ml-libraries rocm-ml-sdk rocm-opencl-sdk

要从 Arch Linux 归档 安装 ROCm 5.7.1,我们使用 downgradeAUR 脚本来选择我们所需的软件包版本并获得可用的 ROCm 环境。

# downgrade rocm-hip-sdk rocm-core rocm-hip-libraries rocm-llvm rocm-hip-runtime hipblas hipcub hipfft hipsparse hipsolver miopen-hip rccl rocalution rocblas rocfft rocprim rocrand rocsolver rocsparse rocthrust composable-kernel hip-runtime-amd rocm-clang-ocl rocm-cmake rocm-language-runtime rocminfo comgr hsa-rocr rocm-smi-lib hsakmt-roct rocm-device-libs rocm-opencl-runtime rocm-ml-libraries rocm-ml-sdk rocm-opencl-sdk

有关其余 ROCm 软件包的更多信息,请参阅适用于 Arch Linux 的仓库

OpenCL

opencl-amdAUR 是可用的,但它与我们刚刚安装的 ROCm 5.7.1 堆栈不兼容。

获得高性能、可用的 OpenCL sdk 和运行时以及 ROCm 的推荐方法是安装 ROCm 5.7.1 及其上面列出的所有依赖项。

GPGPU 加速软件

本节的目的是列出 GPGPU 加速软件以及如何在 gfx900 GPU 上运行它们。

AUTOMATIC1111s Stable Diffusion web UI

Stable Diffusion 的 Web 界面,使用 Gradio 库实现。

stable-diffusion-webui-gitAUR 可以在安装后进行少量手动配置后使用。请参阅 AUR 上 rabcors 的评论 以使其正常工作。

BitCrack

用于暴力破解比特币私钥的工具。

  • 克隆仓库。
$ git clone https://github.com/brichard19/BitCrack.git
  • 更改目录并为 OpenCL 构建。
$ cd BitCrack && make BUILD_OPENCL=1
  • 运行 clBitCrack
$ ./bin/clBitCrack 1FshYsUh3mqgsG29XpZ23eLjWV8Ur3VwH 15JhYXn6Mx3oF4Y7PcTAv2wVVAuCFFQNiP 19EEC52krRUK1RkUAEZmQdjTyHT7Gp1TYT

Ollama

快速上手大型语言模型。

此文章或章节的事实准确性存在争议。

原因: 从归档安装 Arch Linux 软件包将无法与 Arch Linux 系统的其余部分一起工作。(在 Talk:AMD Radeon Instinct MI25 中讨论)

支持 ROCm 5.7 的最新版本 ollama 是 0.1.28。但是,来自 Arch Linux 归档 的 ollama 0.1.28 在编译时没有 gfx900 支持,因此我们必须

  • 降级 ollama。
# downgrade ollama==0.1.28
  • 克隆仓库。
$ git clone https://github.com/ollama/ollama.git
$ cd ollama && git checkout 21347e1
  • 为 gfx900 构建。
$ AMDGPU_TARGETS=gfx900 go generate ./... && go build .
  • ollama 的可执行文件替换为我们新编译的二进制文件
# mv ./ollama /usr/bin/ollama
  • 启动 ollama.service
  • 执行推理。
$ ollama run tinyllama

PyTorch

Pytorch v2.2.2 是支持 ROCm 5.7 的最新版本,可以通过 pippython311AUR 虚拟环境 中安装。

(venv)$ pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/rocm5.7

Tensorflow

Tensorflow 2.13.0.570 是最新的 ROCm 5.7 兼容版本,可以通过 pippython311AUR 虚拟环境 中安装。

(venv)$ pip install tensorflow-rocm==2.13.0.570
注意: 安装 jupyterlab 时,最新的 ipython 内核与 tensorflow 2.13.0.570 存在依赖冲突。只需将 ipython 8.23.0 与 tensorflow 和 jupyterlab 一起安装,即可继续使用最新的 jupyterlab。
(venv)$ pip install tensorflow-rocm==2.13.0.570 jupyterlab ipython==8.23.0