机器学习和生物信息学实验室联盟
标题:
MPI在linux(Ubuntu16.04)集群配置方法
[打印本页]
作者:
lingang009
时间:
2017-9-25 23:03
标题:
MPI在linux(Ubuntu16.04)集群配置方法
[size=15.1111px]
MPI在linux(Ubuntu16.04)集群配置方法
[size=15.1111px]
Tech
MPI (Message Passing Interface) 是一个并行计算的应用程序接口,通常在超级计算机、计算机集群等非共享内存环境中使用。MPI是目前高性能计算主要模型,所以一般情况下可能不会用到MPI,如果你有幸需要为几台机器配置MPI计算环境,那么这篇文章可能会提供一些帮助。
目前针对MPI接口的实现有两种,需要区分一下MPICH和Open MPI,这两种实现实际上是为了满足不同的需要,在安装配置的过程中会遇到一些问题。
[size=15.1111px]
这篇文章总结的是MPICH的安装方法
[size=15.1111px]
MPICH安装
起初查看网上教程,想要偷懒使用apt的方法安装MPICH,这里会有个陷阱。
sudo apt-get install mpich
按照apt的方法在终端(Terminal)直接输入这行指令,安装完成实际上是Open MPI。两者的使用方法有一些不同。
mpiexec --help
查看上述指令打印出的结果的最后一行域名,可以区分计算机上是安装的哪个版本。
既然无法使用apt自动安装,我还是很不情愿的从官网下载release的压缩文件进行安装。
官网链接
,针对自己的操作系统和环境选择要下载的
stable release
,复制下载链接。(这里我建议在linux下重新创建一个特定的账户用来安装和运行MPICH)
wget ***链接***
解压。
[size=15.1111px]tar xzf mpich-$VERSION
.tar
.gz
$
cd mpich-$VERSION
解压完毕,你需要选择一个安装路径,我建议一个比如:/home//mpich-install,mpich-install是个文件夹,账户目录(/home/)下没有的话,那就mkdir创建一个这样的文件夹。
mkdir mpich-install
开始configure
[size=15.1111px]pwd
# 确认当前目录在mpi-$VERSION/文件夹下
ls -al
# 可以看到该目录下有一个叫做configure的可执行文件
./configure --prefix=/home/<USERNAME>/mpich-install
2
>&1 | tee c.txt
# 先进行配置,并把配置过程中的日志重新写入c.txt文件当中,方便失败后可以检查
一般configure报错会出现fortran或者c++的compile找不到的情况,这个时候按照报错信息,google一下然后使用apt更新一下相关的依赖就👌了。
开始编译、链接、安装
[size=15.1111px]make
2
>&
1
| tee m.txt
make install
2
>&
1
| tee mi.txt
如果你自信,那就直接如下操作
make; sudo make install
安装完成后,配置绝对路径,写入~/.bashrc文件当中
[size=15.1111px]vim ~/.bashrc
export
PATH=/home/<USERNAME>/mpich-install/bin:$PATH
# 增加这一行内容
:wq
source
~/.bashrc
MPICH安装完成,且环境变量配置好,这时测试一下mpi的指令是否能够正常输出
mpiexec --help
[size=15.1111px]
集群配置,让机器协同工作
[size=15.1111px]
设置hosts文件
hosts的文件路径为/etc/hosts,我们需要修改该文件成如下格式。
[size=15.1111px]sudo vim /etc/hosts
127.0
.0
.1
localhost
172.16
.13
.21
master
172.16
.13
.22
slave01
172.16
.13
.23
slave02
172.16
.13
.24
slave03
这是在master这台机器上的配置的写法,master负责分发任务给其他的slave进行计算,各自分工,这是一个集群的工作方式,其他的slave的hosts文件都需要修改成以上的格式。
[size=15.1111px]
设置SSH
这是很重要的一步,我们需要设置SSH使得master和的slave集群之间可以实现无密码访问,SSH是一种安全的通信协议,我们通过SSH提供的命令行工具,生成RSA秘钥或者DSA秘钥。
简单介绍一下无密码访问的原理。秘钥有一对,分为公钥和私钥,master将自己的公钥发送给其他的机器,在使用SSH访问的时候,被访问的机器向master发送被公钥加密后的字符,master再用本机上的私钥解开再发往被访问的机器,即完成一次验证的过程。
[size=15.1111px]sudo apt-
get
install openssh-server
# 如果机器上已经安装ssh可以跳过这一步骤。
ssh-keygen -t dsa
# -t选项后可以选择生成DSA或者RSA秘钥,如果你对秘钥有要求请自行选择如 -t rsa, rsa可以生成长度4096(-b 4096)的秘钥,更加的安全。
ssh-
copy
-
id
slave01@
172.16
.13
.22
# username@remote-server
...
# 对每个slave重复以上的步骤,将公钥拷贝至其他机器的~/.ssh目录下
...
# 这时,你可以发现其他机器的~/.ssh目录下有一个authorized_keys
接下来需要验证一下是否能直接访问了。这里注意,我们从master能够无密码访问slave,需要互相无密码访问,可以直接吧~/.ssh文件夹全部拷贝至slave的用户目录下,使用scp指令就行。
ssh slave01
验证一下,如果失败了,就全部删除重来,中间可能会遇到一些蛋疼的问题。
[size=15.1111px]
设置NFS
设置master
SSH将几台机器连接成一个集群,可以方便的、安全的进行“无密码”通信,再继续配置NFS环境,在master主机上设置一个共享的文件夹,该文件夹存放之后需要运行的MPI的代码和数据们。
sudo apt-get install nfs-kernel-server
在master上使用apt安装这个东西先。
mkdir cloud
在用户目录下面创建该文件夹,共享该文件夹,cloud这个名字也是非常不错的,意味着主机通过这个“云”进行工作。
[size=15.1111px]sudo vim /etc/exports
/home/<USERNAME>/cloud *(rw,sync,no_root_squash,no_subtree_check)
# 把这一行写入exports文件当中
前半部分是cloud文件夹的路径,后半部分有特定的意思。
rw:可读可写
sync:文件确定有改变才能被改变
no_subtree_check:防止子树检查
no_root_squash:允许root用户连接这个文件夹
[size=15.1111px]
which
exportfs
# 找一下这个指令在什么地方,因为我第一次使的时候失败了
exportfs -a
#这样每次以后改变/etc/exports就需要重新运行以下指令
sudo service nfs-kernel-server restart
设置slave
在slave上安装这个,并重复以下的步骤
sudo apt-get install nfs-common
也同样创建一个文件夹叫做cloud
mkdir cloud
然后把这个文件夹连上主机的cloud文件夹
sudo mount -t nfs master:/home/<USERNAME>/cloud ~/cloud
这个时候检查一下是否成功的mount上
df -h
打印出来的内容会告诉你会看到这个文件夹是否成功挂载到master机器上,这很关键,当然这只是暂时的,如果想要永久的挂载,那就修改/etc/fstab文件。
[size=15.1111px]sudo vim /etc/fstab
master:
/home/<USERNAME>/cloud /home/<USERNAME>/cloud nfs
# 增加这一行你就OK了
至此,所有的配置工作已经完毕,你已经可以在这个集群上使用mpi进行高性能,多机器,多核心并行计算了。
[size=15.1111px]
检验运行是否正常
在master,原来解压的源码的目录里边,你能找到一个叫做examples的文件夹,里面都有一些能给你进行测试的小程序,我们使用cpi这个程序,把它拷贝至cloud文件夹进行测试。
mpiexec -np 100 ./cpi
这是一个算pi的程序,这个时候,我们能看到具体的打印信息。想要使用集群,我们在cloud文件夹里再增加一个配置文件就行叫做::machinefile::
[size=15.1111px]
master
slave01
slave02
slave03:
24
# 冒号后面可以写上机器的核心数,其实也可以不用谢
接下来我们再测试
mpiexec -np 100 -f machinefile ./cpi
[size=15.1111px]
谢谢观看,本教程结束了。
Gang Lin (林钢),Postgraduate
School of Computer Science and Technology, Tianjin University, P.R. China
Email:
lingang@nupter.org
Homepage:
http://lab.malab.cn/~lg/
作者:
lingang009
时间:
2017-9-25 23:05
富文本崩了。也可以访问下面的链接
http://boyof.danqian.wang/2017/09/22/title:%20MPI%E5%9C%A8linux
(Ubuntu16.04)%E9%9B%86%E7%BE%A4%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/
作者:
shixiang
时间:
2017-9-28 17:15
赞赞赞!有好的尝试,都可以记录在这里{:266:}
欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/)
Powered by Discuz! X3.2