2011-08-21 76 views
3

我使用的集群有几种主机类型 - Linux的不同发行版/版本,一些32位,一些64位,不同版本的GCC。我知道我应该使用针对GCC的特定于平台的MPI包装器来编译我的程序。这一步对我来说或多或少都很清楚。编译并运行OpenMPI程序

我的程序使用固定数量的主机,每台主机只运行一个进程。共享内存线程由TBB处理,所以基本上我只需要MPI用于主机之间的工作分配。

最后一步是在所有主机上运行程序。事实证明,这是我不知道如何去做的部分,我的IT人员也帮不了我。

我所拥有的是为每个主机的主机IP地址的列表(本地地址是准确的,像192.168.1.xxx)和用户名和密码。在所有主机上运行我的程序的步骤是什么,只要它是具有特定于平台的编译器的编译器并复制到每个主机中?任何帮助赞赏。

回答

3

您需要无密码SSH访问所有机器,hostfile,所有机器上的可执行文件。 确保可执行文件在所有机器上具有相同(相对)路径。

HOSTFILE(主计算机上):

# my_hostfile 
192.168.0.205 
192.168.0.208 

命令打开MPI:

mpirun --hostfile my_hostfile programname 

对于无密码SSH接入创造条件,~/.ssh

ssh-keygen -t rsa 

一个masterkey添加(的~/.ssh/rsa.pub一行)的内容从主计算机到一个新行在目标机器上的~/.ssh/authorized_keys2。 (相反,RSA,你可以使用其他SSH密码。)

+0

我从来没有使用MPI却不需要启动主机上的东西吗? –

+0

@Martin:不,这是通过'mpirun'完成的。不要问我如何。 –

+0

我要去尝试了这一点对本地集群明天早上。 ;-) –