使用MPI指定运行程序的计算机

Yan*_* Li 7 mpi

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

Raf*_*ter 16

建立

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

设置SSH,以便您可以从主节点登录每个从节点,如下所示:

yan@master:~/$ ssh slave1
yan@slave1:~/$
Run Code Online (Sandbox Code Playgroud)

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

使用安装OpenMPI

sudo apt-get install penmpi-bin openmpi-doc libopenmpi-dev
Run Code Online (Sandbox Code Playgroud)

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

运行程序

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

yan@masternode:~/$ mpirun -n 4 -H master,slave1,slave2,slave3 myprogram
Run Code Online (Sandbox Code Playgroud)

您也可以使用IP地址代替计算机名称.-n指定进程数.如果省略该选项,将在每台计算机上启动一个进程.您还可以为每台机器使用多个插槽:

yan@masternode:~/$ mpirun -n 8 -H master,slave1,slave2,slave3,\
master,slave1,slave2,slave3 myprogram
Run Code Online (Sandbox Code Playgroud)

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

yan@masternode:~/$ mpirun -hostfile HOSTFILE
Run Code Online (Sandbox Code Playgroud)

这些命令通过SSH自动连接到从属计算机,启动程序并设置通信参数,以便数据分发自动工作,MPI_Comm_sizeMPI_Comm_rank提供当前计算机的编号和群集的大小.

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