在 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 /dev 和 ls -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 选项,就可以了。