RHEL5下利用MPICH2配置并行运算集群

来源 :光盘技术 | 被引量 : 0次 | 上传用户:yys68738464
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:MPICH是国内常用的集群计算消息传递系统。本文描述了MPI的基本概念及实现软件MPICH2,介绍了在Linux环境下如何构架基于MPICH的高性能计算集群系统的方法,给出了具体的步骤和基本配置过程。实验结果表明:在现有并行集群系统下能有效地利用现有计算机资源,大幅度提高计算效率,为一些复杂问题的求解提供可行方案。
  关键词:并行计算;MPI;MPICH;集群
  中图分类号:TP393.02 文献标识码:A
  
  Configure Parallel Computing Cluster by MPICH2 Based on RHEL5
  LI Jian,LUO Yuan-cheng
  (computer department,Chongqing Vocational Institute of Engineering,ChongQing 400037)
  Key words: parallel computing;MPI;MPICH;cluster
  
  随着工作站和PC机性能的提高和网络技术的发展,集群系统(Cluster)是近年来人们开始研究的一种新计算机系统,也称网络并行计算系统,是利用高速通讯网络将一组高性能工作站或PC机连接起来而形成的一种分布式并行计算系统。它通常采用消息传递(Message Passing)的方式进行并行计算。消息传递接口(MPI - Message Passing Interface) 作为并行编程模型的代表和事实上的标准, 已经在越来越多的集群高性能计算中得到了使用。
  MPI消息传递过程分为三个阶段:⑴消息装配,将发送数据从发送缓冲区中取出,加上消息信封等形成一个完整的消息;⑵消息传递,将装配好的消息从发送端传递到接收端;⑶消息拆卸,从接收到的消息中取出数据送入接收缓冲区。如图所示,整个传递过程可划分为三个层次:MPI层、内核层和网络接口层。MPI层处于整个传输的顶部,为用户提供一个透明通用的函数库,来完成用户程序的通信操作。内核层起到一个承上启下的作用,向上为MPI层提供socket接口函数,向下为网络接口程序准备skb数据空间。网络接口层与网络设备直接相连,处于传输的最底层,向上为内核层提供抽象的网络设备结构,屏蔽不同网络设备的区别,实现网络设备的统一管理。
  


  MPI是为开发基于消息传递模型的并行程序而制定的工业标准,其目的是为了提高并行程序的可移植性和易用性。参与MPI标准制定的人员来自欧美40多个组织,大部分主要的并行计算机制造商、大学研究所、政府实验室、工业组织等都投入到MPI标准化工作。有了统一的并行编程语言标准,并行计算环境下的应用软件及软件工具就都能够实现透明的移植,各个厂商就可以依据标准提供独具特色和优势的软件实现和软件支持,从而提高了并行处理的能力。
  MPI只是一个并行编程语言标准,要编写基于MPI的并行程序,还必须借助某一MPI具体实现。MPICH是Linux平台下最重要的一种MPI实现,是一个与MPI规范同步发展的版本。LAM(Local Area Multicomputer)是Linux平台下另一免费的MPI实现。它由Ohio州立大学开发,主要用于异构的网格计算并行系统。
  MPICH是可以免费从http://www-unix.mcs.anl.gov/mpi/mpich 取得,更为重要的是,MPICH是一个与MPI-1规范同步发展的版本,每当MPI推出新的版本,就会有相应的MPICH的实现版本。MPICH2是MPI(Message-Passing Interface)的一个应用实现,支持最新的MPI-2接口标准,是用于并行运算的工具,与之前版本相比MPICH2具备更加严谨和合理的结构,可移植性和效率更好,在程序设计语言上支持C/C++和Fortran。MPICH2的主页是http://www-unix.mcs.anl.gov/mpi/mpich2/index.htm,在这个页面上就能找到各平台最新版本MPICH2的下载地址,其中还包括源代码。最新源代码链接的地址是ftp://ftp.mcs.anl.gov/pub/mpi/mpich2-1.0.8.tar.gz。在ftp://ftp.mcs.anl.gov/pub/mpi下还有MPICH2的安装和使用指南文档,主要有三个,分别是User's Guide,Installer's Guide和Windows Developer's Guide。
  
  1 准备工作:
  
  1.1设置IP,更改主机名为station1,station3,station6,station8
  


  以四台pc为例,为了方便,分别更改了四台机器的主机名为station1,station3,station6,station8,以第一台为例:
  hostname station1
  这只是临时更改主机名,要想永久更改主机名,编辑下面文件:
  vim /etc/sysconfig/network
  编辑内容为(最后一行就是要改的主机名):
  NETWORKING=yes
  NETWORKING_IPV6=no
  HOSTNAME=station1
  更改/etc/hosts文件
  #vi /etc/hosts 打开hosts文件,更改如下:
  127.0.0.1 localhost.localdomain localhost
  172.17.2.1 station1
  172.17.2.3 station3
  172.17.2.6 station6
  172.17.2.8 station8
  1.2 创建SSH信任连接(在root目录下)
  1.2.1 在station1生成SSH秘钥对
   #ssh-keygen -t rsa 一路回车即可
   产生.ssh文件,
   #ls -a 查看是否有.ssh文件夹
  1.2.2进入.ssh目录
   #cd .ssh
  1.2.3 生成authorized_keys文件
   #cp id_rsa.pub authorized_keys
  1.2.4 退出到root目录
   #cd ..
  1.2.5 建立本身的信任连接
   #ssh station1 按提示输入yes
  1.2.6 设置station3(station3的root目录下)
   #ssh-keygen -t rsa 生成.ssh文件夹
   #scp 172.17.2.1:/root/.ssh/* /root/.ssh拷贝station1上的.ssh文件夹覆盖本地的
   #scp 172.17.2.1:/etc/hosts /etc/hosts拷贝station1上的hosts文件覆盖本地的
   #ssh station1提示处输入yes回车
  设置station6,station8的方法与station3相同
  1.2.7 确认四台机器的信任连接已建立
   对每个节点执行:
   #ssh station1
   #ssh station3
   #ssh station6
   #ssh station8
  在提示处输入yes回车,最后确定无需输入密码并且没有任何提示信息即可登陆("Last login:时间日期"提示信息除外)
  
  2 安装mpich2
  
  2.1到MPICH官方网站下载源代码包,解压缩
  #tar -zxvf mpich2-1.0.8.tar.gz
  2.2进入mpich2解压目录
   #cd mpich2-1.0.8
  2.3设置安装目录
   #./configure --prefix=/usr/loca/mpich
  2.4编译
  #make
  2.5安装
  #make install
  2.6改变目录
  #mv mpich2-1.0.8 /usr/local/mpich/install
  2.7退出到root目录
  #cd
  2.8通过编辑.bashrc文件修改环境变量
   #vim .bashrc
   修改后的.bashrc文件如下:
   # .bashrc
   # User specific aliases and functions
   alias rm='rm -i'
   alias cp='cp -i'
   alias mv='mv -i'
   PATH="$PATH:/usr/local/mpich/bin" #新增加的
   #Source global definitions
   if [ -f /etc/bashrc ]; then
  . /etc/bashrc
   fi
  2.9测试环境变量设置
  #which mpd
  #which mpicc
  #which mpiexec
  #which mpirun
  2.10修改/etc/mpd.conf文件,内容为secretword=myword
   #vi /etc/mpd.conf
   设置文件读取权限和修改时间
   #touch /etc/mpd.conf
   #chmod 600 /etc/mpd.conf
  2.11创建主机名称集合文件/root/mpd.hosts
   #vi mpd.hosts
   文件内容如下:
   station1
  station3
  station6
  station8
  
  3 测试
  
  3.1本地测试
  启动:
  #mpd &
  [1]24455
  观看启动机器:
  #mpdtrace
  station1
  退出:
  #mpdallexit
  3.2运行集群系统
  #mpdboot -n 4 -f mpd.hosts
  参数-n 4指定了要起动的机器个数,-f mpd.hosts指定了通过mpd.hosts运行
  #mpdtrace
  station1
  station6
  station3
  station8
  #mpdallexit
  3.3测试运行MPICH的圆周率的程序
  在软件的安装包里有圆周率计算的原代码icpi.c,先编译成可执行文件
  #cd /usr/local/mpich/install/examples/
  mpicc icpi.c -o icpi
  3.4集群测试
  #mpdboot -n 4 -f mpd.hosts
  启动这四台机器
  #mpiexec -n 4 /usr/local/mpich/install/examples/icpi
  用num指定使用的进程数
  Enter the number of intervals: (0 quits) 100000000
  pi is approximately 3.1415926535901937, Error is 0.0000000000004006
  wall clock time = 18.460739
  Enter the number of intervals: (0 quits) 10000
  pi is approximately 3.1415926544231239, Error is 0.0000000008333307
  wall clock time = 0.022534
  Enter the number of intervals: (0 quits) 0
  #mpdallexit
  3.5单机测试
  #cd /usr/local/mpich/install/examples/
  #./icpi
  Enter the number of intervals: (0 quits) 100000000
  pi is approximately 3.1415926535902345, Error is 0.0000000000004414
  wall clock time = 73.898167
  Enter the number of intervals: (0 quits) 10000
  pi is approximately 3.1415926544231341, Error is 0.0000000008333410
  wall clock time = 0.010941
  测试结果表明:在intervals的值设为100000000,既精确值比较大时,群集的4进程并发运行时间是18.460739秒,单机单进程运行时间是73.898167秒,明显快很多,并行运算还是很有效果的。在intervals的值设为10000,既精确值比较小时,群集的4进程并发运行时间是0.022534秒,单机单进程运行时间是0.010941秒,这是因为并行运算过程中,参与运算的机器需要通过网络传递一些消息,如果计算量不大的话,花在了这上面的时间影响会比较明显,因而反不如单机的来得快。
  
  4 查错
  
  4.1通过mpdcheck获得帮助信息
  #mpdcheck -pc
  4.2查错
  #mpdcheck -l
  4.3通过mpd.hosts文件查错
  #mpdcheck -f mpd.hosts
   如果无错误
   #mpdcheck -f mpd.hosts -ssh
  4.4对任意两台机器进行查错
  Station1上:
  #mpdcheck -s
  返回主机名host和端口port
  server listening at INADDR_ANY on: station1 40782
   station3上:
  # mpdcheck -c 172.17.2.1 40782
  client successfully recvd ack from server: ack_from_server _to_client
  station1 上返回结果
  server has conn on from ('172.17.2.3', 54438)
  server successfully recvd msg from client: hello_from_client_to_server
  返回消息传递结果
  4.5mpd查错
  station1上:
  #mpd -e &
  返回使用的端口
  [1]14065
  [root@station1 ~]# mpd_port=41563
  station3上:
  # mpd -h station1 -p 41563 &
  [1]5122
  以上测试通过,集群系统就建成了。
  
  5 结束语
  
  利用局域网和MPI可以构建由PC组成的廉价、实用且性能优良的并行计算机。文中利用普通PC机在Linux环境下构建了基于MPICH2的高性能计算集群系统,并对其进行了高性能测试。实验结果表明这种构建高性能计算集群系统的方法切实可行,不但可以节省计算时间,提高计算精度,而且可以解决单机无法完成的超大规模求解问题。并行计算使用多台计算机或者具有多个处理器的计算机来求解问题,从而为求解大规模复杂问题提供了可能。作为一个优秀的操作系统,Linux特别适合用来组建并行计算平台。
  
  参考文献:
  [1]William Gropp and Ewing Lusk in Mathematics and Computer Science Division Argonne National Laboratory. MPICH2的安装和使用指南文档[EB/OL],ftp://ftp.mcs.anl.gov/pub/mpi/ mpich2-doc-install.pdf.
  [2]徐巍,李玉榕.MPICH在PC集群系统中的运用[J].福建工程学院学报,2006,(4).
  [3]高飞,刘青昆,向文,黄丹.MPICH标准通信模式下消息传递机制的研究[J].长春师范学院学报(自然科学版),2007,(10).
  [4]庞丽萍,何飞跃,岳建辉等.并行文件系统集中式元数据管理高可用系统设计[J].计算机工程与科学,2004, 26 (11): 87-88.
其他文献
小李:第一天我提早10分钟到了人力资源部,被告知“请稍坐,一会儿有人带你转转”。一小时后,我被领到了一间会议室。几分钟后,里面的面试者发现我不是来应聘的,而是新员工。一阵道歉后,我被领去见我的主管。主管大声地叫来一个文员,让他带我转转。在我被介绍给其他员工的同时,那个文员,一直在抱怨着那个主管的脾气有多坏。吃午饭时,我问能不能请求调到别的部门去,他们说6个月后才能调动。我想我是不是该趁早换个工作了
期刊
领导混合领导风格企业持续卓越    以往人们总是期待领导者如神鬼战士一般十项全能,能扭转企业陨落的命运。但是,竞争加剧,神鬼战士退位,取而代之的能配合特定的形势需求,调整本身领导特质的新时代领导人。他们适时适地通过领导技巧及积极作为,让领导能力更上一层楼,让企业持续卓越。  既往人们总将“领导能力”视为与生俱来的天分,仿佛独行侠(Lone Ranger)的英雄人物一般,融合了勇气、魅力,甚至还带点
期刊
摘 要:SSL服务是目前互联网上常用的安全信息传输服务,尤其在电子商务、电子银行中更是普遍采用,本文介绍了在Windows环境下配置SSL服务的步骤。  关键词:SSL;服务器;数字证书  中图分类号:TP368.5文献标识码:A    How to Configure SSL Servers  CHEN Gang  (Huaiyin engineering,Jiangsu Huaian 2230
期刊
摘 要:伴随着电脑软硬件技术及网络技术的发展,计算机病毒技术、黑客技术及木马技术也取得了很大的发展,这就使得电脑系统随时都有可能出现故障,甚至于瘫痪,这将极大地影响到我们学习、生活、娱乐、办公的效率及质量!WinPE电脑系统维护基本上都是在图形化的窗口下进行,通过"傻瓜式"的点击几下鼠标就可以进行电脑系统的维护操作。  关键词:WinPE;系统;维护  中图分类号:TP393.08    WinP
期刊
在上一期《校园招聘:一场企业与人才的营销战》的专题中,我们给企业提供了如何进行成功校园招聘的理念与实务,让企业有了一个好的开始,可是在人才流动越来越频繁的今天,也许如何留住企业辛辛苦苦招来的人才更重要。  社会新鲜人是企业的新鲜血液,是保持企业活力的源泉,不仅可以解决企业人才缺乏的问题,还能保证企业的长久发展。据统计,全球500强每年都要吸纳几千名社会新鲜人进入企业,有时甚至不惜以高薪提前从名校挖
期刊
语境做好时间管理,不如改正工作习惯    要做好时间管理,与其花时间烦恼如何拟定规划,把最多的工作塞进有限的时间表里,还不如彻底检讨、修正你的工作习惯或方式,减少时间的浪费。  时间管理的第一守则,就是“Do the right thing right.”(用对的方法做对的事情)。  但是多数人只做到前半段,却忘了后半段。翻开许多谈论时间管理的书籍或文章,内容一定是告诉你,如何依据事情的轻重缓急,
期刊
摘 要:介绍基于CAN总线的船舶监控系统的基本结构。重点论述智能测控单元CAN通讯接口设计、CAN控制器外围硬件电路和CAN通信软件的实现。  关键词:现场总线;控制局域网;船舶监控系统;应用  中图分类号:TP273文献标识码:A    The CAN Fieldbus Technology Application in Ship Monitoring System  MA Li,XU Shan
期刊
摘 要:在系统上有许多类型的侵袭,我们一般把侵袭分为三种基本类型:入侵、拒绝服务(DOS)和盗窃信息。网络诞生以来遭受攻击事件不断发生,全球许多著名网站都遭到不名身份的黑客攻击,本文针对几种常见的DOS攻击提出在LINUX环境下的一些防御看法。  关键词:拒绝服务;攻击原理;Linux环境;防御  中图分类号:TP393.08 文献标识码:A    DOS attack principle and
期刊
摘 要:随着Red Hat Linux的迅速发展,Linux系统安全中的可信计算问题显得日益重要,虽然Linux kernel从版本2.6.13开始已经包含了对可信计算的支持,并已有许多Linux项目开始支持可信计算。但可信计算包括的:认证密钥、安全输入输出、内存屏蔽/受保护执行、封装存储、远程证明概念这5个核心技术在一个完全可信的系统中仍是必须的。研究和应用可信计算技术在系统安全方面具有重要意义
期刊
摘 要:针对数量庞大的教育网FTP资源检索困难的问题,提出一种基于开源软件NCFTP和Lucene实现对教育网FTP服务器进行索引并提供检索服务的FTP搜索引擎的设计及实现的方法。用开源软件NCFTP从FTP服务器上抓取FTP站点信息,并把抓取的信息转化为Lucene数据接口规定的文档(Document)类型,作为Lucene的数据源,并且采用基于字典的正向最大匹配中文分词法进行索引的建立及信息的
期刊