订阅云计算RSS CSDN首页> 云计算

linux集群中MPI的并行计算环境简单配置

发表于2009-08-26 11:00| 次阅读| 来源csdn| 0 条评论| 作者

摘要:一、集群和Linux上的集群解决方案 集群计算机是指用一组联网的PC或工作站来搭建成的,提供比单个PC(节点)计算性能高得多的计算机。说其是计算机,其实是针对所提供出来的服务而言的,或者说是逻辑上来说的。集群计算机的主要优势就是成本,相同的计算能力下,其成本只有传

一、集群和Linux上的集群解决方案

集群计算机是指用一组联网的PC或工作站来搭建成的,提供比单个PC(节点)计算性能高得多的计算机。说其是计算机,其实是针对所提供出来的服务而言的,或者说是逻辑上来说的。集群计算机的主要优势就是成本,相同的计算能力下,其成本只有传统大型机的十分之一,在全球计算机TOP500中,集群计算机的比重越来越大,近两年的比重超过了80%。特别是对中小企事业应用,实验研究和教学有很大的竞争力。

集群系统(Cluster)主要解决下面几个问题:

1.高可靠性(HA)。利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。

2.高性能计算(HP)。充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,物理与化学分析等。

3.负载平衡。即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。

在实际应用中,最常见的情况是利用集群解决负载平衡问题,比如用于提供WWW服务。在这里主要展示如何使用LVS(Linux Virtial Server)来实现实用的WWW负载平衡集群系统

关于集群计算机的操作系统,在TOP500中现在主要的操作系统都有身影,但是应用最多的是LINUX操作系统。这首先利益于LINUX的开放源代码,使得其有很高的可制定性,可以根据不同的硬件和应用环境作出相应的修改,其次,LINUX也有很高的稳定性,而且不乏商业支持。

为了降低程序开发的难度和提高程序的可移植性,目前基于LINUX的集群计算环境主要是通过配置MPI(Message Passing Interface)环境可实现的。这也是目前比较成熟的应用模式。因此,本文主要讲解LINUX下的集群环境配置的要求和MPI的配置。

LINUX集群环境的配置主要有以下几个部分:

<!--[if !supportLists]-->1. <!--[endif]-->MPI并行计算环境的安装和配置

<!--[if !supportLists]-->2. <!--[endif]-->计算节点之间的无密码访问

<!--[if !supportLists]-->3. <!--[endif]-->NFS共享文件系统的配置

//

注:在集群配置过程中,MPI运行环境的安装和配置是必要的,至于计算节点之间的无密码访问和NFS共享,则是在运算效率和文件管理上对高性能计算提出的要求。一般来说,只要具有MPI运行环境可以运算并行计算。

二、linux集群中MPI的并行计算环境的简单配置

MPI的安装及简单测试

MPI有多种实现版本,如MPICH, CHIMP以及OPENMPI。其中MPICH是一种最重要的MPI实现,它可以从网上免费获得Linux和Windows版本。它的开发和MPI规范的制定是同步的,因此最能反映MPI的变化和发展,MPICH由此成为实现MPI的最成熟和最广泛使用的版本。本文安装的MPI软版本为MPICH-1.2.6。

安装步骤:

1、从网上下载MPICH压缩包(mpich.tar.gz)

2、解压:# tar zxvf mpich.tar.gz

3、进入解压后的目录: # cd mpich-1.2.6

4、配置: # ./configure –prefix=/usr/local/mpich

其中/usr/local/mpich为软件所安装的目录

5、编译 # make

6、安装 # make install

7、配置该软件的用户搜索路径

Root 用户下:修改/etc/profile 加入

PATH=$PATH:/usr/local/mpich/bin

MANPATH=$MANPATH:/usr/local/mpich/man

Export PATH MANPATH

普通用户下:修改~/.bash_profile 加入

export PATH=$PATH:/usr/local/mpich/bin

8、修改/usr/local/mpich/share/machines.LINUX文件,加入集群中可以用来做并行计算的主机名(八节点集群为例)

加入的内容为:

Local:4

Node11:4

Node22:4

(注:冒号后为节点的CPU数或者内核数)

9、MPI环境的简单测试

在服务器节点上,以mpich 自带的计算PI值的并行计算程序cpi对所搭建的集群环境做简单的测试。

步骤:

在/usr/local/mpich/example目录下

(1) 编译 # make cpi

(2) 启动并行计算 # mpirun –np N cpi (其中N 为节点机的个数)

可以看到PI值及误差和计算时间,说明环境搭建基本成功。至此,所组建的MPI集群基本成。

虽然现在主流的集群配置都是基于MPI的,但是由于MPI的标准和MPI实现的多样性,特别是商业应用领域中不同的商业封装的存在,在MPI环境的安装和配置过程中,要详细的阅读相关的帮助文件。以求正确的配置好MPI运行环境。

三、计算节点之间的无密码访问

这 一点主要是针对高性能计算来说的。在高性能计算中,计算任务被分割成并行的几个部分,而这几个部分之间也是有相互关联,根据计算任务的不同和任务分割的方 法的不同。计算节点之间的通信量也是不同的。这也是衡量和影响集群计算机性能的主要方面。从逻辑上讲,计算节点之间的无密码访问可以使计算进程在集群计算 机内自由跳跃,从而提高集群计算的效率。目前主要的访问机制有RSH和SSH,相对来说SSH的安全性更好些。关于这两种节点间访问机制的配置,网上有很多的教程,本文将简述SSH在节点之间的无密码访问。

实现原理

使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是

首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)

然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥

当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了

1.用用户anyone登录客户机器并在客户端机器上执行"ssh-keygen -t rsa"产生的密钥文件。


如果文件"~/.ssh/id_rsa"存在,会提示是否覆盖该文件,此时可选择"n"不覆盖该文件而使用已有的id_rsa文件;如果选择"y"则会重新生成"~/.ssh/id_rsa"文件,接下来会提示输入passphrase,回车确定使用空的passphrase,再次回车确认(这里也可以输出passphrase,相当于ssh时登录的密码)。然后会重新生成"~/.ssh/id_rsa"文件和"~/.ssh/id_rsa.pub"文件(结果如下)。

如果"~/.ssh/id_rsa"文件和"~/.ssh/id_rsa.pub"文件不存在则会自动创建新的"~/.ssh/id_rsa"文件和"~/.ssh/id_rsa.pub"文件,passphrase设置同上。

2、使用ssh登录到服务器,编辑服务器上"~/.ssh/authorized_keys"文件,将客户端机器上的"~/.ssh/id_rsa.pub"文件内容追加到"~/.ssh/authorized_keys"文件中。

此时会要求输入zhaoy在服务器上的登录密码,输入后即会将客户端机器上的"~/.ssh/id_rsa.pub"文件内容追加到服务器上的"~/.ssh/authorized_keys"文件中)

3.完成了密钥的生成和分发之后就可以进行无密码的SSH登陆了,当然在密钥的生成和分发过程中,有很多可控的参数。这一点要注意查看相关的MAN和使用GOOGLE来解决。

四、NFS共享文件系统的配置

配置NFS共享文件系统是因为在高性能计算过程中,各计算节点要频繁对任务进行数据的读取和存储。使用NFS一来可以提高I/O读写的效率,可以有针对性的提高NFS系统的可靠性。另外有一点需要注意,在配置计算环境时,要尽量使得与节点配置无关的文件处于NFS系统中,这可以提高管理效率,降低文件冗余。还有就是使文件系统在各个节点上有相同的路径。关于NFS的设置网上和书本中有很多。下面简单介绍一下。

<!--[if !supportLists]-->1. <!--[endif]-->服务器端的设定

服务器端的设定都是在/etc/exports这个文件中进行设定的,设定格式如下:

欲分享出去的目录 主机名称1或者IP1(参数1,参数2) 主机名称2或者IP2(参数3,参数4)
上面这个格式表示,同一个目录分享给两个不同的主机,但提供给这两台主机的权限和参数是不同的,所以分别设定两个主机得到的权限。

例如可以编辑/etc/exports为:

/tmp     *(rw,no_root_squash)

/home/public 192.168.0.*(rw)   *(ro)

/home/test  192.168.0.100(rw)

/home/linux  *.the9.com(rw,all_squash,anonuid=40,anongid=40)

设定好后可以使用以下命令启动NFS:

/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)

/etc/rc.d/init.d/nfs start

可以通过MAN命令来查看exports的相关参数。

<!--[if !supportLists]-->2. <!--[endif]-->客户端设定

mount nfs目录的方法:

mount -t nfs hostname(orIP):/directory /mount/point

具体例子:

Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs

关于mount和相关参数可以查看相关的MAN文件。

0
0
linux集群中MPI的并行计算环境简单配置