SLURM を使用して HPC クラスターでジョブを実行する

SLURM を使用して HPC クラスターでジョブを実行する

2つのPythonスクリプトがあるとしましょうtest1.pytest2.py

2つの異なるノードで同時にこれらのファイルを実行するには、どのようにSLURMスクリプトを作成する必要がありますか?

注:test1.pytest2.pyは互いに独立しています。

答え1

スラムスクリプトでは配列を使用し、複数のスクリプトを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

ノード全体をタスクに割り当てるには、構成の構成SelectType = select / linearを構成します。

関連情報