HPC集群平台搭建
2019-10-12 本文已影响0人
马鹏飞_47c5
step 0 : 在每一台机子上安装openmpi
以两台电脑为例,现在在两台电脑上都安装好了Ubuntu19.04
一台机子的名称为npuheart0,ip为192.168.1.105
另台机子的名称为npuheart1,ip为192.168.1.106
先更新一下两台机器的系统:
sudo apt-get update
sudo apt-get upgrade
安装ssh以及其他一些杂七杂八的软件
sudo apt-get install openssh-server
sudo apt-get install gcc g++ gfortran make cmake zlib1g-dev python m4 vim
sudo apt-get install openmpi-bin openmpi-doc libopenmpi-dev
step 1:配置hosts文件
用名称代替IP地址,方便通信。
在第一台机子上的修改:
$ cat /etc/hosts
192.168.1.106 npuheart1
在第二台机子上的修改:
$ cat /etc/hosts
192.168.1.105 npuheart0
step 2:创建一个新用户
每台电脑上进行以下操作,创建一个新用户,使MPI并行的配置和其他用户隔离。
sudo adduser mpiuser
step 3:启动SSH
两台机器将会通过SSH通信,并且通过NFS共享数据。
- 进入mpiuser账户
- 生成密钥
- 将密钥拷贝给其他用户
- 开启无密码通信
下面以npuheart0为例子:
su - mpiuser
ssh-keygen -t dsa
ssh-copy-id -i ~/.ssh/id_rsa.pub npuheart1
step 4:启动NFS
NFS服务器的安装
- 安装nfs-kernel-server
- 创建并共享一个文件夹cloud
- 设置文件夹的入口exports
- 重启nfs-kernel-server
sudo apt-get install nfs-kernel-server
su - mpiuser
mkdir cloud:
sudo vi /etc/exports
/home/mpiuser/cloud *(rw,sync,no_root_squash,no_subtree_check)
sudo exportfs -a
sudo service nfs-kernel-server restart
NFS客户端的安装
sudo apt-get install nfs-common
mkdir cloud
sudo mount -t nfs master:/home/mpiuser/cloud ~/cloud
df -h
$ cat /etc/fstab
#MPI CLUSTER SETUP
master:/home/mpiuser/cloud /home/mpiuser/cloud nfs
step 5:运行MPI程序
-
编译mpi程序
mpicxx sample.cpp
-
将程序拷贝到cloud文件夹下
-
在当前机器中跑:
mpirun -np 2 ./a.out
-
在集群中跑:
mpirun -np 5 -hostfile hosts ./a.out
hosts 文件是当前目录下的文件,内容是:
npuheart0 slots=4
npuheart1 slots=4
期间遇到的问题及解决方法
-
起先使用了apt安装的mpich程序,遇到的问题是多机并行时MPI_Comm_dup函数的使用出现了玄学错误,于是把它卸载了,安装了openmpi,解决了问题。
-
出现了有关askpass的错误,通过sudo apt-get install ssh-askpass解决了。
最后的使用注意
- 进入cloud文件夹,创建个人文件夹,只在自己的文件夹里操作,尊重他人隐私
- 编译命令跟以前一样,不同的是mpirun命令,需要hosts参数
- 复制cloud目录下的hosts文件,和程序放到一起
- mpirun -np 12 -hostfile hosts ./main3d2019 input3d_noP_fine > output_noP_fine
参考教程
https://mpitutorial.com/tutorials/running-an-mpi-cluster-within-a-lan/