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?
问问题
6113 次
1 回答
15
nvidia-docker
是docker --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 回答