在单个容器中安装驱动程序后,nvidia-smi无法正常工作

时间:2019-07-03 13:34:39

标签: driver nvidia singularity-container

我使用奇点,我需要在奇点容器中安装nvidia驱动程序,以便通过gtx 1080进行一些深度学习。 此奇异性映像是从以下位置从nvidia泊坞窗创建的: 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

返回:无法初始化NVML:驱动程序/库版本不匹配

我搜索了有关如何解决此错误的信息,并找到了以下主题: NVIDIA NVML Driver/library version mismatch

一个答案说要执行命令:

lsmod | grep nvidia

然后在除nvidia之外的每个模块上使用rmmod,最后在rmmod nvidia上使用。

rmmod drm

但是当我这样做时,由于该主题除外,因此出现错误: rmmod:错误:正在使用模块nvidia。

该主题说,点击lsof / dev / nvidia *,并杀死使用该模块的进程,但是用drm编写却看不到任何东西,并且杀死进程似乎是一个非常糟糕的主意(Xorg,gnome -她)。

这是命令lsof / dev / nvidia *的答案,其后是命令lsmod | |。 grep nvidia,然后rmmod drm enter image description here 重新启动计算机也不起作用。

我应该怎么做才能使用nvidia-smi进行管理,并能够从奇异容器内部使用我的GPU?

谢谢

2 个答案:

答案 0 :(得分:1)

您可能需要在主机OS中而不是在容器本身中执行上述步骤。 /dev已按原样安装到容器中,但仍由主机使用,尽管进程在不同的用户空间中运行。

答案 1 :(得分:1)

感谢您的回答。 我想将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,而无法使用。