SLURM: Różnice pomiędzy wersjami

(Przykładowy skrypt na system Hydra)
Linia 1: Linia 1:
 +
<noinclude>
 
{{Languages | SLURM}}
 
{{Languages | SLURM}}
  
 
<div class="toclimit-2">__TOC__</div>
 
<div class="toclimit-2">__TOC__</div>
 +
 
{{Podrecznik uzytkownika}}
 
{{Podrecznik uzytkownika}}
SLURM (dawniej ''Simple Linux Utiliy for Resource Management'') to system kolejkowy działający na wielu komputerach z listy Top500. W ICM system ten obsługuje maszyny [[hydra]] i [[nostromo]].  
+
</noinclude>
 +
SLURM (dawniej ''Simple Linux Utiliy for Resource Management'') to system kolejkowy działający na wielu komputerach z listy Top500. W ICM system ten obsługuje wszystkie komputery dużej mocy.  
  
== Podstawowe komendy systemu kolejkowego ==
+
=== Podstawowe komendy systemu kolejkowego ===
  
 
Za pomocą komend systemu SLURM możemy sterować przebiegiem obliczeń naszego zadania. Podstawowe komendy to:
 
Za pomocą komend systemu SLURM możemy sterować przebiegiem obliczeń naszego zadania. Podstawowe komendy to:
Linia 13: Linia 16:
 
* <code>[[#Informacje_o_kolejkach.2C_zadaniach_itp.|scontrol/sinfo]]</code> - informacje o kolejce, zadaniu, węźle itp.
 
* <code>[[#Informacje_o_kolejkach.2C_zadaniach_itp.|scontrol/sinfo]]</code> - informacje o kolejce, zadaniu, węźle itp.
  
 +
<noinclude>
 
== Skrypty systemu kolejkowego ==
 
== Skrypty systemu kolejkowego ==
  
Linia 162: Linia 166:
 
* <code>sacct --format=jobid,jobname,account,partition,ntasks,alloccpus,maxrss,elapsed,state,exitcode -j JOBID</code> <br> informacje o wykorzystaniu zasobów zadania zakończonego o numerze podanym jako JOBID
 
* <code>sacct --format=jobid,jobname,account,partition,ntasks,alloccpus,maxrss,elapsed,state,exitcode -j JOBID</code> <br> informacje o wykorzystaniu zasobów zadania zakończonego o numerze podanym jako JOBID
  
==Dalsze informacje o systemie SLURM==  
+
</noinclude>
 +
 
 +
=== Dalsze informacje o systemie SLURM ===  
 
Zdecydowanie więcej informacji na temat systemu kolejkowego slurm można uzyskać w podręczniku systemowym, oraz na stronach LLNL, warto zacząć od: [http://computing.llnl.gov/linux/slurm/quickstart.html computing.llnl.gov/linux/slurm/quickstart.html]
 
Zdecydowanie więcej informacji na temat systemu kolejkowego slurm można uzyskać w podręczniku systemowym, oraz na stronach LLNL, warto zacząć od: [http://computing.llnl.gov/linux/slurm/quickstart.html computing.llnl.gov/linux/slurm/quickstart.html]

Wersja z dnia 12:20, 30 wrz 2019

Languages:   Polski  • English
Dostęp do zasobów ICM
Konto użytkownika
Grant obliczeniowy
Uruchamianie obliczeń
Oprogramowanie
Pomoc
Poradniki różne

SLURM (dawniej Simple Linux Utiliy for Resource Management) to system kolejkowy działający na wielu komputerach z listy Top500. W ICM system ten obsługuje wszystkie komputery dużej mocy.

Podstawowe komendy systemu kolejkowego

Za pomocą komend systemu SLURM możemy sterować przebiegiem obliczeń naszego zadania. Podstawowe komendy to:

  • sbatch - wstawianie zadania do kolejki
  • squeue - sprawdzanie statusu zadania wstawionego do kolejki
  • scancel - usuwanie zadania z kolejki
  • scontrol/sinfo - informacje o kolejce, zadaniu, węźle itp.


Skrypty systemu kolejkowego

Opis zadania i zapotrzebowanie na zasoby można specyfikować w specjalnym skrypcie - pliku tekstowym dla systemu SLURM. Skrypt tworzy użytkownik. Skrypt składa się z tzw. dyrektyw systemu SLURM, czyli linii zaczynające się od słowa #SLURM oraz instrukcji uruchamiających odpowiedni program.

  • Pierwsza linia skryptu musi zawierać ścieżkę do interpretera (shell), który ma wykonać skrypt na przydzielonym węźle obliczeniowym np.
    #!/bin/bash -l.
  • Kolejne linie powinny zawierać specyfikację zasobów
Opcja Znaczenie
-J nazwa_zadania Ustawia nazwę zadania, domyślnie jest to nazwa skryptu. Pod taką nazwą będzie widziane zadanie w systemie, np. przy wyświetlaniu listy zadań.
-N liczba węzłów Liczba węzłów dostępowych do rezerwacji dla zadania.
--ntasks-per-node liczba rdzeni Liczba rdzeni obliczeniowych dla węzła (przypadku zadań wielowęzłowych można określić ile rdzeni na każdym z przydzielonych węzłów zadanie ma wykorzystać. Task jest rozumiany jako pojedynczy proces uruchomiony przez aplikację użytkownika.)
--mem pamięć Ilość pamięci przydzielona dla zadania per węzeł obliczeniowy (w megabajtach).
--time 00:00:00 Maksymalna długość działania zadania od momentu jego uruchomienia gg:mm:ss. Po tym czasie zadanie zostanie przerwane przez system kolejkowy.
-A grant id Numer grantu obliczeniowego użytkownika grant, np. G99-99. Używane w celach sprawozdawczych.
-p nazwa_partycji Zadanie uruchamiane będzie w dostępnej dla użytkownika partycji (np. hydra, plgrid.
-C własność_węzła Możliwość zażądania sprzętu o konkretnych własnościach, np. typu procesora

Rezerwacja zasobów oraz wszystkie uruchamiane komendy systemowe i programy nazywane są w skrócie zadaniem.

Przykładowy skrypt na system Hydra

Poniższy skrypt uruchamia obliczenia w programie Abinit:

#!/bin/bash -l
#SBATCH -J abinit_job
#SBATCH -N 1 
#SBATCH --ntasks-per-node 12
#SBATCH --mem 5000
#SBATCH --time=20:00:00 
#SBATCH -A numer_grantu
#SBATCH -p nazwa_partycji
#SBATCH --output="abin.out" 
#SBATCH --mail-type=ALL 
#SBATCH --mail-user=user@email.domain

module load abinit 
mpirun abinit < input.dat
  • w systemie kolejkowym zadnie będzie funkcjonowało pod nazwą "abin"
  • na jednym węźle obliczeniowym z wykorzystaniem 12 rdzeni obliczeniowych
  • dla zadania przydzielone zostanie 5GB pamięci operacyjnej
  • zlecający deklaruje, że zadanie zakończy się w czasie krótszym niż 20 godzin (po tym czasie zadanie zostanie przerwane przez system kolejkowy)
  • zadanie zostaje przypisane do grantu o numerze G01-05
  • uruchamiane będzie w partycji (kolejce) hydra
  • węzeł na którym uruchamiane będzie zadanie posiada własność westmere.
  • Plik sterujący input.dat powinien być umieszczony w katalogu z którego uruchamiane jest zadanie
  • Nie obowiązkowe opcje "--mail-type=" i "--mail-user=" mogą zostać użyte do otrzymywania powiadomień. Opcja "--mail-type=" przyjmuje wartości BEGIN, END, FAIL, REQUEUE, które odpowiadają wysłaniu powiadomienia odpowiadającemu wydarzeniom zgodnie z ich nazwami. Użycie specjalnej wartości ALL odpowiada wysłaniu maila we wszystkich sytuacjach.
  • Polecenie "module load abinit" ustawia środowisko (dostęp do programu, zmienne środowiskowe) niezbędne do uruchomienia programu. Więcej informacji o korzystaniu z polecenia module można znaleźć w Biuletynie KDM.
  • Polecenie "mpirun abinit < input.dat" uruchamia właściwy program obliczeniowy w środowisku równoległym MPI. Różne przykłady wywołania znajdują się stronach konkretnych aplikacji.

Przykładowy skrypt na system Okeanos

#SBATCH --job-name  my_job
#SBATCH --output "my_job.out"
#SBATCH --error  "my_job.err"
#SBATCH –-account "GC66-99"
#SBATCH --nodes 16
#SBATCH --tasks-per-node 24
#SBATCH --time 08:00:00

module load my_application

srun ./my_executable

Wstawianie zadania do kolejki

Polecenie sbatch służy do wstawiania zadań do systemu kolejkowego. Wszystkie flagi, które można wyspecyfikować w tym poleceniu, alternatywnie podaje się w pierwszym bloku komentarza skryptu kolejkowego w liniach zaczynających się od #SBATCH . Niektóre opcje tego polecenia są specyficzne dla danego komputera.

Tryb wsadowy

Wstawienie do kolejki zadania opisanego skryptem MojeZadanie.batch wykonujemy komendą:

sbatch MojeZadanie.batch

Umieści ona w systemie kolejkowym zadanie wsadowe (bez możliwości interakcji z wykonywanym programem). Dodatkowe opcje wykonania zadania możemy wprowadzać w skrypcie lub podać jako parametry polecenia sbatch.

Tryb interaktywny

Aby uzyskać dostęp do zasobów w trybie interaktywnym z dostępem do powłoki (shell), wykonujemy komendę:

srun --cpu_bind=none -p nazwa_partycji -A G99-99 --pty bash -l


Error.png Opcja --cpu_bind=none wyłącza domyślne przypinanie procesów obliczeniowych do rdzeni. W przypadku zadań wsadowych każdy proces obliczeniowy realizowany jest przez osobny jobstep i przypinanie zwiększa wydajność obliczeń. W pracy interaktywnej użytkownik sam uruchamia procesy, jeżeli więc nie uruchomi każdego w osobnym jobstep'ie brak tej opcji będzie skutkował umieszczeniem wszystkich na tym samym rdzeniu.

Nazwa partycji (kolejki) zależy od konkretnej maszyny, na której ma być uruchamiane zadanie. Dla komputera hydra, spis dostępny jest tutaj. Dodatkowo wymagany jest numer grantu obliczeniowego, w ramach którego prowadzone są prace (w przykładzie G99-99)

Dodatkowe opcje wykonania zadania możemy wprowadzać jedynie jako parametry polecenia srun, np.

srun -p hydra -A G99-99 -C interlagos --pty bash -l
(zadanie zostanie uruchomione na partycji z procesorami AMD Interlagos w ramach grantu G99-99)

srun -p hydra -w wn1234 -N 1 --ntasks-per-node 6 --pty bash -l
(zadanie zostanie uruchomione na węźle wn1234, z rezerwacją na 6 procesorów/rdzeni na jednym(!) węźle)

Identyfikacja zadania

Po wstawieniu zadania do kolejki poleceniem sbatch system kolejkowy powiadamia nas o przyznanym numerze zadania (JOBID). Wykonanie polecenia:

scontrol show job JOBID

zwraca nam informacje o wszystkich parametrach, które system kolejkowy przyznał naszemu zadaniu. Jeśli polecenie to wykonamy gdy nasz program został już uruchomiony, możemy między innymi sprawdzić, na których węzłach/procesorach wykonywane są nasze obliczenia. W czasie trwania obliczeń na węźle możemy połączyć się z tym węzłem przy pomocy ssh, nasza sesja zostanie jednak przypisana do tych samych procesorów, które wykorzystuje zadnie. Z tego powodu nadużywanie logowania na węzły może prowadzić do obniżenia wydajności prowadzonych obliczeń.

Wyświetlanie listy wszystkich zleconych przez użytkownika zadań

squeue -u nazwa_uzytkownika

Na końcu polecenia można dodać też opcję "-l" dla bardziej szczegółowych informacji.

Usuwanie zadania z kolejki

Polecenie scancel służy do usuwania zadania z systemu kolejkowego (np. gdy zorientowaliśmy się o popełnionym w skrypcie błędzie). Składnia polecenia scancel:

scancel JOBID

Informacje o kolejkach, zadaniach itp.

  • scontrol show partition hydra
    informacje o partycji (kolejce) hydra
  • scontrol show job JOBID
    szczegółowe informacje o zadaniu
  • scontrol show node wn1234
    szczegółowe informacje o węźle wn1234
  • sinfo
    ogólne informacje o partycjach (np. limity czasu)
  • smap -i 2
    quasi-graficzna informacja o wykorzystaniu węzłów
  • sacct --format=jobid,jobname,account,partition,ntasks,alloccpus,maxrss,elapsed,state,exitcode -j JOBID
    informacje o wykorzystaniu zasobów zadania zakończonego o numerze podanym jako JOBID


Dalsze informacje o systemie SLURM

Zdecydowanie więcej informacji na temat systemu kolejkowego slurm można uzyskać w podręczniku systemowym, oraz na stronach LLNL, warto zacząć od: computing.llnl.gov/linux/slurm/quickstart.html