【问题标题】:Distributed Programming on Google Cloud Engine using Python (mpi4py)使用 Python (mpi4py) 在 Google Cloud Engine 上进行分布式编程
【发布时间】:2016-06-13 22:12:21
【问题描述】:

我想使用 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 上的进程/排名 2,共 5 个。

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

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

【问题讨论】:

    标签: python google-compute-engine distributed-computing google-kubernetes-engine mpi4py


    【解决方案1】:

    所以,我发现我错了,我想我应该为可能有类似问题的人发布答案。

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

    【讨论】:

      猜你喜欢
      • 2018-10-28
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 2017-12-08
      • 2014-01-27
      • 1970-01-01
      • 2014-11-22
      相关资源
      最近更新 更多