Jak korzystać z kolejek PBS
< Podręcznik użytkownika KDM < System kolejkowy < Jak korzystać z kolejek PBS
Kolejki
Uruchamianie obliczeń na klastrze Supernova odbywa się w ramach kolejek, które różnią się między sobą priorytetem, limitami czy prawami dostępu (a czasem również dostępnymi zasobami):
- short6h - kolejka o wysokim priorytecie na krótkie zadania
- limit czasu procesora: 6 h
- short48h - kolejka o wysokim priorytecie na krótkie zadania
- limit czasu procesora: 48 h
- short7d - kolejka o średnim priorytecie na średnie zadania
- limit czasu procesora: 168 h
- normal - kolejna na typowe zadania
- limit czasu działania zadania (Walltime): 504 h
- bigmem - kolejka na zadania wymagające powyżej 23 050 MB pamięci na węzeł (ale nie więcej niż 192 901 MB)
- limit czasu działania zadania (Walltime): 504 h
! | Dostęp do powyższej kolejki jest przydzielany przez administratorów na prośbę użytkownika. Więcej informacji można znaleźć w artykule Tesla |
- infinity - kolejka na bardzo długie zadania o niskim priorytecie
Zasoby
Po wyborze odpowiedniej kolejki należy zadeklarować ilość wymaganych zasobów. Dostępne parametry:
- liczba rdzeni obliczeniowych - parametr ncpus
- domyslnie: 1
- maksymalnie:
- 8 na węzłach II i III generacji
- 12 na węzłach IV generacji
- 16 jeżeli korzystamy z kart graficznych na węzłach Tesla
- 48 w kolejce bigmem na węzłach Tesla
- rozmiar pamięci - parametr mem
- domyślnie: 1700 MB
- maksymalnie:
- 15250 MB na węzłach II i III generacji
- 23050 MB na węzłach IV generacji
- 65536 MB jeżeli korzystamy z kart graficznych na węzłach Tesla
- 192901 MB w kolejce bigmem na węzłach Tesla
- liczba kart graficznych - parametr ngpus
- domyślnie: 0 (zadanie trafi na węzeł z GPU dopiero jeżeli użytkownik tego zażąda)
- maksymalnie: 2
! | Zadanie wymagające GPU trafi na specyficzny węzeł roboczy. Więcej informacji o tym można znaleźć w artykule Tesla |
Osobnym słowem kluczowym, które używa się jak żądanie zasobu jest
- liczba procesów mpi - parametr mpiprocs
- domyślnie: 1
- maksymalnie:
- 8 na węzłach II i III generacji
- 12 na węzłach IV generacji
- 16 jeżeli korzystamy z kart graficznych na węzłach Tesla
- 48 w kolejce bigmem na węzłach Tesla
Należy skorzystać z tego parametru, kiedy w jednej części alokacji chcemy uruchomić więcej niż jeden proces MPI.
Przydział może odbywać się w jednej, spójnej części (dla zadań szeregowych lub zrównoleglonych w obrębie jednego komputera) lub kilku (dla zadań zrównoleglonych przy użyciu bibliotek MPI). Deklarację buduje się używając wyrażenia select dla parametru -l polecenia qsub (opisanego w dalszej części). Jej format jest następujący:
select=X:zasób1=wartość1:zasób2=wartość2+Y:zasób3=wartość3:zasób4=wartość4
gdzie:
- X - liczba części pierwszego zbioru zasobów
- zasób1=wartość1:zasób2=wartość2 - opis pierwszego zbioru zasobów
- Y - liczba części drugiego zbioru zasobów
- zasób3=wartość3:zasób4=wartość4 - opis drugiego zbioru zasobów
Liczba zbiorów zasobów może być różna (równa 1 lub większa).
Przykłady
- Zadanie uruchamia 4 procesy w obrębie jednego węzła i wymaga 4096 MB RAM (po 1024 MB na proces)
select=1:ncpus=4:mem=4096MB
- Zadanie uruchamia 8 procesów MPI, z których każdy wymaga 512 MB RAM
select=8:ncpus=1:mem=512MB
- Zadanie uruchamia 32 procesów MPI, po 4 na każdym węźle (i domyślne 1700 MB na każde 4 procesy)
select=8:ncpus=4:mpiprocs=4
- Zadanie wymaga 16GB RAM (i jednego rdzenia)
select=1:mem=16GB
- Zadanie wymaga 1 karty GPU i 4 GB pamięci
select=1:ngpus=1:mem=4GB
Wstawianie zadań
Do wstawiania zadań do kolejki służy polecenie qsub. Opis zadania powinien być zawarty w skrypcie powłoki. Natępnie taki skrypt przekazywany jest do kolejki jako parametr polecenia qsub (lub na standardowe wejście tej komendy). Najważniejsze parametry polecenia można znaleźć poniżej:
- -q - wybór kolejki
- -l specyfikacja wymagań - wartości parametru mogą być następujące
- select= - opis wymagań
- software= - informacja o używanym oprogramowaniu
! | Proszę korzystać z powyższego parametru - pozwala to administratorom sporządzać statystyki wykorzystania |
- -N - nazwa zadania (jej długość nie może przekraczać 12 znaków)
- -m - włączenie wysyłania powiadomień o zdarzeniach
- b - o rozpoczęciu zadania
- e - o zakończeniu zadania
- -I - zadanie interaktywne (w tym przypadku nie należy przekazywać skryptu)
- -X - przekierowanie wyświetlania (ma sens w przypadku zadań interaktywnych, wymaga logowania z przekierowaniem wyświetlania
Cenną cechą programu qsub jest możliwość przekazywania parametrów w skrypcie podanym jako argument, poprzez linie zaczynające się od:
#PBS
Przykłady
- Uruchomienie obliczeń na postawie skryptu
- zawartość skryptu uruchom.sh
#!/bin/bash #PBS -q short6h #PBS -l select=1:ncpus=2:mem=2048MB #PBS -l software=test_qsub #PBS -m be # wejscie do katalogu, z ktorego zostalo wstawione zadania cd $PBS_O_WORKDIR # uruchom program ./test1 > wynik.txt
- wstawienie skryptu
qsub uruchom.sh
- Uruchomienie zadania interaktywnego (np. w celu kompilacji oprogramowania)
qsub -I -l select=1:ncpus=4:mem=4096MB -l software=GCC_4.7.2
- Przekazanie skryptu przez standardowe wejście qsub
- zawartość pliku skrypt.sh
#!/bin/bash cat << EOF | qsub #!/bin/bash #PBS -q short48h #PBS -l select=1:mem=512MB #PBS -l software=qsub_stdin #PBS -m be # wejscie do katalogu, z ktorego zostalo wstawione zadania # \ przez $ jest wymagany, aby powloka nie podmienila # $PBS_O_WORKDIR na wartosc podczas wstawiania - tylko # podczas dzialania zadania na wezle cd \$PBS_O_WORKDIR # uruchom program ./test1 > wynik.txt EOF <pre> * wstawienie zadania: <pre> chmod +x skrypt.sh ./skrypt.sh
Więcej o poleceniu qsub można znaleźć w manualu - poprzez uruchomienie polecenia:
man qsub
Sprawdzanie stanu systemu kolejkowego
Do sprawdzenia stanu kolejki służy polecenie qstat. Można korzystać z następujących jego parametrów:
- -r - pokazuje uruchomione zadania
- -i - pokazuje zadania oczekujące
- -u - pokazuje zadania wybranego użytkownika
- -f - pokazuje szczegółowe informacje o zadaniach (lub zadaniu, jeżeli podamy jego identyfikator po parametrze)
Usuwanie zadań
Jeżeli z jakiegoś powodu istnieje potrzeba usunięcia zadania - należy skorzystać z polecenia qdel, które przyjmuje jako parametr identyfikator zadania. Można kasować zadania zarówno oczekujące w kolejce jak i uruchomione.
Zobacz też: PBSPro, konfiguracja kolejek PBS
Systemy kolejkowe |
PBSPro |
---|