网友遇到的问题并解决问题: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