RedHat7.2+MPI+SSH科学集群安装配置指南



(作者:王忠) 
注意: 
本文版权属作者所有,希望转贴时保证本文的完整性。 

已经两年多没摸过mpi集群计算了,前几日应一朋友的邀请,重新拿起来装了装,发现在配置方面与以前略有不同了,主要的问题在于redhat从7.x开始采用xinetd取代inetd,采用ssh取代rsh,因此在linux缺省安装和mpich的默认编译条件下,集群机彼此之间无法正常连接。摸索了好一阵,才发现了这个问题,查了查mpich的手册,发现解决起来并不困难。这里把完整的安装过程整理在此,希望对集群爱好者们有所帮助。 

1.系统配置 
CPU --- P4 1.8G 
RAM --- RAMBUS 256M 
OS --- RedHat linux 7.2, 阳春白雪XP 
MPI --- mpich 1.2.3,源码下载 
网卡 --- 100M 

2.linux安装 
安装过程就不多说了。唯一需要注意的是安装时,要把SSH选为可信赖的服务。安装以后,应该保证各节点之间能够用ssh相互登录。每个节点的sshd都应该能正常提供服务。Redhat 7.x对各服务的控制其实是通过在ipchains里面对各个端口进行访问控制来实现的,而不是使用tcp-wrapper的hosts.allow和hosts.deny文件来进行控制。如果安装系统后,别的机器无法用ssh登录,则可以用ipchains -L命令查看ipchains rules,进行正确的配置,使得ssh服务正常工作。若你对系统安全不是太在乎,则可以使用ipchains -F命令将所有的规则清空。 

主机名:node1...noden 
● 修改/etc/hosts文件,将所有节点名称极其ip地址填入。例如: 
127.0.0.1 wz localhost.localdomain localhost 
192.168.0.1 node1 
192.168.0.2 node2 
...... 
每个节点都进行类似的配置。这样做的目的是使节点之间能够通过node1 ... noden的名称相互访问。你可以通过ping noden 或 ssh noden进行测试。 

● 修改(或创建)/etc/hosts.equiv文件 
将所有你允许访问本机进行mpi计算的机器名填入,一行一个机器名。这一步是为了使节点对其它的节点放权。 
例如,我的node1是我用于启动mpi集群计算的机器,其他的节点是参与计算者,在node1的/etc/hosts.equiv文件是这样的: 
node1 #给自己放权,这样在只有一台机器时也可以模拟并行计算环境 
node2 
...... 
noden 

在node2...noden的/etc/hosts.equiv文件: 
node1 #对node1放权 
node2 
...... 
noden 

● 修改~/.bash_profile文件 
首先决定一个用于启动集群计算的用户名,不提倡使用root进行集群计算。这里在每个节点上建立新用户mpiuser,他们的主目录都是/home/mpiuser,必须采用同样的密码,将来的计算程序必须放在相同的路径上。譬如你的程序为:fpi.f和a.out,则必须把a.out放在同样的路境内,比如~/mpirun/a.out,每个节点都是如此。 
修改~/.bash_profile文件,主要是加入下列几行脚本: 
export PATH=$PATH:/usr/local/mpich/bin 
export MPI_USEP4SSPORT=yes 
export MPI_P4SSPORT=22 
export P4_RSHCOMMAND=ssh 
这里我们预定了将来mpich的运行环境安装在目录/usr/local/mpich下面。其余的三个变量是用来通知mpi运行环境采用ssh来作为远程shell。 

linux的运行环境到此就配置完毕了。 

3.配置ssh 
(这一节可能讲的不是很清晰,或者有错误之处,因为我对ssh了解得不够。建议翻翻mpich的安装说明书。) 
以你设定的用于启动mpi计算的用户登录,运行ssh-keygen,这将生成一个私有/公开密钥对,分别存放在~/.ssh/identity和~/.ssh/identity.pub文件内。然后进行访问授权,运行: 
cp ~/.ssh/identity.pub ~/.ssh/authorized_keys 
chmod go-rwx ~/.ssh/authorized_keys 
ssh-agent $SHELL 
ssh-add 
在每个节点干一遍。 
试着在某一节点上登录其它节点,ssh noden,则在.ssh/下生成一个known_hosts2文件,里面放着访问该主机的密钥,把所有密钥收集起来,在各个节点上作同样的拷贝。这样做的目的是使各节点相互之间访问无需输入密码(我这么说可能是由问题的,请对ssh比较精通的来指正吧。其实不理睬该文件也是可以成功的)。 

4.下载、编译、安装mpich 1.2.3 
下载最新的mpich 1.2.3:ftp://ftp.mcs.anl.gov/pub/mpi/mpich.tar.gz。拷贝到一个临时目录下,我放在/root/install下了。 
用root用户登录进行编译。 
首先,用tar xvfz mpich.tar.gz解压。生成mpich-1.2.3目录。 
切换到mpich-1.2.3目录。 
运行预处理:./configure --prefix=/usr/local/mpich -rsh=ssh 
这里我们通知编译系统mpich的安装位置为/usr/local/mpich,运行环境的远程shell为ssh。 
编译:make 
安装:make install 
到/usr/local/mpich下面看一眼,应该把mpich系统文件都拷过来了。 
修改文件/usr/local/mpich/share/util/machines/machines.LINUX。我的是这个样子的: 
node1 
ndoe2:2 #该机2个CPU 
...... 
ndoen 
这一步是通知mpich运行环境都有那些节点可供集群计算,不一定每次任务所有节点都参与。 
每个节点都这样干一遍。 

5. 测试并行计算 
以设定的用户登录(我的是mpiuser)node1,将mpich-1.2.3/examples/fpi.f文件拷贝到~/mpirun/下,编译: 
mpif77 fpi.f,生成a.out文件,在每个节点上建立同样的目录,用命令sftp将a.out送到每个节点上,运行: 
mpirun -np 4 a.out 
这里采用4个CPU进行计算。进行ssh连接后,程序等待输入,这是可以在节点机上用命令: 
ps -A | grep fpi 
查看进程,应该能看到数个fpi进程,其中第一个是本机所执行的进程,其它的是异地进程镜像。在node1上输入一个整值50000000000,再次在各节点上执行 
ps -A | grep fpi 
可以发现计算时间在不断增长,表明计算的确是在多台主机上同时进行的。 
至此,整个安装配置过程结束。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值