【问题标题】:How to use SLURM to make hostefile for mpirun如何使用 SLURM 为 mpirun 制作 hostefile
【发布时间】:2021-08-17 13:47:18
【问题描述】:

我可以访问每个节点上具有 40 个内核的 HPC。我有一个批处理文件来运行总共 35 个位于不同文件夹中的代码。我的每个代码都是一个开放的 mp 代码,每个代码需要 4 个内核。那么如何分配 4 个节点,以便每个代码获得 4 个核心。请告诉我如何使用$SLURM_JOB_NODELIST 这个环境,因为我知道它给出了队列中分配的节点列表。基本上我的想法是在每个文件夹中创建节点文件,然后在 mpirun 中使用它。

slurm 是否有任何其他方式自动分配所述资源。因为没有节点文件,我的所有代码都进入单个节点,而所有其他节点保持为空。

#!/bin/bash

#SBATCH --error=job.err 
#SBATCH --output=job.out 
#SBATCH --time=24:00:00 
#SBATCH --job-name=a20 
#SBATCH --partition=cpu 
#SBATCH --nodes=4 
#SBATCH --ntasks-per-node=10 
```
#SBATCH --cpus-per-task=4 

let tasks_per_job=1 
let threads_per_task=4 
export OMP_NUM_THREADS=$threads_per_task 
module load intel/2018.0.1.163 

cd $SLURM_SUBMIT_DIR 
cd a20 

k=1

for j in */* 
do 
  cd $j
  sed -n $k,$k'p' < $SLURM_JOB_NODELIST >nodefile$k 
  mpirun -np $tasks_per_job --hostfile nodefile$k ./chk >& job$k.out & 

  sleep 2 

  let k=$k+1 
  cd ../.. 
done

wait

【问题讨论】:

  • 您似乎正在尝试运行一堆单节点 4 OpenMP 线程作业。在这种情况下,您最好的选择是 SLURM 作业数组。如果您受限于单个大分配,请考虑使用通量github.com/flux-framework/flux-core(基本上,在 SLURM 分配中的用户空间中运行您自己的资源调度程序)

标签: bash mpi openmp hpc slurm


【解决方案1】:

所以我找到了解决方案 您可以使用以下scontrol show hostname $SLURM_NODELIST (两个反引号很重要) 获取扩展的节点列表,然后将其转换为数组,然后使用以下逻辑将代码分配给特定节点。

#!/bin/bash

#SBATCH --time=48:00:00 

#SBATCH --job-name=a80

#SBATCH --partition=cpu                               

#SBATCH --nodes=5

#SBATCH --ntasks-per-node=7

#SBATCH --cpus-per-task=5

让 tasks_per_job=1

let threads_per_task=5

让 tasks_per_node=7

export OMP_NUM_THREADS=$threads_per_task

模块加载 intel/2018.0.1.163

cd $SLURM_SUBMIT_DIR


list=scontrol show hostname $SLURM_NODELIST

n_arr=($list)
cd a80

k=1

v=0

for j in //

do

cd $j

ifort HI_final_mkl_openmp.f90 -mkl -qopenmp -xHOST -align array64byte -o chk

rm 节点文件*

rm job*.out

echo "${n_arr[$v]}" >nodefile$k

mpirun  -np $tasks_per_job  -hostfile nodefile$k ./chk  >& job$k.out &

如果 [[ $k -eq $tasks_per_node ]]

then

让 v=$v+1

k=0

fi

sleep 2

让 k=$k+1

cd ../..

完成

wait

【讨论】:

    猜你喜欢
    • 2020-10-11
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2021-04-02
    相关资源
    最近更新 更多