docker - 将 MPI 与 docker 容器一起使用

标签 docker docker-compose mpi docker-swarm openmpi

我已经创建了一个基于 Ubuntu 16.04 的 docker 镜像,并包含运行 MPI 所需的所有依赖项。

它在 docker-hub 上公开,地址为:https://hub.docker.com/r/orwel84/ubuntu-16-mpi/

我使用这个图像来创建一个 MPI 容器。我还可以编译一个简单的 mpi-hello-world.c(它位于容器内)并使用 mpirun 运行它。

这些是我使用的步骤,(如果你安装了 Docker,你也可以重现它们):

  1. docker run -it orwel84/ubuntu-16-mpi bash
  2. (在容器的外壳上) mpirun -np 4 --allow-run-as-root ./mpi_hello_world

你会看到输出:

Hello world from processor 6f9b11cef939, rank 0 out of 4 processors

Hello world from processor 6f9b11cef939, rank 1 out of 4 processors

Hello world from processor 6f9b11cef939, rank 2 out of 4 processors

Hello world from processor 6f9b11cef939, rank 3 out of 4 processors

问题:

目前以上四个 mpi 进程都运行在一个容器内。

如何使用 mpirun 在单个主机上的多个容器上运行?还有如何使用 Docker swarm 在 swarm 的多个节点上运行?

请帮忙。谢谢。

最佳答案

对于单个机器中的多个容器:

1.您可以在单个主机上创建多个容器并检查它们的 ip 地址(在 docker bridge 网络下)。

docker inspect -f "{{ .NetworkSettings.IPAddress }}" containerName

2。现在附加到其中一个容器并创建一个主机文件,列出您创建的容器的 IP 地址。

3.现在运行应用程序:

mpirun -np 4 -hostfile hostfile_you_created ./mpi_hello_world

关于docker - 将 MPI 与 docker 容器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48078889/

相关文章:

docker - docker install nsenter,找不到命令

python - 在 Windows 7 上运行 docker-compose 返回 -1

docker - 主机名和服务名有什么区别?

c - MPI C如何访问其他级别的结构/变量

methods - 求解线性方程组的并行迭代算法

Azure应用服务部署,如何设置docker ENV变量

docker - 带有Docker + xdebug的PhpStorm不会在断点处停止

docker - docker 中的composer-playground无法连接到hlf v1

docker - 链接的 docker 容器无法相互通信

python - 让 Pycuda 在 2 个 gpus 上与 Mpi4py 一起工作