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)

Typowe zadanie MPI, gdzie uruchamiany jeden proces na każdy rdzeń. Przykładowe zadanie korzysta z dwóch węzłów po 12 rdzeni, co przekłada się na 24 ranki.

PBS:

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

w samym skrypcie:
mpiexec applikacja.mpi

SLURM:

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

w samym skrypcie:
mpiexec applikacja.mpi

Zadanie hybrydowe (MPI + OpenMP)

Przykładowe zadanie składa się z 2 procesów po 12 wątków, co w sumie przekłada się na 2 węzły po 12 rdzeni. Zadanie będzie wymagało dodatkowych opcji przy komendzie mpiexec (w postaci zależnej od wykorzystywanej biblioteki OpenMP) tak aby każdy proces wiedział, że ma uruchomić po 12 wątków.

PBS:

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

w samym skrypcie:
OMP_NUM_THREADS=12

mpiexec aplikacja.mpi

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

w samym skrypcie:
OMP_NUM_THREADS=12

mpiexec aplikacja.mpi

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