fedora20上搭建MPI集群

来源:互联网 发布:必赢客软件 编辑:程序博客网 时间:2024/06/06 07:30

因为计算需要,打算在几台fedora系统的服务器上搭建MPI集群,但是网上很多的搭建资料比较旧,所以在这里记录下我的搭建过程,希望给大家一点参考。

配置服务器,使它们可以相互识别


(1) 设置IP,更改主机名为node1,node2,node3,node4,如图所示2-1所示:

Pc

主机名

IP

节点1

Node1

192.168.0.164

节点2

Node2

192.168.0.145

节点3

Node3

192.168.0.151

节点4

Node4

192.168.0.118


以四台pc为例,为了方便,分别更改了四台机器的主机名为node1,node2,node3,node4,以第一台为例:得网络配置

(2)hostname node1  临时更改主机名,使得在当前系统马上实现。

(3)vim /etc/sysconfig/network  永久更改主机名,使得下次启动系统时使用

编辑内容为(最后一行就是要改的主机名):

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=node1

(4)更改/etc/hosts文件

#vi /etc/hosts   打开hosts文件,更改如下:

127.0.0.1 localhost.localdomain localhost

192.168.0.164 node1

192.168.0.145 node2

192.168.0.151 node3

192.168.0.118 node4

 

创建SSH信任连接(在root目录下)

(1)在station1生成SSH秘钥对

#ssh-keygen -t dsa   产生.ssh文件,

#ls -a   查看是否有.ssh文件夹

(2)进入.ssh目录
   #cd .ssh

(3)生成authorized_keys文件

#mv id_rsa.pub authorized_keys 

(4)建立本身的信任连接

#ssh node1     按提示输入yes

(5)分别更改其他节点的hostname,/etc/sysconfig/network

(6)将生成authorized_keys文件scp给其他的节点

#scp  -r  ~/.ssh node2:/root/ 拷贝node1上的.ssh文件夹scp给node2 

#scp /etc/hosts node2:/etc/  拷贝node1上的hosts文件scp到node2上

设置node3,node4的方法与node2相同

(7)确认四台机器的信任连接已建立
   对每个节点执行:

#ssh node1

#ssh node2

#ssh node3

#ssh node4

在提示处输入yes回车,最后确定无需输入密码并且没有任何提示信息即可登陆("Last login:时间日期"提示信息除外)

 

 安装MPICH2

在下载安装MPICH之前,先确定计算机上已经安装gcc,g++,以及Fertran,以fedora为例,安装步骤如下:

1.yum install gcc

2.yum install gcc-c++

3.yum install gcc-gfortran

(有人说需要 yum install compat-gcc-34-g77,但是如果只安装这个就会在下面的编译中出现问题,Fortran77与Fortran90不兼容错误,但是只需要安装gfortran就可以了,因为gfortran可以编译Fortran77和Fortran90)

下面正式安装MPICH2

(1)到MPICH官方网站下载源代码包,解压缩

#tar -zxvf mpich3-1-3.tar.gz

(2)进入mpich2解压目录

#cd mpich3-1-3

(3)编译并且指定安装目录

#./configure --prefix=/usr/local/mpi

(如果编译不通过,请仔细检查错误信息,确保依赖的包都下载安装成功)

(4)编译

#make

(5)安装

#make install

(6)进入hydra目录,安装hydra

注意新版的MPICH用的是hydra而不是mpd,网上很多帖子教如何不用hydra而用mpd,但其实hydra的安装是非常简单的,不需要绕远路去装mpd

#cd src/pm/hydra

#./configure --prefix=/usr/local/mpi

#make && make install

(除了目录名不一样,跟mpd一样只需要简单的编译就好了)

(7)退出到root目录

#cd

(8)配置hydra

配置hydra让他能够正常工作。首先hydra需要一个hosts文件,需要告诉hydra都有那些节点可用,每个节点都有几个CPU。我们在/etc下建立一个hydra目录,然后建立一个hosts文件(当然也可以建在别的地方):

$ sudo mkdir /etc/hydra
$ sudo vi /etc/hydra/hosts

文件的结构如下:

# Some Comments
MainNode:8 # other comments
Node1:2
Node2:2

每行中由冒号(:)分隔的前半部分表示节点,可以使用节点名也可以使用IP地址,貌似不区分大小写;后半部分表示可用的CPU数量。注释用“#”前导。根据你的实际情况撰写hosts文件。


(9)通过编辑.bashrc文件修改环境变量,还有,我们需要告诉hydra hosts文件的位置

#vim .bashrc

在.bashrc文件添加几句话

# .bashrc

# User specific aliases and functions

 

    alias rm='rm -i'

    alias cp='cp -i'

    alias mv='mv -i'

  export  PATH="/usr/local/mpi/bin:$PATH"   #新增加的

  export HYDRA_HOST_FILE="/etc/hydra/hosts"   #新增加的,为hydra建立寻找路径

#Source global definitions

   if [ -f /etc/bashrc ]; then

  . /etc/bashrc

   fi

(10)测试环境变量设置

#which mpicc

#which mpiexec

#which mpirun

(没有mpd了,所以不用测试)

大功告成!至此MPI环境的搭建就结束了,下面我们来测试一下

测试

 测试运行MPICH的圆周率的程序

在软件的安装包里有圆周率计算的原代码icpi.c,先编译成可执行文件

#cd /usr/local/mpich/install/examples/

mpicc  cpi.c -o cpi

然后再执行

mpirun -n 4 ./cpi

 -n指定了有几个进程,./别少加,它是指在当前路径下的意思


这下放心了,心里还有点小激动,确实是可以运行了,现在可以写自己的MPI程序了!

0 0