概述
编写目的
本文档为大连理工大学软件学院体系结构与高性能计算实验室所编写的Ubuntu环境下MPICH2并行环境搭建手册,目的是为了详细记录MPICH2配置过程,方便系统管理与维护,为实验室积累学习资料。
本文档的预期读者为并行环境的搭建人员、系统管理员以及需要使用MPICH2环境的用户。
定义
MPI :Message Passing Interface,并行含数据标准
NFS :Network File System,网络文件系统。
SSH :Secure Shell Client
GCC :GNU Compiler Collection,GNU编译器套装
Putty :一个免费的Telnet/SSH客户端
系统结构说明
本文档所搭建的系统物理结构如下图所示,文中的说明均按照此结构进行。
注意:在给每个节点安装系统发的时候,请提供一个统一的用户名及密码,此文中使用cluster为统一用户名。方便之后的配置。同时,为每一个节点做好网络配置。过程如下:
首先配置IP:
sudo vi /etc/network/interfaces
配置静态IP地址
,要编辑的内容如下:
auto eth0 ##自动启用第一块网卡
ifconf eth0 inet static
address 192.168.0.30 ##IP地址
netmask 255.255.255.0 ##子网掩码
gateway 192.168.0.1 ##网关
然后配置DNS服务器:
sudo gedit /etc/resolv.conf
nameserver 192.168.3.2 #添加或者更改这一行
重启网络服务:
sudo /etc/init.d/networking restart
参考资料
[1] 王鹏 吕爽等. 并行计算应用及实战.机械工业出版社, 2009,1.
[2] Ubuntu社区,
并行环境搭建——主节点配置
配置主机名
在主节点(Main Node,也称Node0)上,按下图所示配置/etc/hosts。
图1 配置主机名
注意:对于环回地址127.0.0.1,请配置为localhost而不是主机名
安装NFS文件系统与共享目录
在终端窗口输入如下命令:
sudo apt-get install nfs-kernel-server
安装完成之后,可以使用在终端窗口下输入:
sudo mkdir /mirror
该命令会在根目录下创建一个/mirror的目录,该目录就是今后所有节点共享的目录,稍后我们会将MPICH2安装在该目录下,同时可以设置所有节点已启动便挂在该目录,这样,我们可以只在主节点上安装一次MPICH即可。
接下来需要修改该目录所属的用户及组,使用ls –l命令可以看到,刚才创建的/mirror目录属于root用户,需要将它的用户和组改为cluster。使用如下命令更改用户和组:
sudo chown cluster:cluster /mirror
接着,我们需要对NFS sever做一些配置。如下图所示
图1 配置NFS server
至此,主节点NFS server配置完毕。
提示:安装过程中如有需要可以使用sudo /etc/init.d/nfs-kernel-server restart命令来重启NFS服务。关于NFS server的更多配置,请参见:。
出现过的问题:在配置过程中出现过NFS服务无法正常启动的问题,表现为启动nfs-common服务failed,经查明,该问题是由于在安装nfs-kernel-server的时候由于网络原因一些包无法获取,导致nfs-common没有安装成功。解决的办法是换用合适的更新源。教育网下推荐中科大或者上交的更新源。
安装SSH服务
在终端窗口输入如下命令:
sudo apt-get install openssh-server openssh-client
安装完成之后,我们需要做一些配置使得这些节点之间用ssh登陆的时候不在需要密码。按如下操作:
mkdir
~/.ssh
cd ~/.ssh
ssh-keygen
–t dsa
系统会提示:
Generating
public/private dsa key pair.
Enter
file in which ti save the
key(/home/user/.ssh/id_dsa):
#直接按Enter
Enter
passphrase (empty for no passphrase):
#直接按Enter,不使用密码
Enter
same passphrase again:
#直接按Enter
Your identification
has been saved in
/home/user/.ssh/id_dsa.
Your
public key has been saved in
/home/usrer/.ssh/id_dsa.pub.
The
key fingerprint is :
至此,私钥id_dsa和公钥id_dsa.pub已经被成功的生成。接下来要使用该密钥进行访问授权。待所有节点系统安装完毕之后,将主节点下~/.ssh目录下的所有文件拷贝到其他的节点下:
scp –r
~/.ssh node1
scp –r
~/.ssh node2
scp –r
~/.ssh node3
scp –r
~/.ssh node4
之后,检查是否可以直接(不需要密码登陆到其他的节点):
ssh
node1
ssh
node2
ssh
node3
ssh
node4
如果不需要密码直接登陆其他节点,则表明配置成功。
安装MPICH2
首先安装GCC,在终端输入如下命令:
sudo apt-get
install build-essential
sudo
apt-get install autoconf
sudo
apt-get install automake
另外可以选择安装一些开发工具,例如调试使用的gdb等。
接下来,先从上下载MPICH2的安装包,然后将其上传到主节点的/mirror目录下(可以使用FTP的方式)。然后解压安装,在终端窗口输入以下命令:
cd
/mirror
mkidr
mpich2
tar
xvf mpich2-1.0.5p3.tar.gz
cd
mpich2-1.0.5p3
./configure
--prefix=/mirror/mpich2
make
sudo
make install
安装完成之后可以在/mirror下面看到MPICH2的安装目录:
接下来需要做的是配置环境变量,使用vi打开~/.bashrc,在文件末尾添加如下语句:
然后保存退出。接着需要配置/etc/environment文件使ssh能够找到MPICH2的安装目录。使用vi打开/etc/environment,在PATH环境变量中添加/mirror/mpich2/bin,效果如图所示:
至此,MPICH2的安装工作完成。可以输入以下命令测试MPICH2是否安装成功:
which
mpd
which
mpiexec
which
mpirun
如果安装正确,执行结果如下:
配置
首先,在cluster的家目录下创建mpd.hosts文件,命令如下:
vi
~/mpd.hosts
接着,将所有节点的名字写入,如下图所示:
保存退出。接着需要配置~/.mpd.conf文件,使用如下命令:
vi ~/.mpd.conf
在文件中写入如下语句:
secretword=something #something为任意字符串,所有节点都要设置相同的字符串
保存退出,接着,需要将~/.mpd.conf文件的权限设置为600,使用如下命令:
chmod 600
~/.mpd.conf
至此,MPD的配置工作完成。用户可以使用mpd &,mpdtrace和mpdallexit测试MPICH2是否正常工作。
并行环境搭建——客户端配置
安装NFS客户端与SSH
在每一个节点都需要安装nfs客户端与ssh,安装过程与主节点类似。使用如下命令:
sudo
apt-get install nfs-kernel-server #或者nfs-common
sudo
apt-get install openssh-server openssh-client
对于SSH,请参见主节点SSH配置一节的操作,如果配置成功,各节点之间访问应该都不需要密码。如果失败,可以重复生成私钥和公钥以及拷贝的操作。
对于NFS,客户节点需要做自动挂载主节点的/mirror目录。使用vi打开各节点的/etc/fstab文件,在文件末尾添加:
node0:/mirror /mirror nfs rw, async, auto, exec, nouser, suid
0 0
效果如图所示:
保存退出之后,重启系统,如果成功挂载/mirror则说明配置成功。
在成功挂载/mirror目录之后,最后需要做的就是环境变量配置,在~/.bashrc中添加如下语句:
至此,客户端配置完毕。
测试
首先,在每个节点单独使用mpd &命令测试,看服务是否能正常启动。接着,在主节点进行集群的测试。在主节点终端输入如下命令:
mpdboot
–n 5 –f ~/mpd.hosts
mpdtrace
若配置成功,则运行结果如下,系统会输出每个节点的名字:
出现过的问题:在测试过程中,经常出现mpd进程无法与某个节点建立连接或者无法通信的问题,出现这种问题一是要检查该节点单独启动mpd是否成功,如果成功,则问题一般出现在防火墙的配置上,可以使用如下命令关闭防火墙:
sudo
iptables –P INPUT ACCEPT
sudo iptables
–P OUTPUT ACCEPT
sudo ufw
disable
更多关于防火墙的设置,请读者自行查找相关资料。