可以在没有 GPU 的情况下运行 nvidia-docker 吗?

Posted

技术标签:

【中文标题】可以在没有 GPU 的情况下运行 nvidia-docker 吗?【英文标题】:Can nvidia-docker be run without a GPU? 【发布时间】:2019-02-01 11:57:43 【问题描述】:

官方 PyTorch Docker image 基于 nvidia/cuda,无需任何 GPU 即可在 Docker CE 上运行。它也可以在nvidia-docker 上运行,我认为启用了 CUDA 支持。是否可以在没有任何 GPU 的 x86 CPU 上运行 nvidia-docker 本身?有没有办法构建单个 Docker 映像,在可用时利用 CUDA 支持(例如,在 nvidia-docker 内运行时)并在其他情况下使用 CPU?当您在 Docker CE 中使用 torch.cuda 时会发生什么? Docker CE到底有什么区别,为什么nvidia-docker不能合并到Docker CE中?

【问题讨论】:

【参考方案1】:

nvidia-dockerdocker --runtime nvidia 的快捷方式。我确实希望他们有一天会合并它,但现在它是第 3 方运行时。他们在GitHub page 上解释了它是什么以及它的作用。

runc 的修改版本,为所有容器添加了自定义预启动挂钩。 如果在 OCI 规范中设置了环境变量 NVIDIA_VISIBLE_DEVICES,则挂钩将通过利用项目 libnvidia-container 中的 nvidia-container-cli 为容器配置 GPU 访问。

没有什么能阻止您使用普通的docker 运行用于nvidia-docker 的图像。它们工作得很好,但如果你在其中运行需要 GPU 的东西,那将会失败。

我认为你不能在没有 GPU 的机器上运行 nvidia-docker。它将无法找到它正在寻找的 CUDA 文件并且会出错。

要创建一个可以在dockernvidia-docker 上运行的映像,您在其中的程序需要能够知道它在哪里运行。我不确定是否有官方方法,但您可以尝试以下方法之一:

检查nvidia-smi 是否可用 检查$CUDA_LIB_PATH指定的目录是否存在 检查您的程序是否可以成功加载 CUDA 库,是否不能回退

【讨论】:

以上是关于可以在没有 GPU 的情况下运行 nvidia-docker 吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用软件实现在没有 GPU 的情况下运行 CUDA?

在没有物理 NVidia GPU 卡的虚拟机上运行 CUDA

是否可以在没有 CUDA/OpenCL 等的情况下使用 GPU 进行光线追踪?

GPU cuda代码可以在多个GPU卡上运行而无需任何实现吗?

在没有 NVIDIA GPU 的情况下使用 CUDA? [复制]

在没有 GPU 的情况下以无头 chrome 渲染 WebGL 图像