假设我有两个 Python 脚本:test1.py
和test2.py
如何编写 SLURM 脚本以同时在两个不同的节点上运行这些文件?
注意:test1.py
和test2.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