MPI多节点集群配置+display图形输出(使用ssh)

机器准备:

3个节点(MPI、MPI2、MPI3)

在这里我们假设MPI为master,MPI2,MPI3为子节点分别ip为192.168.1.123、192.168.1.124、192.168.1.125

操作系统:

Ubuntu 16.04.5 LTS (GNU/Linux 4.15.0-42-generic x86_64)

依赖软件:

gcc,g++,gfortran

$ gcc --version
$ g++ --version
$ gfortran --version
$ echo $SHELL

使用以上命令查看环境是否有这些依赖,如果没有sudo apt-get install xxx安装

系统环境变量配置

我们在 root 用户下新建一个名为“pei”的用户,然后将要安装的的软件都安装在该用户目录下。这个pei用户就是学生的一个账户。

$ sudo useradd -m pei
$ sudo passwd pei
$ sudo adduser pei sudo(给pei用户添加sudo权限)

所有节点上都要建立pei用户

用户ssh免密登录设置
先安装ssh:sudo apt install ssh -y  如果下得比较慢去换下镜像源。

命令行运行ssh-keygen -t  rsa

cd ~/.ssh就会发现多了如下文件:id_rsa 和id_rsa.pub分别是私钥和公钥。
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(以上是所有节点用户都要执行的)

三个节点都执行完后

现在我们把MPI2,MPI3的id_rsa.pub复制到MPI的authorized_keys文件里

在MPI2与MPI3运行

scp ~/.ssh/id_rsa.pub pei@MPI:~

将id_rsa.pub传到了MPI的~目录下

然后进入MPI主节点运行:

cd ~

cat id_rsa.pub >>~/.ssh/authorized_keys

sudo vim /etc/hosts

添加

192.168.1.123   MPI
192.168.1.124   MPI2
192.168.1.125   MPI3

(记得注释127.0.1.1这一行)

这个时候在MPI主节点可以ssh MPI2无密码登录了

如果无法成功,请检验追加的公钥是否正确,若还是不行请确保ssh服务开启

sudo vim /etc/ssh/sshd_config

去掉注释:

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

/bin/systemctl restart sshd.service

要想无密码登录任一主机,需要把想登录的主机的id_rsa.pub放入自己的authorized_keys文件里就行然后配置好hosts文件就行

mpich下载编译

我是使用的mpich-3.2.1版本的

先主节点MPI配置

cd ~

wegt http://www.mpich.org/static/downloads/3.2/mpich-3.2.tar.gz

tar -xzvf mpich-3.2.1.tar.gz -C /home/mpiuser/

sudo tar -zxvf mpich-3.2.1.tar.gz

cd mpich-3.2.1/

sudo ./configure -prefix=/usr/local/mpich #运行后出现"Configuration completed."即配置成功

sudo make

sudo make install#若出现问题,请使用root权限安装

安装后配置环境变量

vim ~/.bashrc

添加如下内容(注意要与自己实际的安装目录相对应,不然后面会无法识别mpi的相关命令)

export PATH=/usr/local/mpich/bin:$PATH

执行source命令

source ~/.bashrc
单节点测试
cd ~/mpich-3.2.1/examples/

mpirun -n 6 ./cpi

若运行无报错则运行成功
MPI2,MPI3子节点MPICH配置

先进入MPI主节点

scp -r /usr/local/mpich MPI2:~

进入MPI2自己点:

cd ~

sudo cp -r mpich /usr/local/mpich

然后配置环境变量

vim ~/.bashrc

export PATH=/usr/local/mpich/bin:$PATH

source ~/.bashrc

which mpicc,which mpirun可以查看mpich是否配置好

MPI3节点类似

多节点测试

我们直接运行mpich-3.2.1/examples/cpi

当然运行之前要把mpich-3.2.1复制到MPI2与MPI3节点的~目录下

scp - r ~/mpich-3.2.1 MPI2:~

scp - r ~/mpich-3.2.1 MPI3:~

在~目录下新建servers文件,内容如下

MPI:3
MPI2:3
MPI3:3

运行

mpirun -n 9 -f servers ~/mpich-3.2.1/examples/cpi

出现类似:

Process 5 of 9 is on MPI2
Process 2 of 9 is on MPI
Process 3 of 9 is on MPI2
Process 7 of 9 is on MPI3
Process 1 of 9 is on MPI
Process 6 of 9 is on MPI3
Process 0 of 9 is on MPI
Process 4 of 9 is on MPI2
Process 8 of 9 is on MPI3
pi is approximately 3.1415926544231256, Error is 0.0000000008333325
wall clock time = 0.050158

则多节点配置成功

如果不放心,可以在主节点运行后去查看子节点的进程是否存在

图像显示

直接使用ssh可以只让主节点显示运行后的图像

然后下个xming使用ssh连接master时记得走隧道改成X11转移到本机(X DISPLAY(D):localhost:0.0)就行,我使用的是xshell软件,就可以在本地显示了

参照谢谢老哥