Porównanie SLURM i PBS
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.
Spis treści
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 --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=24 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 |
