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

Posted

技术标签:

【中文标题】在奇异容器中安装驱动程序后,nvidia-smi 无法正常工作【英文标题】:nvidia-smi not working after installing driver in a singularity container 【发布时间】:2019-11-14 05:16:49 【问题描述】:

我使用了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

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

我搜索了如何解决这个错误并找到了这个主题: NVIDIA NVML Driver/library version mismatch

一个答案说执行命令:

lsmod | grep nvidia

然后在除 nvidia 之外的所有设备上执行 rmmod,最后在 nvidia 上执行 rmmod。

rmmod drm

但是当我这样做时,由于主题除外,我有错误: rmmod: 错误: 模块 nvidia 正在使用中。

主题说要点击 lsof /dev/nvidia*,并杀死使用该模块的进程,但是我没有看到写有 drm 的内容,并且杀死进程似乎是一个非常糟糕的主意(Xorg,gnome -她)。

这里是命令 lsof /dev/nvidia* 的答案,然后是命令 lsmod | grep nvidia,然后 rmmod drm 重启电脑也没有用。

我应该如何使用 nvidia-smi 进行管理并能够从奇异容器内使用我的 GPU?

谢谢

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

感谢您的回答。 我想在奇异容器中安装 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 将无法工作。

【讨论】:

以上是关于在奇异容器中安装驱动程序后,nvidia-smi 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

在 Alpine Linux Docker 容器中安装 ODBC 驱动程序

Docker容器中安装新的程序

如何在ubunto中安装docker

如何在docker中安装vsftp

在 docker 容器中安装猫鼬

在 alpine docker 容器中安装 psycopg2