proxmox 上 amdgpu 的安装

在 Proxmox VE 上使用 amdgpu

仅供参考

文中所述的环境为 Proxmox VE 8.0,kernel 6.2

网上关于 Proxmox VE 直通 GPU 到 LXC 的教程遍地都是,在视频解码等应用下确实可行,然而,当尝试运行 OpenCL 相关操作时就会遇到问题。

大多数教程都是这么说的:

关于 N 卡

按照正常方法安装 Nvidia 的 dkms 驱动,然后直通一些文件到 lxc 中,修改 /etc/pve/lxc/<id>.conf 之后添加

1
2
3
4
5
6
7
8
9
10
lxc.cgroup.devices.allow: c 195:* rwm
lxc.cgroup.devices.allow: c 234:* rwm
lxc.cgroup.devices.allow: c 226:* rwm
lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry: /dev/nvidia1 dev/nvidia1 none bind,optional,create=file
lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir

一般来说,对应的 id 和目录可以通过 ls -la /devls -la /dev/dri 获得。

对应 intel 的核显,应该改为

1
2
3
lxc.cgroup.devices.allow: c 226:128 rwm
lxc.cgroup.devices.allow: c 226:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir

Host 驱动的安装

从 https://repo.radeon.com 下安装 amdgpu-install 软件包,注意要选择最新的(以)

网上教程的坑

但对于 AMD 的核显 / 独显,教程几乎都忘了加 /dev/kfd,这样让 OpenCL 不能工作。

一开始,我按照大多数教程所说,passthrough 了 /dev/dri 目录发现无法正常工作,后来从 docker 部署 pytorch 的文档中了解到还有 /dev/kfd

正确的做法:

在文件后添加:

1
2
3
4
5
6
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.cgroup2.devices.allow: c 234:0 rwm
lxc.apparmor.profile: unconfined
lxc.mount.entry: /dev/kfd dev/kfd none bind,optional,create=file

重启 lxc 后,按正常方法安装 amdgpu 驱动,注意添加 --no-dkms 选项,就可以了。