Views

LoadLeveler

From Centrum Komputerów Dużej Mocy, ICM Uniwersytet Warszawski

Jump to: navigation, search
Poradnik
Konto użytkownika  • Poczta elektroniczna  • Korzystanie z SSH  • Systemy kolejkowe: PBS (Klaster halo2), LoadLeveler (BlueGene/P notos)
Programowanie
Kompilatory: C/C++, Fortran  • Programowanie równoległe: OpenMP, MPI, UPC, CAF, SHMEM, pthreads  • Biblioteki numeryczne: BLAS, LAPACK, FFTW
Optymalizacja
Uruchamianie i optymalizacja kodów na architekturze Blue Gene/P  • Uruchamianie i optymalizacja kodów na halo2
Krok po kroku
Logowanie do ICM (Windows)  • Logowanie do ICM (UNIX)  • MPI (Klaster halo2)  • MPI (BlueGene/P notos)
Wszystkie "Krok po kroku"
Dokumentacja

Contents

LoadLeveler

LoadLeveler to system kolejkowy działający na komputerach obliczeniowych, zarządzający zasobami, rezerwujący i przydzielający je odpowiednim użytkownikom zgodnie z obowiązującymi zasadami.

LoadLeveler produkowany jest przez firmę IBM.

Komendy i skrypty LoadLeveler

Za pomocą komend systemu LoadLeveler możemy sterować przebiegiem obliczeń naszego zadania.

Podstawowe komendy to:

  • llsubmit - wstawianie zadania do kolejki
  • llq - sprawdzanie statusu zadania wstawionego do kolejki
  • llcancel - usuwanie zadania z kolejki

Opis zadania i zapotrzebowanie na zasoby można specyfikować w specjalnym skrypcie - pliku tesktowym dla systemu LoadlLeveler. Skrypt tworzy użytkownik.

Składnia skryptów LoadLeveler

Skrypt składa się z dyrektyw systemu LoadLeveler, są to linie zaczynające się od # @ oraz instrukcji uruchamiających odpowiedni program.

  • Pierwsze linie skryptu powinny zawierać specyfikację zasobów oraz opcje sterujące wykonaniem zadania i inne, zgodnie z tabelą,
  • Linie te zawierają dyrektywy systemu LoadLeveler, zaczynają się od # @ i nie powinny być oddzielane innymi wpisami,
  • Następnie należy umieścić instrukcje konieczne do uruchomienia programu, żadne z nich nie mogą pracować w tle

Przykładowy skrypt LoadLeveler z komputera notos:

# @ job_name = Ping_pong
# @ account_no = grupa
# @ class = kdm
# @ error = ping_pong.err
# @ output = ping_pong.out
# @ environment = COPY_ALL
# @ wall_clock_limit = 00:20:00
# @ notification = error
# @ notify_user = $(user)@icm.edu.pl
# @ job_type = bluegene
# @ bg_size = 32
# @ queue
mpirun -exe ping_pong -mode SMP -np 32 

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

Opcje sterujące wykonaniem zadania

Gwiazdką (*) oznaczone są opcje wymagane dla każdego zadania.

Opcja Znaczenie
# @ job_type = bluegene Ustawia typ zadania. Powinno być zawsze ustawione na bluegene.*
# @ bg_size = N Liczba węzłów obliczeniowych Blue Gene/P do rezerwacji.*
# @ account_no = nr grantu Numer grantu obliczeniowego użytkownika. Używane w celach sprawozdawczych.*
# @ wall_clock_limit = HH:MM:SS Maksymalna długość działania zadania od momentu jego uruchomienia.*
# @ class = klasa Wybranie klasy zadania. Dostępne klasy: llclass.*
# @ bg_connection = MESH/TORUS Określa sposób połączenia sieciowego pomiędzy węzłami. Domyślnie: MESH.
# @ environment = env1; env2; .. Określa sposób kopiowania zmiennych środowiskowych użytkownika do środowiska obliczeniowego. Możliwe ustawienia:
  • COPY_ALL - wszystkie zmienne ze środowiska będą kopiowane,
  • $var - zmienna var ma być kopiowana do środowiska obliczeniowego,
  •  !var - zmienna var nie ma być kopiowana do środowiska obliczeniowego,
  • var=value - zmienna var ma przyjąć wartość value w środowisku obliczeniowym.
# @ job_name = nazwa zadania Ustawia nazwę zadania. Pod taką nazwą będzie widziane zadanie w systemie.
# @ output = plik Nazwa pliku, do którego trafi przekierowanie standardowego strumienia wyjścia.*
# @ error = plik Nazwa pliku, do którego trafi przekierowanie standardowego strumienia błędu.*
# @ initialdir = dir Ścieżka roboczego katalogu obliczeń.
# @ notification = typ Definiuje, w jakich przypadkach wysyłany jest mail do właściciela zadania.
Możliwe argumenty:
  • error - gdy zadanie zakończyło się błędem,
  • start - gdy zadanie zaczęło się liczyć,
  • complete - gdy zadanie się zakończyło,
  • always - we wszystkich powyższych przypadkach,
  • never - nigdy.
# @ notify_user = email Email użytkownika, do którego ewenetualne maile będą wysyłane.
Format argumentu: user[@host][,user[@host],...].


Wstawianie zadania do kolejki

Polecenie llsubmit służy do wstawiania zadań do systemu kolejkowego. W tej chwili jedynym wspieranym trybem pracy w środowisku Blue Gene/P jest tryb wsadowy.

Tryb wsadowy

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

llsubmit MojeZadanie.ll

Umieści ona w systemie kolejkowym zadanie wsadowe (bez możliwości interakcji).


Identyfikacja zadania

Po wstawieniu zadania do kolejki poleceniem llsubmit system kolejkowy powiadamia nas o przyznanym numerze zadania (Id), np. notos.335.0. Wykonanie polecenia:

llq -s Id

zwraca nam informacje o wszystkich parametrach, które system kolejkowy przyznał naszemu zadaniu. Ewentualnie polecenie to informuje nas również dlaczego nasze zadanie nie zostało jeszcze uruchomione.


Informacje o kolejkach i zadaniach

Polecenie llq ma dwa główne zastosowania:

  • sprawdzanie statusu zadania oraz danych dotyczących zarezerwowanych dla niego zasobów,
  • sprawdzanie zajętości komputera.

Przykładowy wynik działania polecenia llq:

Id                       Owner      Submitted   ST PRI Class        Running On 
------------------------ ---------- ----------- -- --- ------------ -----------
notos.336.0              sheed       2/11 16:21 R  50  powiew       notos      

1 job step(s) in queue, 0 waiting, 0 pending, 1 running, 0 held, 0 preempted

Więcej informacji: man llq

Sprawdzanie listy i limitów klas dostępnych w systemie:

llclass

Usuwanie zadania z kolejki

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

llcancel Id


Szkolenia