yzxlr

导航

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

7、guchenjie@126.com

 

 

posted on 2010-11-24 16:17  yzxlr  阅读(2386)  评论(1)    收藏  举报