SLURM


SLURM (Simple Linux Utility for Resource Management) to system kolejkowy oparty na licencji open source. W CI TASK od marca 2015 roku wykorzystywany jest do zarządzania pracą użytkowników superkomputera Tryton. Podstawowe komendy systemu kolejkowego SLURM:

squeue - wyświetla informacje o wszystkich zadaniach, które obecnie znajdują się w systemie kolejkowym
sbatch <nazwa_skryptu> - wstawia zadanie obliczeniowe do kolejki
squeue --job <numer_zadania> - sprawdza status danego zadania
squeue -u <nazwa_użytkownika> - wyświetla informacje o zadaniach danego użytkownika
scancel <numer_zadania> - usuwa zadanie z kolejki
sinfo - wyświetla informacje o rodzajach kolejek (PARTITION), węzłach itp.

Jak wstawić zadanie do kolejki?

Użytkownik, chcąc wstawić swoje zadanie obliczeniowe do kolejki, pownien samodzielnie przygotować skrypt (plik tekstowy), który:

  1. zdefiniuje parametry zadania obliczeniowego,
  2. uruchami dany program obliczeniowy,
  3. wstawi zadanie do kolejki obliczeniowej (w tym celu można również użyć komendy "sbatch" - patrz przykład poniżej).

Jak napisać skrypt?

Pierwsza linia skryptu musi zawierać ścieżkę dostępu do powłoki: #!/bin/bash
Dalej następuje specyfikacja zasobów, których potrzebuje program obliczeniowy, aby zrealizować zadanie obliczeniowe. Każda kolejna linijka, zgodnie ze składnią systemu SLURM, powinna rozpocząć się od słowa #SBATCH, po którym należy umieścić odpowiednią opcję definiującą parametry zadania obliczeniowego, np.:

-J <nazwa_zadania> - nazwa, pod którą zadanie będzie widoczne w systemie kolejkowym
-p <nazwa_kolejki> - rodzaj kolejki
-N - liczba węzłów obliczeniowych, które mają byc wykorzystane do realizacji zadania
--ntasks-per-node - liczba rdzeni dla węzła
--mem - ilość pamięci [MB] przydzielona dla zadania
--time - maksymalny czas trwania zadania; po tym czasie zadanie zostaje usunięte z systemu kolejkowego
--mail-type= - stan zadania (zdarzenie), o którym ma zostać poinformowany użytkownik; zdarzenie może przyjąć wartość: BEGIN, END, FAIL, REQUEUE, ALL
--mail-user=user@email.domain - adres e-mail, na który zostanie przesłana powyższa informacja

Skrypt powninien także zawierać komendę uruchamiającą program obliczeniowy (zobacz: moduły).

Przykład zastosowania w skrypcie:

Użytkownik uruchomi program o nazwie "symulacja". Dane wejściowe do programu (plik symulacja1.dat) powinny znaleźć się w katalogu, z którego uruchamiany jest poniższy skrypt. W systemie kolejkowym zadanie będzie widoczne pod nazwą "zadanie1". Uruchomi się ono w kolejce "batch" na 2 węzłach obliczeniowych, z wykorzystaniem 24 rdzeni oraz 1 GB pamięci. Jeśli zadanie nie zakończy się po 24 h, zostanie przerwane przez system kolejkowy. Użytkownik otrzyma informację o zakończeniu zadania na adres "user5@email.domena.pl".

#!/bin/bash
#
#SBATCH -J zadanie1
#SBATCH -p batch
#SBATCH -N 2
#SBATCH --ntasks-per-node 24
#SBATCH --mem 1000
#SBATCH --time 24:00:00
#SBATCH --mail-type=END
#SBATCH --mail-user=user5@email.domena.pl
#
module load symulacja
mpirun symulacja < symulacja1.dat

Tak przygotowany skrypt należy wstawić do kolejki za pomocą komedy:

sbatch <nazwa_skryptu>

Dodatkowo, po zalogowaniu się na superkomputer Tryton w katalogu: $TASK_APL/example/slurm/ znajdują się gotowe, przykładowe skrypty, z których można skorzystać. Są one przeznaczone do samodzielnej modyfikacji przez użytkownika.