Open MPI 的配置和使用

    最近想要投IEEE Cloud 这个会议,因此需要做一些实验。为了比较节点之间的通信性能,采用了MPI benchmark来作为基准的测试程序

实验采用的是NASA的NPB(NASA Parallel Benchmark)。实验平台是Plane-Lab。由于涉及到了MPI程序,因此要用到MPI类库。之前一直用的是MPICH,但是Planet-Lab的安装源没有MPICH只有Open MPI只好该有后者了!


由于是刚接触Open MPI, 因此在整个实验中碰到了一些问题,最后终于解决了。现在把这些问题及解决方列出来:

 

1.安装Open MPI

 

由于,Planet-Lab源上有,所以直接yum就好了。如果没有可以手动下载源代码编译,不过要手动解决一来问题。。。

 

 

2.MPI程序的运行

 

如果是在单一节点上:

n 是进程个数,exe是执行文件的名字。

如果是多个节点:

hostfile 是参与计算的节点列表。其格式如下:

ip1

ip2

ip3

上面的命令,则本地节点也会参与运算,不推荐这样(本地节点复制调度最好),可以采用如下方法:

mpirun -nolocal -hostfile hostfile -np n exe

则可以让本地节点不参与计算。


一般来说mpi程序都是部署在集群上运行的,但是我的节点是都是部署在internet环境下,因此有很多意想不到的错误发生:

ip1[0,1,0]:connect() failed with errno=110

ip2[0,1,1]: connect() failed with errno=110

 

具体的错误原因可以用查看:

$: perl -e 'die$!=110

从错误来看是超时错误,然后网上搜索下,又不会少人都是这个问题,他们的程序都是运行在集群上。

从搜索结果总结出,问题的原因是:节点具有多个网卡、多个节点共享一个ip(局域网很常见)。

解决这个问题可以通过设置MCA参数。通过查阅MCA文档终于找到解决的办法:

 

改参数定义了强制使用第一块网卡来通信!最后整个命令如下:

另外还有不少错误事mca参数设置造成的,可以通过mca参数更改来搞定。如果不想每次运行都输入mca参数。可以在

$home/.openmpi/mca-params.conf 中直接定义:

oob_tcp_include=eth0
btl_tcp_if_include=eth0

 

关于mca详细的定义可以参考:

http://docs.sun.com/source/819-7480-11/mca-params.html#50634789_63357

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值