You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在搭载Slurm的Linux HPC集群上部署OpenMPI并同步到计算节点?

我来帮你搞定在Slurm集群上安装OpenMPI的事儿——尤其是确保所有计算节点都能正常用的关键点,这事儿我在HPC集群上折腾过好多次,给你捋清楚一步步该怎么做:

在Slurm HPC集群上安装OpenMPI并同步到计算节点的完整步骤

一、前期准备:选对环境和节点

首先得在**登录节点(head node)**上操作,别直接碰计算节点——计算节点通常有诸多权限限制,折腾起来麻烦。先确认登录节点有必备的编译工具:

  • 检查gccg++makecmake这些有没有装,没有的话用集群包管理器补装(比如yum install gcc-c++ make cmake或者apt install build-essential cmake
  • 还要提前装好libibverbs-dev(用InfiniBand网络的话)、libssl-dev这些依赖,不然OpenMPI的不少功能会用不了

二、编译OpenMPI(登录节点上操作)

  1. 先下载稳定版的OpenMPI,比如4.1.5版本(选自己需要的稳定版就行):

    wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.5.tar.gz
    tar xzf openmpi-4.1.5.tar.gz
    cd openmpi-4.1.5
    
  2. 配置编译参数,这里是核心关键:

    ./configure --prefix=/opt/openmpi-4.1.5 --with-slurm --with-verbs --enable-mpi-cxx
    

    给你解释下必看参数:

    • --prefix:指定安装目录,必须选所有计算节点都能访问的共享文件系统路径(比如集群共享的/opt,或者你用户目录下的~/apps/openmpi),绝对不能选登录节点本地的路径!
    • --with-slurm:必须加!让OpenMPI和Slurm调度系统集成,后面用srun启动多节点MPI任务才顺畅
    • --with-verbs:集群用InfiniBand高速网络就加,不用的话可以去掉
    • --enable-mpi-cxx:需要C++ MPI接口就加,不需要可以省略
  3. 编译安装:

    make -j $(nproc)  # 用所有CPU核心加速编译,节省时间
    sudo make install
    

    如果是装在自己用户目录下,就不用sudo,直接make install就行

三、同步环境到所有计算节点

计算节点要能找到OpenMPI的二进制文件和库,这里有两种最常用的方法:

方法1:利用共享文件系统(最推荐)

如果你的安装目录已经在共享文件系统上(比如/opt是NFS挂载的),那计算节点其实已经能访问到文件了,只需要把环境变量配置同步过去:

  • 全局配置的话,在登录节点新建/etc/profile.d/openmpi.sh,内容如下:

    export PATH=/opt/openmpi-4.1.5/bin:$PATH
    export LD_LIBRARY_PATH=/opt/openmpi-4.1.5/lib:$LD_LIBRARY_PATH
    

    然后用集群的节点批量工具(比如pdshclush)把这个文件复制到所有计算节点的对应目录:

    pdsh -w compute[01-10] sudo cp /etc/profile.d/openmpi.sh /etc/profile.d/
    

    (这里compute[01-10]是你的计算节点范围,根据实际集群节点名改)

  • 如果是用户级安装,直接在自己的~/.bashrc里加上面的环境变量就行——用户目录一般也是共享的,计算节点登录后会自动加载

方法2:手动复制到每个计算节点(无共享存储时用)

如果集群没有共享存储,那就得把安装好的OpenMPI目录复制到每个计算节点的相同路径:

# 假设计算节点是compute01到compute10
for node in compute{01..10}; do
  scp -r /opt/openmpi-4.1.5 $node:/opt/
done

然后同样用批量工具给每个节点配置环境变量:

pdsh -w compute[01-10] 'echo "export PATH=/opt/openmpi-4.1.5/bin:\$PATH" >> /etc/profile'
pdsh -w compute[01-10] 'echo "export LD_LIBRARY_PATH=/opt/openmpi-4.1.5/lib:\$LD_LIBRARY_PATH" >> /etc/profile'

四、验证安装是否成功

  1. 先在登录节点验证:

    mpicc --version
    mpirun --version
    

    能正常输出OpenMPI的版本信息,说明登录节点没问题

  2. 验证计算节点:
    用Slurm启动一个单节点任务,检查计算节点的OpenMPI:

    srun -N1 -n1 mpicc --version
    

    再跑个多节点测试程序,比如编译OpenMPI自带的例子:

    cd openmpi-4.1.5/examples
    mpicc hello_c.c -o hello
    srun -N2 -n4 ./hello  # 在2个节点上跑4个进程
    

    如果能看到每个进程对应的节点名和ID,就说明所有节点都正常工作了

五、几个避坑提醒

  • 绝对不能漏加--with-slurm参数,不然OpenMPI没法和Slurm调度系统配合,多节点任务启动会各种报错
  • 安装路径一定要保证所有计算节点都能访问,共享文件系统是最优解,能省掉重复复制的麻烦
  • 如果集群有不同架构的节点(比如x86和ARM),得分别编译对应版本,或者用交叉编译——不过大部分HPC集群都是同架构的,不用太担心
  • 升级OpenMPI的时候,记得先清理旧版本的环境变量,避免版本冲突

内容的提问来源于stack exchange,提问作者airzinger1

火山引擎 最新活动