ubuntu12.04下用MPICH3.1搭建并行计算平台

时间:2022-10-21 06:36:39
全文参考:MPI2-UBUNTU9.04-安装集群.PDF

1 修改hosts文件,每个node计算机都要改

$sudo gedit /etc/hosts:
127.0.0.1 localhost
192.168.1.1    node1          server
192.168.1.2    node2

2. 安装NFS文件系统和共享目录
在主机和从机都需要执行以下命令
sudo  apt-get install nfs-kernel-server nfs-common
根目录下:

sudo  mkdir  /mirror
sudo  chown  node:node  /mirror

主节点:

sudo gedit /etc/exports :
最后两行添加:

/mirror node1(rw,sync)
/mirror  node2(rw,sync)
然后

$sudo /etc/init.d/nfs-kernel-server restart

从节点:

$sudo mount node1:/mirror /mirror   #这里是命令行挂载共享目录

或 : 
经过第二步,/mirror文件的文件在节点间能够共享权限,可相互编辑相互更改和删除。sudo gedit /etc/fstab 在末尾添加
node0:/mirror /mirror nfs rw, async, auto, exec, nouser, suid 0 0   #
#这里是在配置文件下挂载共享目录

3. ssh无密码互通,每个node计算机都要执行
$ssh-keygen-t rsa    #生成公钥和密钥

一路回车生成.ssh/id_rsa等文件
node1节点上
cd .ssh     cat id_rsa.pub >>authorized_keys
authorized_keys发送到node2节点的.ssh文件夹(可通过文件共享实现)或如下:
scp authorized_keys node2:/home/cluster/.ssh   #cluster指cluster@node1:/mirror/mpich-3.1/examples$
ssh-add~/.ssh/id_rsa         #这一步很重要,以前实现ssh互访是不需要这一步的
node2
id_rsa.pub内容复制到copy过来的authorized_keys

scp authorized_keys node1:/home/cluster/.ssh

ssh-add~/.ssh/id_rsa       #这一步很重要
完毕。


实现ssh无密码访问需要关闭防火墙:sudo ufw disable

4. mpich3的安装与配置到网站http://www.openssl.org/source/下载安装包***.tar.gzcd /mirrormkidr mpich3tar zxvf mpich-3.1.tar.gz./configure --prefix=/mirror/mpich3 --disable-f77 --disable-fc 2>&1 | tee c.txt   --disable-f77 --disable-fc是为了禁止fortran,否则安装会出问题,会导致MPICH2安装不完全而出错,所以这里建议不用的选上。  make 2>&1 | tee m.txt   make install 2>&1 | tee mi.txt

sudo gedit .bashrc        #配置环境

在最后面添加:export PATH=/mirror/mpich3/bin:$PATH

souce  .bashrc  

配置多台集群需要创建machinefile文档 (可在任意目录下),文档内容为各台计算机的节点名,一行一个节点名。如:

node1

node2

node3

5. 运行测试程序
~# mpiexec -n 6 -machinefile  ~/machinefile  ~/mpich-3.1/examples/cpi    # ~/machinefile指上面创建的 machinefile 的文件路径

如下类似输出则说明平台搭建成功了

Process 2 of 6 is on node1

Process 5 of 6 is on node1

Process 0 of 6 is on node2

Process 3 of 6 is on node2

Process 1 of 6 is on node3

Process 4 of 6 is on node3

pi is approximately 3.1415926544231243, Error is 0.0000000008333312

wall clock time = 0.001908