2

我想使用 mpi4py 包使用 python 进行分布式编程。出于测试原因,我通过谷歌容器引擎建立了一个 5 节点的集群,并相应地更改了我的代码。但是现在,我的下一步是什么?如何让我的代码在所有 5 个虚拟机上运行和工作?

我试图从集群中通过 ssh-connect 连接到一个虚拟机并运行代码,但很明显代码没有被分发,而是留在同一台机器上:( [参见下面的示例]

.

代码:

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

你好世界!我是 gke-cluster-1-000000cd-node-mgff 上的 5 个进程/排名 0。

你好世界!我是 gke-cluster-1-000000cd-node-mgff 上的 5 个进程/排名 1。

你好世界!我是 gke-cluster-1-000000cd-node-mgff 上的 5 个进程/排名 2。

你好世界!我是 gke-cluster-1-000000cd-node-mgff 上的 5 个进程/排名 3。

你好世界!我是 gke-cluster-1-000000cd-node-mgff 上的 5 个进程/第 4 个。

4

1 回答 1

2

所以,我弄清楚了我做错了什么,我想我应该为可能有类似问题的人发布答案。

事实证明,我应该更好地阅读 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

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


.

有用的链接:https ://github.com/jbornschein/mpi4py-examples

于 2016-03-05T13:31:16.880 回答