0%

ubuntu搭建slurm-openmpi平台

  • 目的:在初步学习之后,已了解slurm平台工作流程,slurm实则是一个计算节点之间的管理工具,其本身并无计算能力,要实现计算的功能还需另外安装mpi的实现,此处安装openMPI。
  • 准备:注意版本,slurm-17.02.11;openmpi-4.0.5,这套配置能够解决依赖问题。

一:准备工作

1.前三步骤见 https://giganticray.github.io/2020/07/13/%E7%94%A8ubuntu%E6%90%AD%E5%BB%BAslurm%E5%B9%B3%E5%8F%B0/

二:配置slurm

2.配置slurm
在slurm官方下载页面下载slurm(注意版本),在/opt下新建Slurm文件夹,默认是在/usr/local下的,但这样容易与其他程序搞混,故放在/opt下。二者差别可看这里。将下载的包解压,在解压目录执行

1
2
3
4
5
6
7
8
9
10
1. # 安装依赖
apt-get install hwloc libhwloc-dev libmunge-dev libmunge2 munge mariadb-server libmysqlclient-dev(slave节点不需要最后两个sql)
2. ./configure --prefix=/opt/Slurm (即指定目录安装)
3. sudo make install
4. # 安装完成后进入 slurm-xxxx/etc
cp slurm.conf.example slurm.conf, 然后根据上述博客进行配置,配置完成后将slurm.conf拷贝到集群所有节点上面
scp slurm.conf slave1@192.168.1.105:/tmp
5. # 在slave1节点将slurm.conf文件拷贝进入安装目录
cp /tmp/slurm.conf /home/slave1/slurmxxxx/etc
6. 将/opt/Slurm/sbin与/opt/Slurm/bin添加进环境变量 /etc/profile

配置文件解释可在这里

注意,见slurm.conf中有两个slurmctld.log与slurmd.log日志文件,需要自己手动创建。到这里slurm配置完成。

另外,可以在/opt/Slurm/sbin下执行sudo ./slurmctld -D(主节点)。sudo ./slurmd -D(计算节点)来验证是否成功。

三:配置openmpi

这就是为啥要选用slurm17版本的原因,slurm17x之后(具体多少搞忘了),其吧pmi.h分离了出去,我原先用slurm20版本的始终无法安装openmpi成功,吐了。
在openmpi官方下载包,新建/opt/OpenMPI

1
2
3
1. 解压后在解压目录执行 
2. sudo ./configure --with-pmi=/opt/Slurm/include/slurm --with-pmi-libdir=/opt/Slurm/lib --prefix=/opt/OpenMPI CPPFLAGS=-I/opt/Slurm/include/slurm LDFLAGS=-L/opt/Slurm/lib
3. sudo make install

四: 问题汇总

  1. 版本不匹配问题

    在slurm17以后,安装之后在/*/include/slurm下总是没有pmi.h,这样在安装openmpi的时候就会找不到pmi.h文件,安装失败,遂降低版本,查阅文件发现在slurm17以后,slurm官方就把pmi.h分离出来了,需要的话要另外编译,此处为了偷懒,就直接用以前的版本了。

  2. openmpi编译成功后,但是在intall阶段处,出现缺少pmi.h的错误,查资料,在这里发现在编译openmpi的时候要另外加两个参数,遂加上,编译成功。