使用 SLURM 在 HPC 集群上运行作业

使用 SLURM 在 HPC 集群上运行作业

假设我有两个 Python 脚本:test1.pytest2.py

如何编写 SLURM 脚本以同时在两个不同的节点上运行这些文件?

注意:test1.pytest2.py是相互独立的。

答案1

在 slum 脚本中,您可以使用数组,并在 Slurm 脚本中定义两个或多个脚本作为数组元素。一个例子如下:

#!/bin/bash
#
#SBATCH --ntasks=1
#SBATCH --partition xxxx
#SBATCH --time=6:00:00
#SBATCH --array=1-300

# Job array size will be number of lines in file divided by 
# number of lines chosen below

START=$SLURM_ARRAY_TASK_ID
NUMLINES=100
STOP=$((SLURM_ARRAY_TASK_ID*NUMLINES))
START="$(($STOP - $(($NUMLINES - 1))))"

echo "START=$START"
echo "STOP=$STOP"

for (( N = $START; N <= $STOP; N++ ))
do
    LINE=$(sed -n "$N"p File.txt)
    call-program-name-here $LINE
done

在这种情况下,您应该仔细定义资源以在不同节点上运行这些文件,或者您应该在 slurm.conf 上进行正确的调度配置

https://slurm.schedmd.com/faq.html#multi_job

如果要将整个节点分配给作业,请配置configure SelectType=select/linear

相关内容