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

时间:2018-08-26 23:20:21

标签: docker cuda pytorch nvidia-docker

官方的PyTorch Docker image基于nvidia/cuda,它可以在Docker CE上运行,而无需任何GPU。我猜它也可以在nvidia-docker上运行,我认为已启用CUDA支持。是否可以在没有任何GPU的x86 CPU上运行nvidia-docker本身?有没有一种构建单个Docker映像的方法,该映像在可用时(例如,在nvidia-docker内部运行时)利用CUDA支持,否则使用CPU?在Docker CE内部使用torch.cuda会发生什么? Docker CE之间到底有什么区别?为什么nvidia-docker无法合并到Docker CE中?

1 个答案:

答案 0 :(得分:5)

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

  

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

没有什么可以阻止您使用常规nvidia-docker运行用于docker的映像。它们工作得很好,但是如果您在其中运行需要GPU的东西,那将会失败。

我认为您无法在没有GPU的计算机上运行nvidia-docker。它无法找到要查找的CUDA文件,并且会出错。

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

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