MPI2 集群 ubuntu9.04 安装
【原创】MPICH2集群搭建--Ubuntu9.04
----By LR
1、背景及前期配置
1.1、文档目的
本文档旨在为并行环境的搭建人员、系统管理员以及需要使用MPICH2环境的用户提供一个参考。
1.2、一些定义
MPI :Message Passing Interface,并行数据标准
NFS :Network File System,网络文件系统。
SSH :Secure Shell Client
GCC :GNU Compiler Collection,GNU编译器套装
XManager :一个免费的,带有X协议的Telnet/SSH客户端
1.3、系统结构说明
本文档所搭建的系统物理结构如下图所示,文中的说明均按照此结构进行。
NOTES:在给每个节点安装系统发的时候,请提供一个统一的用户名及密码,方便之后的配置,本文档使用cluster为统一用户名。(本文仅使用两台电脑作为演示,Node1和Node2,使用Node1作为主节点,其他的以此可自行扩展)。
同时为每一个节点做好网络配置。过程如下:
配置IP:
sudo vi /etc/network/interfaces
配置静态IP地址,要编辑的内容如下:
auto eth0 ##自动启用第一块网卡
ifconf eth0 inet static
address 192.168.0.11 ##IP地址
netmask 255.255.255.0 ##子网掩码
gateway 192.168.0.1 ##网关
然后配置DNS服务器:
sudo gedit /etc/resolv.conf
nameserver 202.118.66.6 #添加或者更改这一行(根据自己的DNS)
重启网络服务:
sudo /etc/init.d/networkingrestart
2、并行环境搭建
2.1配置主机(node1)
sudo vi /etc/hosts:
图1 配置主机名
注意:对于环回地址127.0.0.1,请配置为localhost而不是主机名
2.2安装NFS文件系统
在主机和从机都需要执行以下命令。
终端窗口输入命令:
sudo apt-get installnfs-kernel-server nfs-common
安装完成之后,可以使用在终端窗口下输入:
sudo mkdir /mirror
该命令会在根目录下创建一个/mirror的目录,该目录就是今后所有节点共享的目录,稍后我们会将MPICH2安装在该目录下,同时可以设置所有节点已启动便挂在该目录,这样,我们可以只在主节点上安装一次MPICH即可(本文采用的是只在主节点安装一次的方法)。
接下来需要修改该目录所属的用户及组,使用ls –l命令可以看到,
刚才创建的/mirror目录属于root用户,需要将它的用户和组改为cluster。使用如下命令更改用户和组:
sudo chown cluster:cluster/mirror
接着,我们需要对主机上的NFS sever做一些配置。
sudovi /etc/exports :
也可以使用此命令代替之:
sudo echo/mirror *(rw,sync) >> /etc/exports
至此,主节点NFS server配置完毕。
提 示 : 安 装 过 程 中 如 有 需 要 可 以 使 用
sudo
/etc/init.d/nfs-kernel-serverrestart命令来重启NFS服务。
出现过的问题:在配置过程中出现过NFS服务无法正常启动的问题,表现为启动nfs-common服务failed,经查明,该问题是由于在安装 nfs-kernel-server的时候由于网络原因一些包无法获取,导致nfs-common没有安装成功。解决的办法是换用合适的更新源。教育网下推荐使用官方更新源或者是下载源代码安装。
2.3 挂载共享目录
将node1共享目录/mirror 挂载到各个节点的目录/mirror
使用如下命令:
2.4安装SSH服务
在终端窗口输入如下命令:
sudo apt-get install ssh
安装完成之后,我们需要做一些配置使得这些节点之间用ssh登陆的时候不再需要密码。按如下操作:
在两台节点上分别执行
ssh-keygen -t rsa
一路回车即可产生.ssh文件
在node1节点上
进入.ssh目录:#cd .ssh
生成authorized_keys文件:
cat id_rsa.pub >>authorized_keys
scp authorized_keys node2:/home/cluster/.ssh/
然后,在node2节点上
进入.ssh目录:#cd .ssh
生成authorized_keys文件:
cat id_rsa.pub >>authorized_keys
scp authorized_keys node1:/home/cluster/.ssh/
至此,两个节点的信任连接就配置好了,两节点之间用ssh登陆的时候不再需要密码。注意要关闭防火墙:
sudo iptables –P INPUT ACCEPT
sudo iptables –P OUTPUT ACCEPT
sudo ufw disable
2.5安装MPICH2
首先安装GCC,在终端输入如下命令:
sudo apt-get installbuild-essential autoconf automake
另外可以选择安装一些开发工具,例如调试使用的gdb等。
接下来,先从http://www-unix.mcs.anl.gov/mpi/mpich上下载MPICH2的安装包(mpich2- 1.0.5p3.tar.gz),然后将其上传到主节点的/mirror目录下(可以使用FTP的方式)。然后解压安装,在终端窗口输入以下命令:
cd /mirror
mkidr mpich2
tar zxvf mpich2- 1.0.5p3.tar.gz
cd mpich2 -1.0.5p3
./configure --prefix=/mirror/mpich2
make (需要等待一段时间)
sudo make install
安装完成之后可以在/mirror下面看到MPICH2的安装目录:
2.6 配置环境变量
使用 vi打开~/.bashrc,在文件末尾添加如下语句:
exportPATH=/mirror/mpich2/bin:$PATH
export PATH
LD_LIBRARY_PATH="/mirror/mpich2/lib:$LD_LIBRARY_PATH"
exportLD_LIBRARY_PATH
接着需要配置/etc/environment文件使ssh能够找到 MPICH2的安装目录。使用 vi打开/etc/environment,在PATH环境变量中添加/mirror/mpich2/bin,效果如图所:
至此,MPICH2的安装工作完成。重启ubuntu后可以输入以下命令测试MPICH2是否安装成功:
which mpd
which mpiexec
which mpirun
如果安装正确,执行结果如下:
2.7 MPD配置
首先,在cluster的家目录下创建mpd.hosts文件,
命令如下:
vi ~/mpd.hosts
将所有节点的名字写入:
node1
node2
接着需要配置~/.mpd.conf文件,(在所有的机器上),使用如下命令:
echosecretword=something >> ~/.mpd.conf
将~/.mpd.conf文件的权限设置为600
chmod600 .mpd.conf
同时,还要在配置/etc/mpd.conf
Secretword=something
至此,MPD的配置工作完成。
用户可以使用mpd &,mpdtrace和mpdallexit测试MPICH2是否正常工作。
3、并行环境搭建——客户端配置
3.1安装NFS客户端与SSH
在每一个节点都需要安装nfs客户端与ssh,安装过程与主节点类似。使用如下命令:
sudo apt-get installnfs-kernel-server nfs-common
sudo apt-get install ssh
对于SSH,请参见主节点SSH配置一节的操作,如果配置成功,各节点之间访问应该都不需要密码。如果失败,可以重复生成私钥和公钥以及拷贝的操作。
对于NFS,客户节点需要做自动挂载主节点的/mirror目录。使用vi打开各节点的/etc/fstab文件,在文件末尾添加:
node0:/mirror /mirror nfs rw,async, auto, exec, nouser, suid 0 0
效果如图所示:
保存退出之后,重启系统,如果成功挂载/mirror则说明配置成功。
在成功挂载/mirror目录之后,最后需要做的就是环境变量配置,在 ~/.bashrc中添加如下语句:
export PATH=/mirror/mpich2/bin:$PATH
export PATH
LD_LIBRARY_PATH="/mirror/mpich2/lib:$LD_LIBRARY_PATH"
exportLD_LIBRARY_PATH
至此,客户端配置完毕。
3.2 测试mpd
首先,在每个节点单独使用mpd &命令测试,看服务是否能正常启动。接着,在主节点进行集群的测试。在主节点终端输入如下命令:
mpdboot –n 2–f ~/mpd.hosts(注释:此举为启动各个节点)
mpdtrace
若配置成功,则运行结果如下,系统会输出每个节点的名字:
此警告可以忽略掉。
出现过的问题:在测试过程中,经常出现mpd进程无法与某个节点建立连接或者无法通信的问题,出现这种问题一是要检查该节点单独启动mpd是否成功,如果成功,则问题一般出现在防火墙的配置上, 可以使用如下命令关闭防火墙:
sudo iptables –P INPUT ACCEPT
sudo iptables –P OUTPUT ACCEPT
sudo ufw disable
3.3MPICH2的使用
用icpi做测试:
首先启动运算集群:
#mpdboot -n 2 -f ~/mpd.hosts
-n表示要启动的机器个数,一般是不大于mpd.hosts文件中的机器数,比如本文中的例子就是两台机器。这样,列表中的机器就会启动其本机上的mpd管理器。
然后,就可以开始运行MPI程序,进行运算了,同windows下一样,程序需要放在每台机器上的相同位置(如果用NFS就只需在一台机器上放置程序,其他机器作映射就行),比如都是程序
/home/mpi/mpich2/examples/cpi,在运行mpdboot 的结点机器上:
/home/mpi/mpich2/examples/cpi/#mpiccicpi.c –o icpi(注释:编译icpi)
#mpiexec -n 4/home/mpi/mpich2/examples/cpi
-n表示要启动的进程个数。
在node1上测试4个进程,可以看到进程平均分配到两个节点上运行:
在node2上测试5个进程如下图,可以看见进程随机分配在两个节点运行:
Mpd在运行过程中,可以通过mpdtrace显示参与计算的机器名,
mpdtrace –l 显示机器名以及其端口。
4.致谢
本文是参照以下各个站点提供的资料,并通过自己的实践而整理的,在此给予诚挚的感谢。祝愿有兴趣的各位同学成功,有问题可以与我交流,我的邮箱yangzxlr@gmail.com。
5、参考资料
1、http://wiki.ubuntu.org.cn/UbuntuHelp:MPICHCluster
2、http://blog.chinaunix.net/u3/104586/showart_2090851.html
3、https://help.ubuntu.com/community/MpichCluster
4、https://wiki.edubuntu.org/MpichCluster
5、MPI下载地址:http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/
6、Xmanager下载地址:
http://www.onlinedown.net/Soft/32684.htm#down
浙公网安备 33010602011771号