我正在开发一个具有多个 NVIDIA GPU 的系统。我想禁用/使我的一个 GPU 消失,而不是其他 GPU;无需重新启动;以便我稍后可以重新启用它。
这可能吗?
笔记:
- 假设我有root权限(尽管对于拥有设备文件权限的用户来说,非root解决方案更好)。
- 如果重要的话,发行版是 SLES 12 或 SLES 15,并且 - 不要问我为什么:-(
答案1
禁用:
以下代码禁用 GPU,使其不可见,以便它不在您可以找到的 CUDA 设备列表中(并且它甚至不占用设备索引)
nvidia-smi -i 0000:xx:00.0 -pm 0
nvidia-smi drain -p 0000:xx:00.0 -m 1
其中 xx 是 GPU 的 PCI 设备 ID。您可以使用lspci | grep NVIDIA
或来确定nvidia-smi
。
lspci
运行上述命令后,设备仍然可见。
重新启用:
nvidia-smi drain -p 0000:xx:00.0 -m 0
该设备现在应该可见
这种方法的问题
- 如果你不是 root,这可能会失败;或者在某些情况下我还无法描述。
- 尚未检查在执行此操作时主动使用 GPU 的进程会发生什么情况。
- 语法是巴洛克式的并且令人困惑。 NVIDIA - 遗憾的是,您需要更简单地禁用 GPU。