Portable Batch System
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 |
PBS i Torque
PBS (Portable Batch System) 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.
System Torque jest zmodyfikowaną, otwartą wersją PBS.
Komendy i skrypty PBS
Za pomocą komend systemu PBS możemy sterować przebiegiem obliczeń naszego zadania.
Podstawowe komendy to:
- qsub - wstawianie zadania do kolejki
- qstat - sprawdzanie statusu zadania wstawionego do kolejki
- qdel - usuwanie zadania z kolejki
- qalter - zmiana parametrów zadania w kolejce
Opis zadania i zapotrzebowanie na zasoby można specyfikować w specjalnym skrypcie - pliku tesktowym dla systemu PBS. Skrypt tworzy użytkownik.
Składnia skryptów PBS
Skrypt składa się z dyrektyw systemu PBS, są to linie zaczynające się od #PBS oraz instrukcji uruchamiających odpowiedni program.
- Pierwsza linia skryptu powinna zawierać ścięzkę do interpretera (shell), który ma wykonać skrypt na przydzielonym węźle obliczeniowym
- Kolejne linie powinny zawierać specyfikację zasobów - opcja -l wartosc i opcje sterujące wykonaniem zadania - pozostałe opcje, zgodnie z tabelą
- Linie te zawierają dyrektywy systemu PBS, zaczynają się od #PBS 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:
#!/bin/csh #PBS -N MojeZadanie #PBS -l nodes=2:ppn=16 #PBS -l mem=128mb #PBS -l walltime=1:00:00 #PBS -A G01-77 #PBS -q test cd $PBS_O_WORKDIR mpiexec ./program
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 |
|---|---|
| -N name | Ustawia nazwę zadania (max. 15 znaków), domyślnie - nazwa skryptu. Pod taką nazwą będzie widziane zadanie w systemie. |
| -l walltime | Maksymalna długość działania zadania od momentu jego uruchomienia.* |
| -l nodes=NN:ppn=MM | Liczba węzłów obliczeniowych do rezerwacji wraz z liczbą rdzeni procesorowych per węzeł. Oznacza rezerwację NN węzłów po MM procesorów w każdym węźle.* |
| -l mem=XX | Całkowita ilość pamięci przydzielona wszystkim procesorom. Dostępne jednostki: kb, mb, gb.* |
| -A nr grantu | Numer grantu obliczeniowego użytkownika. Używane w celach sprawozdawczych.* |
| -a date_time | Deklaruje czas, przed którym zadanie nie może zostać uruchomione. Format argumentu - [[[[CC]YY]MM]DD]hhmm[.SS], np. qsub -a 02011200 oznacza drugiego lutego w południe. |
| -h | Wprowadza zadanie w stan 'hold' (uruchomienie wstrzymane na życzenie użytkownika). |
| -I | Wykonuje zadanie interaktywnie, tzn. stdin, out i err pozostają skierowane na konsolę użytkownika w celu umożliwienia interakcji. Opcji nie należy używać w skryptach. |
| -m mail_options | Definiuje, w jakich przypadkach wysyłany jest mail do właściciela zadania. Możliwe argumenty:
|
| -M user_list | Lista użytkowników, do których ewenetualne maile będą wysyłane. Format argumentu: user[@host][,user[@host],...]. Default - właściciel zadania. |
| -S path_list | Specyfikuje powłokę, która zostanie użyta do uruchomienia zadania. |
| -q destination | Definiuje kolejkę, do której skierowane zostanie zadanie. |
Przekroczenie któregokolwiek limitu określonego opcją -l powoduje zatrzymanie zadania.
Zmienne środowiskowe
W ramach zadania PBS mamy dostęp do następujących zmiennych środowiskowych. Można korzystać z nich jedynie w skrypcie PBS lub w sesji interaktywanej.
- PBS_O_WORKDIR - ścieżka absolutna do katalogu z którego uruchamiane jest zadanie
- PBS_JOBID - identyfikator zadania w systemie PBS
- PBS_NODEFILE - ścieżka absolutna do pliku zawierającego nazwy węzłów obliczeniowych odpowiadające przydzielonym procesorom
- PBS_TASKNUM - liczba dostępnych procesorow w ramach zadania
- oraz inne, patrz man qsub
Wstawianie zadania do kolejki
Polecenie qsub 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 #PBS . Niektóre opcje tego polecenia są specyficzne dla danego komputera.
Tryb wsadowy
Wstawienie do kolejki zadania opisanego skryptem MojeZadanie.pbs wykonujemy komendą:
qsub MojeZadanie.pbs
Umieści ona w systemie kolejkowym zadanie wsadowe (bez możliwości interakcji). Dodatkowe opcje wykonania zadania możemy wprowadzać w skrypcie lub podać jako parametry polecenia qsub.
Tryb interaktywny
Aby uzyskać dostep do zasobów w trybie interaktywnym z dostępem do powłoki (shell), wykonujemy komendę:
qsub -I MojeZadanie -l nodes=2:ppn=16 -l mem=128mb -l walltime=1:00:00 -A G01-77 -q test
Dodatkowe opcje wykonania zadania możemy wprowadzać jedynie jako parametry polecenia qsub.
Identyfikacja zadania
Po wstawieniu zadania do kolejki poleceniem qsub system kolejkowy powiadamia nas o przyznanym numerze zadania (JOBID). Wykonanie polecenia:
qstat -f 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.
Przekierowanie konsoli
W trybie wsadowym system kolekowy przekieruje dostęp zadania do konsoli do odpowiednich plików. Po zakończeniu zadania są one dostępne w katalogu, z którego zadanie zostało wstawione do kolejki pod nazwami NAZWA.eJOBID oraz NAZWA.oJOBID dla standardowego wyjścia (stdout) oraz standardowego wyjścia błędu (stderr) odpowiednio. Nazwy tych plików zawierają: JOBID - identyfikator zadania PBS oraz NAZWA - parametr opcji -N lub domyślnie nazwa skrypu kolejkowego.
Informacje o kolejkach i zadaniach
Polecenie qstat ma kilka zastosowań:
- sprawdzanie statusu zadania oraz danych dotyczących zarezerwowanych dla niego zasobów
- sprawdzanie zajętości komputera
- sprawdzanie limitów kolejek dostępnych w systemie (pełna lista kolejek)
Poniżej zaprezentowana jest krótka lista opcji polecenia qstat wraz z objaśnieniami działania:
- -a wypisuje skolejkowane zadania
- -f podaje pełną informację o skolejkowanych zadaniach
- -q podaje informacje o limitach kolejek
- -Q podaje informacje o zajętości kolejek
- -B podaje informacje o serwerze kolejkowania
Usuwanie zadania z kolejki
Polecenie qdel służy do usuwania zadania z systemu kolejkowego (np. gdy zorientowaliśmy się o popełnionym w skrypcie błędzie). Składnia polecenia qdel:
qdel [-W delay] JOBID
Opcja -W pozwala ustawić przerwę pomiędzy wysłaniem sygnału SIGTERM, a SIGKILL do kończonego zadania.
Zmiana parametrów zadania w kolejce
Polecenie qalter służy do zmieniania parametrów skolejkowanego zadania. Oczywiście są takie zmiany parametrów , które nie są dozwolone. Jeśli próbujemy dokonać zmiany limitu zasobów potrzebnych do wykonania zadania, nie możemy przekroczyć limitów kolejki, w której aktualnie się znajdujemy. Zakazana oczywiście jest również zamiana kolejki w której znajduje się nasze zadanie. Składnia polecenia qalter jest identyczna jak w przypadku qsub, należy jedynie dodatkowo podać identyfikator zadania (JOBID) jako ostatni argument.
