Porównanie SLURM i PBS

Z Komputery Dużej Mocy w ACK CYFRONET AGH
Skocz do:nawigacja, szukaj


Strona zawiera krótkie podsumowanie różnić w specyfikowaniu zasobów dla zadań w systemach SLURM i PBS. Strona może być pomocna dla osób przenoszących swoje skrypty pomiędzy tymi dwoma systemami kolejkowymi, ale nie jest wyczerpującym źródłem wiedzy. W przypadku wątpliwości prosimy o kontakt lub przestudiowanie dokumentacji do danego systemu kolejkowego.

Dyrektywa systemu kolejkowego dla plików batchowych

SLURM PBS
#SBATCH #PBS

Najważniejsze opcje oraz parametry

Opcja SLURM Opcja PBS
-N (--nodes=) -l nodes=
--ntasks-per-node= -l ppn=
--cpus-per-task= -l ppn=
--mem-per-cpu= -l pmem=
--mem= -l mem=
-t (--time=) -l walltime=
-p (--partition=) -q
-o filename -e filename -j oe
--mail-type= -m
--mail= -M

Typowe konfiguracje zadań

SLURM w odróżnieniu od PBS pozwala na bardziej granularne wyspecyfikowanie zasobów. Dzięki temu, że system kolejkowy dysponuje taką informacją możliwe jest zautomatyzowanie i optymalizacja procesu uruchamiania aplikacji.

Zadanie jednordzeniowe

PBS:

qsub -q plgrid -A nazwa_grantu -l nodes=1 -l walltime=12:00:00 job.sh

SLURM:

sbatch -q plgrid -A nazwa_grantu -N 1 -n 1 --time=12:00:00 job.sh

Zadanie wielowątkowe (OpenMP)

PBS:

qsub -q plgrid -A nazwa_grantu -l nodes=1:ppn=12 -l walltime=12:00:00 job.sh

SLURM:

sbatch -q plgrid -A nazwa_grantu --time=12:00:00 -N 1 -n 1 --cpus-per-task=12 job.sh

Zadanie wieloprocesowe/rozproszone (MPI)

PBS:

qsub -q plgrid -A nazwa_grantu -l nodes=2:ppn=12 -l walltime=12:00:00 job.sh

SLURM:

sbatch -q plgrid -A nazwa_grantu --time=12:00:00 -N 2 -n 24 --ntasks-per-node=12 job.sh

Zadanie hybrydowe (MPI + OpenMP)

PBS:

qsub -q plgrid -A nazwa_grantu -l nodes=2:ppn=12 -l walltime=12:00:00 job.sh

SLURM:

sbatch -q plgrid -A nazwa_grantu --time=12:00:00 -N 2 -n 2 --ntasks-per-node=1 --cpus-per-task=12 job.sh

Najważniejsze zmienne systemowe

Zmienna SLURM Zmienna PBS
SLURM_SUBMIT_DIR PBS_O_WORKDIR
SLURM_NTASKS brak odpowiednika
brak odpowiednika PBS_NP
SLURM_JOB_ID PBS_JOBID
SLURM_ARRAY_TASK_ID PBS_ARRAYID

Wartość PBS_NP możemy wyliczyć za pomocą SLURM_NTASKS * SLURM_CPUS_PER_TASK przy założeniu, że zadanie posiada więcej niż 1 rdzeń per proces. W innym przypadku PBS_NP jest równe SLURM_NTASKS.

Najważniejsze komendy

Komenda SLURM Komenda PBS
sbatch qsub
squeue qstat
scancel qdel