Views

Portable Batch System

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

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:
  • e - zadanie skończyło się wykonywać,
  • b - zadanie zaczęło się wykonywać,
  • a - wykonywanie zadania zostało przerwane przez system kolejkowania.
-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.

Szkolenia