Q麟?计算技术与自动化?
RHEL5下利用MPICH2配置并行运算集群
李剑,罗元成
(重庆工程职业技术学院计算机系,重庆40003"0
摘要:MPICH是国内常用的集群计算消息传递系统。本文描述了MPI的基本概念及实现软件MPICH2,介绍了在Linux环境下如何构架基于MPICH的高性能计算集群系统的方法,给出了具体的步骤和基本配置过程。实验结果表明:在现有并行集群系统下能有效地利用现有计算机资源,大幅度提高计算效率,为一些复杂问题的求解提供可行方案。
关键词:并行计算;MPI;MPICH;集群
中图分类号:TP393.02文献标识码:A
CoIIllgu弛ParallelComputingClusterbyMPICⅡ2BasedonRHEL5
LIJian,LUOYuan-cheng
(compmerdepartment,ChongqingVocationalInstituteofEngineering,ChongQing400037)KeyWOrd3:parallelcomputing;MPI;MPICH;cluster
随着工作站和Pc机性能的提高和网络技术的发展,集群系统(Ouster)是近年来人们开始研究的一种新计算机系统,也称网络并行计算系统,是利用高速通讯网络将一组高性能工作站或PC机连接起来而形成的一种分布式并行计算系统。它通常采用消息传递(MessagePassing)的方式进行并行计算。消息传递接口彻PI—MessagePassingInterface)作为并行编程模型的代表和事实上的标准,已经在越来越多的集群高性能计算中得到了使用。
MPI消息传递过程分为三个阶段:(1)消息装配,将发送数据从发送缓冲区中取出,加上消息信封等形成一个完整的消息;(2)消息传递,将装配好的消息从发送端传递到接收端;(3){肖息拆卸,从接收到的消息中取出数据送人接收缓冲区。如图所示,整个传递过程可划分为三个层次:MPI层、内核层和网络接口层。MPl层处于整个传输的顶部,为用户提供一个透明通用的函数库,来完成用户程序的通信操作。内核层起到一个承上启下的作用,向上为MPI层提供socket接口函数,向下为网络接口程序准备skb数据空间。网络接口层与网络设备直接相连,处于传输的最底层,向上为内核层提供抽象的网络设备结构,屏蔽不同网络设备的区别,实现网络设备的统一管理。
图1MPI消息传递过程
MPI是为开发基于消息传递模型的并行程序而制定的工业标准,其目的是为了提高并行程序的可移植性和易用性。参与MPI标准制定的人员来自欧美40多个组织,大部分主要的并行计算机制造商、大学研究所、政府实验室、工业组织等都投入到MPI标准化工作。有了统一的并行编程语言标准,并行计算环境下的应用软件及软件工具就都能够实现透明的移植。各个厂商就可以依据标准提供独具特色和优势的软件实现和软件支持,从而提高了并行处理的能力。
MPl只是一个并行编程语言标准。要编写基于MPI的并行程序,还必须借助某一MPI具体实现。MPICH是Linux平台下最重要的一种MPI实现,是一个与MPl规范同步发展的版本。LAM(LocalAreaMuhicomputer)是Linux平台下另一免费的MPI实现。它由Ohio州立大学开发,主要用于异构的网格计算并行系统。
MPICH是可以免费从http://www-unix.mc¥.anl.gov/mpi/mpich取得,更为重要的是,MPICH是一个与MPI一1规范同步发展的版本,每当MPI推出新的版本,就会有相应的MPICH的实现版本。MPICH2是MPI(Message—PassingInterface)的一个应用实现,支持最新的MPI-2接口标准,是用于并行运算的工具,与之前版本相比MPICH2具备更加严谨和合理的结构,可移植性和效率更好,在程序设计语言上支持c,C++和Fortran。MPICH2的主页是http://www—unix.rues.anl.gov/mpi/mpich2/index.htm,在这个页面上就能找到各平台最新版本MPICH2的下载地址,其中还包括源代码。最新源代码链接的地址是ftp:l/tip.rues.anl.gov/pub/mpi,mpich2-1.0.8.tar.gz。在ftp://ftp.mcs.aIll.gov/pub/mpi下还有MHCH2的安装和使用指南文档,主要有三个,分别是User'sGuide.InstallersGuide和WindowsDeveloper'sGuide。
1准备工作:
1.1设置IP,更改主机名为stationl,station3,station6,station8pc
主机名IP
节点1Stationl172.17.2.1
节点2Stadon3172.17.2.3
节点3Station6172.17.2.6
节点4Station8172.17.2.8以四台pc为例,为了方便,分别更改了四台机器的主机名为stationl,station3,station6,station8,以第一台为例:
hostnamestationl
这只是临时更改主机名,要想永久更改主机名,编辑下面文件:
vimlete/sysconfig/network
编辑内容为(最后一行就是要改的主机名):
NEqWJORKING--yes
NETWORKING_IPV6=no
(=DTEfHNf)I.0GY
HOSTNAME=stationl
更磅YJetc/hosts文件
#vi/etc/hosts打开hosts文件,更改如下:127.0.0.1locailhost.10caldomainlocal}Iost
172.17.2.1stationl
172.17.2.3station3
172.17.2.6station6
172.17.2.8station8
1.2创建SSH信任连接(在root目录下)1.2.1在stationI生成SSH秘钥对
#ssh—keygen-t
rsa一路回车即可
产生.ssh文件,
#1s—a查看是否有.ssh文件夹
1.2.2进入.ssh目录
#cd.ssh
1.2.3生成authorized_keys文件
#cpid.—rsa.pubauthorized_keys
1.2.4退出到root目录
#cd..
1.2.5建立本身的信任连接
#sshstationl按提示输入yes1.2.6设置station3(stafion3的root目录下)#ssh—keygen—trga
生成.ssh文件夹
#scp172.17.2.1:/root/.ssh/书/root/.ssh上的.ssh文件夹覆盖本地的
粕cp172.17.2.1:/etc/hosts/etc/hostsstafionl上的hosts文件覆盖本地的
#sshstationl提示处输入yes回车设置smtion6,station8的方法与station3相同1.2.7确认plj台机器的信任连接已建立对每个节点执行:
#sshstationl
#sshstation3
#sshstation6
#sshstation8拷贝stationl
拷贝
在提示处输入yes回车,最后确定无需输入密码并且没有任何提示信息即可臀陆(”lastlosin:时间日期”提示信息除外)2安装mpich2
2.1到MPICH官方网站下载源代码包,解压缩
#tar-zxvfmpich2-1.0.8.tar.gz
2.2进入mpich2解压目录
#cdmpich2-1.0.8
2.3设置安装目录
#.&onfigure--pref'rx=/usdloca/mpich
2.4编译
#make
2.5安装
#makeinstall
2.6改变目录
#mympich2—1.0.8/usr/local/mpich/install
2.7退出到root目录
#cd
2.8通过编辑.bashrc文件修改环境变量
#vim.bashrc
修改后的.bashrc文件如下:
#.bashrc
群Userspecificaliasesandfunctions
aliasrnl='rnl—i’
aliascp='cp—i7
aliasmv--'mv—i7
PATH=”SPATH:/usr/local/mpich/hin”#新增加的
#Sourceglobaldefinitions
if【-f/etc/bashrc】;then
./etc/bashrc
fi
2.9测试环境变量设置
#whichmpd
#whichmpicc
#which
mpiexec
#whichmpirun
2.10修刮X/etc/mpd.conf文件,内容为secretword=myword#、,i/etc/mpd.conf
设置文件读取权限和修改时间
#touch/etc/mpd.conf
#chmod600/etc/mpd.conf
2.11创建主机名称集合文件/root/mpd.hosts
#vimpa.hosts
文件内容如下:
stationl
station3
station6
station8
3测试
3.I本地测试
启动:
#mpd&
【1124455
观看启动机器:
#mpdtrace
stationl
退出:
#mpdallexit
3.2运行集群系统
社mpdboot—n4-fmpa.hosts
参数.n4指定了要起动的机器个数,-fmpd.hosts指定了通过mpd.hosts运行
#mpdtrace
stationl
station6
station3
station8
#mpdallexit
3.3测试运行MPICH的圆周率的程序
在软件的安装包里有圆周率计算的原代码icpi.c,先编译成可执行文件,
#cd/usr/local/mpich/install,examples/
mpiccicpi.e—oicpi
3.4集群测试
#mpdboot—n4-fmpd.hosts
启动这四台机器
#mpiexec—n4/usr/local/mpich/install/exampledicpi
用sam指定使用的进程数
Enterthenumberofintervals:f0quits)100000000piisapproximately3.1415926535901937。Erroris
阚一
Q黼
O.o【10I∞00000004006
wallclocktime=18.460739
Enmrthenumberofintervals:(oquits)10000
piisapproximately3.1415926544231239。ErrorisO.0c10D000008333307
wallclocktime=0.022534
Enterthenumberofintervals:(oquits)0
#mpdalle】【it
3.5单机测试
#edlusr/local/mpieh/install/exampled
#./icpi
Enterthenumberofintervals:foquitsll00000000
Piisapproximately3.1415926535902345,Erroris0.伽0∞O㈣4414
wallclocktime=73.898167
Enterthenumberofintervals:f0quits)10000
piisapproximately3.141592654423134l,ErrorisO.伽l00000008333410
wallclocktime=0.010941
测试结果表明:在intervals的值设为100000000,既精确值比较大时,群集的4进程并发运行时间是18.460739秒。单机单进程运行时间是73.898167秒,明显快很多,并行运算还是很有效果的。在intervals的值设为10000,既精确值比较小时,群集的4进程并发运行时间是0.022534秒,单机单进程运行时间是0.010941秒,这是因为并行运算过程中,参与运算的机器需要通过网络传递一些消息,如果计算量不大的话,花在了这上面的时间影响会比较明显。因而反不如单机的来得快。
4查错
4.1通过mpdcheck获得帮助信息
#mpdcheek-pc
.4.2查错
#mpdcheek-l
4.3通过mpd.hosts文件查错
#mpdeheck--fmpd.hosts
如果无错误
#mpdeheck-fmpd.hosts-ash
4.4对任意两台机器进行查错
Smfionl上:
#mpdeheek—s
返回主机名host和端13port
卵rverlisteningatINADD耻~NYon:stationl40782
station3上:
#mpdcheck-c172.17.2.140782
clientsuccessfullyrecvdackfrom∞rveP.aek_from_server_to_client
stationl上返回结果
∞rverhaseonnon<socket._socketobjectobjectat0xb7ffe35e>from(7172.17.2.3,’54438)
i弛rversuccessfullyrecvdm鲳fromclient:hello_from_clienLto_server
返回消息传递结果
4.5mpd查错
stationl上:
#mpd—e&
返回使用的端口
【1114065
【root@stationl一】#mpd_port=41563?
station3上:
#mpd-hstationl—p41563&
【115122
以上测试通过,集群系统就建成了。
5结束语
利用局域网和MPI可以构建由PC组成的廉价、实用且性能优良的并行计算机。文中利用普通Pc机在LintLx环境下构建了基于MPICH2的高性能计算集群系统,并对其进行了高性能测试。实验结果表明这种构建高性能计算集群系统的方法切实可行,不但可以节省计算时间,提高计算精度,而且可以解决单机无法完成的超大规模求解问题。并行计算使用多台计算机或者具有多个处理器的计算机来求解问题,从而为求解大规模复杂问题提供了可能。作为一个优秀的操作系统,Linux特别适合用来组建并行计算平台。
参考文献:
【1]WiUiamGmppandEwingLuskinMathematicsandComputerScienceDivisionArgonneNationalLaboratory.MPICH2的安装和使用指南文档[EB/OL],tip:l/tip.mcs.anl.gov/pub/mpi/mpich2一doe—install.pdf.
[2】徐巍,李玉榕.MPICH在PC集群系统中的运用阴.福建工程学院学报,2006,(4).
【31高飞,刘青昆,向文,黄丹.MPICH标准通信模式下消息传递机制的研究【J】.长春师范学院学报(自然科学版),2007,(10).【41庞丽萍,何飞跃,岳建辉等.并行文件系统集中式元数据管理高可用系统设计叨.计算机工程与科学,2004,26(11):87—88.
(上接第24页)然后将Query传递给IndexSearcher类进行搜索,最后将搜索结果以Hits类型返回。Hits类型为一链式存储结构的容器。
5结束语
本文中介绍的原理已经应用于郑州大学首个兀甲搜索引擎的建设,把郑州大学所有m服务器建立了索引并向全校师生提供FrP搜索服务。该兀P搜索引擎基于NCFFP和Lueene的二次开发利用,并将NCFTP和Lucene做了很好的衔接。由于NcYrP和Lucene都是开源组件,既降低了项目成本,提高了开发效率,又可以方便的进行扩展和完善,稍加修改即可应用于各种提供索引和检索的系统中去,具有很高的应用价值。不过该系统在某些方面仍有些不足,如分布式的信息采集,索引的删除矧翰彰等;方面,可以在数据规模,用户体验方面继续完善。
参考文献:
【11邱哲,符滔滔.开发自己的搜索引擎[M】.北京:人民邮电出版社.200r7.
【2J李刚,宋伟,邱哲.Ajax+Lucene构建搜索引擎[M】.北京:人民邮电出版社.2006.
【3lBruceEckel.ThinkinginJava[M].Prenticehall,2003.
【4】郭一平,向晖,王亮.基于Lucene的Ftp搜索引擎的设计们.图书情报工作,2006,50(4):122—125.
【5]ChuckCavaness.ProgrammingJakartaStruts[M].Oreilly&AssociatesIne.2004.
『6]ThomasH.Cormen,CharlesE.Leisemon,RonaldL.Rive
st,CliffordStein.IntroductiontoAlgorithm【M】.TheMITPress.2007.
(本文系郑州大学大学生创新性实验资助项目。项目编号:
2008CXSY086)