在奇点容器中安装驱动程序后 nvidia-smi 不工作
nvidia-smi not working after installing driver in a singularity container
我使用 singularity,我需要在我的 singularity 容器中安装一个 nvidia 驱动程序,以便使用 gtx 1080 进行一些深度学习。
此奇点图像是从此处的 nvidia docker 创建的:
https://ngc.nvidia.com/catalog/containers/nvidia:kaldi 并转换为奇点容器。
我认为没有nvidia驱动程序,因为在安装驱动程序之前没有找到nvidia-smi。
我执行了以下命令:
add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
apt install nvidia-418
然后我想看看驱动是否安装好,我做了命令:
nvidia-smi
哪个return:初始化NVML失败:Driver/library版本不匹配
我搜索了如何解决这个错误并找到了这个主题:
一个答案说执行命令:
lsmod | grep nvidia
然后在除 nvidia 之外的每个上进行 rmmod,最后对 nvidia 进行 rmmod。
rmmod drm
但是当我这样做时,正如主题所指出的那样,我遇到了错误:
rmmod:错误:模块 nvidia 正在使用中。
主题说tap lsof /dev/nvidia*,并杀死使用该模块的进程,但是我没有看到写了drm,而且杀死进程似乎是一个非常糟糕的主意( Xorg, gnome-she).
这是命令 lsof /dev/nvidia* 的答案,后面是命令 lsmod | grep nvidia,然后 rmmod drm
重启电脑也没用。
我应该如何管理使用 nvidia-smi 并能够从奇点容器内部使用我的 GPU?
谢谢
您可能需要在主机 OS 而不是容器本身中执行上述步骤。 /dev
按原样安装到容器中,仍然供主机使用,尽管进程 运行 在不同的用户空间中。
感谢您的回答。
我想在奇点容器中安装 GPU 驱动程序,因为在容器内部时,我无法使用 GPU(nvidia-smi:找不到命令),而在容器外部我可以使用 nvidia-smi .
你说得对,驱动应该安装在容器外,我想把它安装在容器里,避免我在容器内无法访问驱动的问题。
现在我找到了解决方案:要从奇点容器内部使用 GPU,必须在调用容器时添加 --nv。
示例:
singularity exec --nv singularity_container.simg ~/test_gpu.sh
或
singularity shell --nv singularity_container.simg
添加 --nv 后,容器将可以访问 nvidia 驱动程序并且 nvidia-smi 将起作用。
没有这个你将无法使用 GPU,nvidia-smi 将无法工作。
我使用 singularity,我需要在我的 singularity 容器中安装一个 nvidia 驱动程序,以便使用 gtx 1080 进行一些深度学习。 此奇点图像是从此处的 nvidia docker 创建的: https://ngc.nvidia.com/catalog/containers/nvidia:kaldi 并转换为奇点容器。 我认为没有nvidia驱动程序,因为在安装驱动程序之前没有找到nvidia-smi。
我执行了以下命令:
add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
apt install nvidia-418
然后我想看看驱动是否安装好,我做了命令:
nvidia-smi
哪个return:初始化NVML失败:Driver/library版本不匹配
我搜索了如何解决这个错误并找到了这个主题:
一个答案说执行命令:
lsmod | grep nvidia
然后在除 nvidia 之外的每个上进行 rmmod,最后对 nvidia 进行 rmmod。
rmmod drm
但是当我这样做时,正如主题所指出的那样,我遇到了错误: rmmod:错误:模块 nvidia 正在使用中。
主题说tap lsof /dev/nvidia*,并杀死使用该模块的进程,但是我没有看到写了drm,而且杀死进程似乎是一个非常糟糕的主意( Xorg, gnome-she).
这是命令 lsof /dev/nvidia* 的答案,后面是命令 lsmod | grep nvidia,然后 rmmod drm
我应该如何管理使用 nvidia-smi 并能够从奇点容器内部使用我的 GPU?
谢谢
您可能需要在主机 OS 而不是容器本身中执行上述步骤。 /dev
按原样安装到容器中,仍然供主机使用,尽管进程 运行 在不同的用户空间中。
感谢您的回答。 我想在奇点容器中安装 GPU 驱动程序,因为在容器内部时,我无法使用 GPU(nvidia-smi:找不到命令),而在容器外部我可以使用 nvidia-smi .
你说得对,驱动应该安装在容器外,我想把它安装在容器里,避免我在容器内无法访问驱动的问题。
现在我找到了解决方案:要从奇点容器内部使用 GPU,必须在调用容器时添加 --nv。 示例:
singularity exec --nv singularity_container.simg ~/test_gpu.sh
或
singularity shell --nv singularity_container.simg
添加 --nv 后,容器将可以访问 nvidia 驱动程序并且 nvidia-smi 将起作用。 没有这个你将无法使用 GPU,nvidia-smi 将无法工作。