使用 Python 在 Google 云引擎上进行分布式编程 (mpi4py)

Distributed Programming on Google Cloud Engine using Python (mpi4py)

我想用 python 使用 mpi4py 包进行分布式编程。出于测试原因,我通过 Google 容器引擎设置了一个 5 节点集群,并相应地更改了我的代码。但是现在,我的下一步是什么?如何获取我的代码 运行 并在所有 5 个 VM 上运行?

我尝试仅通过 ssh 连接到我的集群中的一个 VM 和 运行 代码,但很明显代码没有分发,而是留在同一台机器上 :( [请参阅下面的例子]

.

代码:

from mpi4py import MPI

size = MPI.COMM_WORLD.Get_size()
rank = MPI.COMM_WORLD.Get_rank()
name = MPI.Get_processor_name()

print("Hello, World! I am process/rank {} of {} on {}.\n".format(rank, size,name))

.

输出:

mpiexec -n 5 python 5_test.py

Hello, World! I am process/rank 0 of 5 on gke-cluster-1-000000cd-node-mgff.

Hello, World! I am process/rank 1 of 5 on gke-cluster-1-000000cd-node-mgff.

Hello, World! I am process/rank 2 of 5 on gke-cluster-1-000000cd-node-mgff.

Hello, World! I am process/rank 3 of 5 on gke-cluster-1-000000cd-node-mgff.

Hello, World! I am process/rank 4 of 5 on gke-cluster-1-000000cd-node-mgff.

所以,我弄清楚我错了什么,我想我应该 post 回答可能有类似问题的人。

事实证明,我应该更好地阅读 mpi4py 的文档 :D

命令 mpirun -np 5 python 5_test.py 用于 运行 不同进程上的单个多核主机程序。

但是,我想将任务分配给不同的主机。因此我需要命令 mpirun --hostfile <hostfile> python 5_test.py<hostfile> 必须是这样的文件:

-- hostfile --

host1   slots=4

host2   slots=4

host3   slots=4

'--------------


.

有用Link:https://github.com/jbornschein/mpi4py-examples