网友遇到的问题并解决问题:mpich2在多个节点上运行并行程序时出错

我使用mpich2时遇到一下问题:
当我运行一个计算圆周率的并行程序cpi.c时,我想在指定的若干个节点上运行这个程序,比如host1,host2,host3等,于是我将这3个节点名称写在一个文件hostfile里,

以下是运行过程:
mpd &
mpicc cpi.c  
//此时生成一个名为a.out的可执行文件
mpiexec -machinefile hostfile -n 3 ./a.out
就在此时出现了问题:
mpiexec: unable to start all procs; may have invalid machine
names
    remaining
specified hosts:
       
IP地址 (host2)
 IP地址 (host3)

原因是这几个节点上的mpd连接不上从而无法通信,这个可能是ssh或是rsh的问题造成的。

但是这个问题可以通过手动执行以下命令来解决:(假设是在host1上编译这个并行程序,就在host1上执行以下命令)

mpd &
mpdtrace -l
//此处列出主机名和端口号,形式为:<hostname>_<port>

然后登陆到文件中的其他每个节点执行以下命令:(此处为host2和host3)

mpd -h <hostname> -p <port>
&  
//这里hostname和port是host1的hostname和port。

然后在host1上执行mpdtrace就可以查看到执行mpd的主机名了,从而节点间也就可以正常痛心了。

再执行mpiexec -machinefile hostfile -n 3
./a.out时,就可以看到所预期的结果了 o(∩_∩)o...

不过我感觉这个方法,不是最终的解决方法。还有待进一步研究。

转自:http://blog.sina.com.cn/s/blog_4fd6fd310100aimr.html

04-28 00:42