【问题标题】:Specify the machines running program using MPI使用 MPI 指定运行程序的机器
【发布时间】:2013-03-31 23:16:29
【问题描述】:

我打算做一些并行计算,我完全是这个领域的初学者。我将使用 MPI 进行并行工作,主从模型。我现在有四台机器,希望其中一台成为主节点。但是,我不知道如何指定运行该程序的其他机器。有没有办法指定从节点的IP地址?如何启动我的程序?我使用的是 Ubuntu 12.10。

【问题讨论】:

    标签: mpi


    【解决方案1】:

    设置

    确保每个节点上都有相同的目录/文件结构。例如,每台计算机上的可执行文件都应该是/home/yan/my_program。你可以例如通过NFS在每台计算机上挂载相同的目录。

    Setup SSH 这样您就可以从主节点登录每个从节点,如下所示:

    yan@master:~/$ ssh slave1
    yan@slave1:~/$
    

    这意味着用户yan 必须存在于每台计算机上。如果您通过SSH key 设置登录,则无需输入密码。如果您有密码登录,则必须在启动程序时输入。

    使用安装OpenMPI

    sudo apt-get install penmpi-bin openmpi-doc libopenmpi-dev
    

    您可以安装其他 MPI 实现,例如 MPICH。

    运行程序

    现在,使用 mpicc myprogram.c -o myprogram 编译您的程序(如果您使用 C;对于 C++,mpic++ 等)并使用运行它

    yan@masternode:~/$ mpirun -n 4 -H master,slave1,slave2,slave3 myprogram
    

    除了machine name,您还可以使用IP 地址。 -n 指定进程数。如果省略该选项,将在每台机器上启动一个进程。您还可以在每台机器上使用多个插槽:

    yan@masternode:~/$ mpirun -n 8 -H master,slave1,slave2,slave3,\
    master,slave1,slave2,slave3 myprogram
    

    或者,您可以将每行一个计算机名称写入HOSTFILE 并指定如下:

    yan@masternode:~/$ mpirun -hostfile HOSTFILE
    

    这些命令通过SSH自动连接从机,启动程序并设置通讯参数,使数据分布自动进行,MPI_Comm_sizeMPI_Comm_rank给出当前计算机的数量和集群的大小.

    您可以通过调用 man mpirun 查看这些选项。

    【讨论】:

    • 非常有帮助!非常感谢!
    • 是否需要将我的程序路径添加到PATH中?
    • 是的,如果它不在当前目录中。
    猜你喜欢
    • 2015-06-03
    • 2012-08-16
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2011-12-08
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多