使用 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
'--------------
.
我想用 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
'--------------
.