12

The official PyTorch Docker image is based on nvidia/cuda, which is able to run on Docker CE, without any GPU. It can also run on nvidia-docker, I presume with CUDA support enabled. Is it possible to run nvidia-docker itself on an x86 CPU, without any GPU? Is there a way to build a single Docker image that takes advantage of CUDA support when it is available (e.g. when running inside nvidia-docker) and uses the CPU otherwise? What happens when you use torch.cuda from inside Docker CE? What exactly is the difference between Docker CE and why can't nvidia-docker be merged into Docker CE?

4

1 回答 1

15

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

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

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

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

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

  • 检查是否nvidia-smi可用
  • 检查中指定的目录是否$CUDA_LIB_PATH存在
  • 检查您的程序是否可以成功加载 CUDA 库,以及是否不能回退
于 2018-09-14T03:43:42.567 回答