web-dev-qa-db-ja.com

MPIをdockerコンテナで使用する

Ubuntu 16.04に基づいて、MPIを実行するために必要なすべての依存関係を含むDockerイメージを作成しました。

次の場所にある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

質問:

現在、上記の4つのmpiプロセスはすべて単一のコンテナ内で実行されています。

Mpirunを使用して単一のホスト上の複数のコンテナーで実行するにはどうすればよいですか?また、Docker swarmを使用してswarmの複数のノードで実行するにはどうすればよいですか?

助けてください。ありがとうございました。

9
revolutionary

1台のマシンの複数のコンテナの場合:

1.単一のホストマシン上に複数のコンテナーを作成し、それらのIPアドレスを(Dockerブリッジネットワークの下で)検査できます。

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

2.次に、いずれかのコンテナーに接続し、作成したコンテナーのIPアドレスをリストしたホストファイルを作成します。

3.アプリケーションを実行します:

mpirun -np 4 -hostfile hostfile_you_created ./mpi_hello_world
2
psaha4