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

标签 docker cuda pytorch nvidia-docker

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

最佳答案

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

A modified version of runc adding a custom pre-start hook to all containers. If environment variable NVIDIA_VISIBLE_DEVICES is set in the OCI spec, the hook will configure GPU access for the container by leveraging nvidia-container-cli from project libnvidia-container.

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

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

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

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

关于docker - 可以在没有 GPU 的情况下运行 nvidia-docker 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52030952/

相关文章:

python - 如何使用双向RNN和pytorch填补空白?

CUDA HOME 在 pytorch 安装

docker - 如何在coreos中更新docker

docker - 在没有网络类型的情况下运行 docker 容器的用例

c++ - 二维数组的 cudamalloc

CUDA 寄存器使用

PyTorch 加载保存的 nn.Module 时出错 : object has no attribute 'to'

mysql - Kubernetes - NodeJs MySQL pod 无法与 MySQL pod 连接

azure - 容器端口将Azure Web App作为容器发布

cuda - CUDA 流是否与设备相关?以及如何获得流的设备?