Podstawy:SLURM vs PBS: Różnice pomiędzy wersjami
Linia 51: | Linia 51: | ||
</pre> | </pre> | ||
− | + | ==Zadanie wielowątkowe (OpenMP)== | |
PBS: | PBS: | ||
Linia 62: | Linia 62: | ||
</pre> | </pre> | ||
− | + | ==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. | 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. | ||
Linia 82: | Linia 82: | ||
</pre> | </pre> | ||
− | + | ==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 <tt>mpiexec</tt> (w postaci zależnej od wykorzystywanej biblioteki OpenMP) tak aby każdy proces wiedział, że ma uruchomić po 12 wątków. | 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 <tt>mpiexec</tt> (w postaci zależnej od wykorzystywanej biblioteki OpenMP) tak aby każdy proces wiedział, że ma uruchomić po 12 wątków. | ||
Linia 106: | Linia 106: | ||
</pre> | </pre> | ||
− | + | =Najważniejsze zmienne systemowe= | |
{| class="wikitable" | {| class="wikitable" | ||
! width=50% |Zmienna SLURM !!width=50%|Zmienna PBS | ! width=50% |Zmienna SLURM !!width=50%|Zmienna PBS | ||
Linia 123: | Linia 123: | ||
Wartość <tt>PBS_NP</tt> możemy wyliczyć za pomocą <tt>SLURM_NTASKS</tt> * <tt>SLURM_CPUS_PER_TASK</tt> przy założeniu, że zadanie posiada więcej niż 1 rdzeń per proces. W innym przypadku <tt>PBS_NP</tt> jest równe <tt>SLURM_NTASKS</tt>. | Wartość <tt>PBS_NP</tt> możemy wyliczyć za pomocą <tt>SLURM_NTASKS</tt> * <tt>SLURM_CPUS_PER_TASK</tt> przy założeniu, że zadanie posiada więcej niż 1 rdzeń per proces. W innym przypadku <tt>PBS_NP</tt> jest równe <tt>SLURM_NTASKS</tt>. | ||
− | + | =Najważniejsze komendy= | |
{| class="wikitable" | {| class="wikitable" | ||
! width=50% |Komenda SLURM !!width=50%|Komenda PBS | ! width=50% |Komenda SLURM !!width=50%|Komenda PBS |
Wersja z 17:07, 8 gru 2017
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 -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 |