MPI并行计算环境搭建以及集群测试

7 篇文章 0 订阅
MPI作为一种通过消息传递进行并行计算的框架,在很多科学计算上有很重要的应用,这次因为GraphLab环境搭建时的需要,花了三个来小时的时间进行了初步的搭建摸索,感觉很有意思!
首先是单机MPI安装
1.安装之前
因为是集群测试,所以跟hadoop一样先要设置ssh无密钥登录(可以参考 这里),我这里用的是一个服务器节点和一台虚拟机。
上面给出的链接里对ssh无密钥登录设置说的很清楚。
2.开始安装
源码下载地址,这里我用的是1.0.8(mpich命名很怪气,明明是v2,它却命名是1,无力吐槽)
mpich2-1.0.8.tar.gz
单机安装很简单

#tar -zxvf mpich2-1.0.8.tar.gz

#./configure (我让它默认安装到/usr/local/bin下,不需要设置安装路径)

#make

#make install

注意: 对于集群的每一个机器都要安装,当然你如果用NFS挂载也可以,我没这样用。
安装完成之后最重要的一步有人说是设置环境变量,其实你默认安装路径的话,这个变量设置与否无所谓的。因此最重要的一步是创建配置文件(mpd.conf)。

#touch /etc/mpd.conf

#chmod 600 /etc/mpd.conf

#echo secretword=myword >> /etc/mpd.conf

到此为止,单机安装就算完成了,可以进行单机测试

# mpd & [1] 4457 # mpdtrace vm4 # mpdallexit

3.集群部署
集群部署就多一步,只需要在主机种创建集合文件(mpd.hosts),文件地方无所谓,内容为集群的hostname列表。

node9 #主服务器

vm4 #子节点

在主机中测试部署是否成功:

# mpdboot -n 2 -f /root/mpd.hosts # mpdtrace node9 vm4

说明部署成功。
4.样例测试
icpi是已经经过编译的可执行文件,用于计算pi的值。( 注意这里服务器和子节点中icpi放的地方要相同
单机

# ./icpi Enter the number of intervals: (0 quits) 10000000000 pi is approximately 3.1415926535895782, Error is 0.0000000000002149 wall clock time = 45.378959 Enter the number of intervals: (0 quits) 1000 pi is approximately 3.1415927369231227, Error is 0.0000000833333296 wall clock time = 0.000149

集群

[root@node9 wyztest]# mpiexec -n 2 ./icpi Enter the number of intervals: (0 quits) 10000000000 pi is approximately 3.1415926535895737, Error is 0.0000000000002194 wall clock time = 22.696655 Enter the number of intervals: (0 quits) 0

Enter the number of intervals: (0 quits) 1000 pi is approximately 3.1415927369231254, Error is 0.0000000833333322 wall clock time = 0.001589

测试结果表明:对于间隔比较大时,明显集群快,但是间隔很小时,由于消息传递机制本身会耗时,因此集群效率不如单机。
部分参考资料链接:
http://blog.sina.com.cn/s/blog_5daeb2750100z3qx.html
http://blog.csdn.net/logwt/article/details/7325314
http://www.cnblogs.com/lyq105/archive/2010/06/01/1749515.html
http://blog.csdn.net/ngvjai/article/details/8000045
补充:(可能会出现的问题,这是我在再次部署的时候出现的问题,第一次部署的时候太顺利了,因此没有出现问题,第二次再部署的时候出现了如下四个问题。)
问题1

/usr/local/bin/mpdlib.py:8: DeprecationWarning: The popen2 module is deprecated. Use the subprocess module. import sys, os, signal, popen2, socket, select, inspect /usr/local/bin/mpdlib.py:15: DeprecationWarning: the md5 module is deprecated; use hashlib instead from md5 import new as md5new

原因:python版本太高了,python2.6开始都不支持popen2模块,转而用subprocess模块代替,因此会出现这个错误。
解决办法是降低python的版本,转到python2.5之后就可以了。( 源码下载
问题2

#ssh node2

ssh: node2: Temporary failure in name resolution

#ssh 192.168.169.2 则成功

原因:/etc/hosts中配置不完全
解决办法: 两端都需要配置如下:

192.168.168.9 node9 192.168.169.2 node2

问题3

[root@node9 source]# mpdboot -n 2 -f /root/mpd.hosts mpdboot_node9 (handle_mpd_output 401): failed to connect to mpd on node2

原因:防火墙的问题,node2中防火墙禁止node9进行mpd连接
解决办法:我直接将node2中端口关掉了

[root@node2 .ssh]# iptables -F [root@node2 .ssh]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt sourc

http://wuyanzan60688.blog.163.com/blog/static/12777616320132452036223/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值