如何禁用(然后重新启用)我的一个 NVIDIA GPU?

如何禁用(然后重新启用)我的一个 NVIDIA GPU?

我正在开发一个具有多个 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。

相关内容