如何使用 $SLURM_JOB_NODELIST 在 SLURM 中创建主机文件

如何使用 $SLURM_JOB_NODELIST 在 SLURM 中创建主机文件

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

我是一名物理专业的学生,​​对 bash 脚本了解不多。

#!/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
                                                                                                                               

相关内容