LoadLeveler
From Centrum Komputerów Dużej Mocy, ICM Uniwersytet Warszawski
| 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:
|
| # @ 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:
|
| # @ 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
