Jak korzystać z kolejek PBS: Różnice pomiędzy wersjami
Linia 126: | Linia 126: | ||
=== Uruchomienie obliczeń na postawie skryptu === | === Uruchomienie obliczeń na postawie skryptu === | ||
* zawartość skryptu uruchom.sh | * zawartość skryptu uruchom.sh | ||
− | < | + | <source lang=bash> |
#!/bin/bash | #!/bin/bash | ||
#PBS -q short6h | #PBS -q short6h | ||
Linia 138: | Linia 138: | ||
# uruchom program | # uruchom program | ||
./test1 > wynik.txt | ./test1 > wynik.txt | ||
− | </ | + | </source> |
* wstawienie skryptu | * wstawienie skryptu | ||
<pre> | <pre> | ||
qsub uruchom.sh | qsub uruchom.sh | ||
</pre> | </pre> | ||
+ | |||
=== Uruchomienie zadania interaktywnego === | === Uruchomienie zadania interaktywnego === | ||
<pre> | <pre> |
Wersja z 08:13, 6 cze 2014
< 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 (ale nie więcej niż 242 053 MB) na węzeł
- 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.
Przydział zasobów 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).
Dostępne parametry:
- ncpus - liczba rdzeni obliczeniowych
- domyslnie: 1
- maksymalnie:
- 8 na węzłach II i III generacji
- 12 na węzłach IV generacji
- 4 jeżeli korzystamy z kart graficznych na węzłach Tesla
- 60 w kolejce bigmem na węzłach Tesla
- mem - rozmiar pamięci
- domyślnie: 1700 MB
- maksymalnie:
- 15 050 MB na węzłach II i III generacji
- 23 050 MB na węzłach IV generacji
- 16 384 MB jeżeli korzystamy z kart graficznych na węzłach Tesla
- 242 053 MB w kolejce bigmem na węzłach Tesla
- ngpus - liczba kart graficznych
- 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órego używa się podczas żądania zasobów, jest liczba procesów MPI zadania:
- mpiprocs - liczba procesów MPI
- domyślnie: 1
- maksymalnie:
- 8 na węzłach II i III generacji
- 12 na węzłach IV generacji
- 4 jeżeli korzystamy z kart graficznych na węzłach Tesla
- 60 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.
- Przykładowe definicje wymagań
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
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.
Rezerwacje
Może się zdarzyć, że dostęp do zasobów potrzebny jest w określonym czasie np. za 3 tygodnie w poniedziałek między godziną 8 a 16. W takich przypadkach należy skorzystać z rezerwacji - powoduje to powstanie nowej kolejki, do której wstawione zadania nie będą konkurować o dostęp z innymi zadaniami. Należy jednak pamięć, że nie zawsze będzie to możliwe (będzie tylko wtedy kiedy system kolejkowy w żądanym czasie będzie w stanie zapewnić zasoby). Tworzenie rezerwacji odbywa się poleceniem pbs_rsub, którego najważniejsze parametry to:
- -R - czas rozpoczęcia rezerwacji w formacie YYYYMMDDHHmm (201302010456 oznacza w takim przypadku 4:56 01.02.2013)
- -E - czas zakończenia rezerwacji w formacie YYYYMMDDHHmm
- -l - specyfikacja zasobów rezerwacji (w formacie takim, jak w przypadku zadań)
- -r - reguła rekurencji (jeżeli rezerwacja ma się powtarzać cyklicznie, więcej na ten temat w manualu polecenia pbs_rsub)
- -U - lista użytkowników, którzy mogą korzystać z rezerwacji
Do wyświetlenia informacji o rezerwacjach służy polecenie pbs_rstat. Bez parametrów listuje ono założone rezerwacje, a szczegóły o wybranej można zobaczyć dodając parametr -f i identyfikator. Aby usunąć rezerwację należy użyć polecenia pbs_rdel.
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
qsub -I -l select=1:ncpus=1:mem=2048MB -l software=CFX_14.5
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
- wstawienie zadania:
chmod +x skrypt.sh ./skrypt.sh
Więcej o poleceniu qsub można znaleźć w manualu - poprzez uruchomienie polecenia:
man qsub
Zlecenie rezerwacji
Próba utworzenia rezerwacji w bieżącym dniu (dlatego pominięto rok, miesiąc i dzień w wymaganiach) od 12:00 do 14:00, powtarzającej się w poniedziałki, środy i piątki aż do 31.12.2013, na zasobach składających się z dwóch części po 1 rdzeniu i 2000 MB RAM, z której mogą korzystać użytkownicy user1 oraz user2
pbs_rsub -R 1200 -E 1400 -r "FREQ=WEEKLY;BYDAY=MO,WE,FR;UNTIL=20131231" -l select=2:ncpus=1:mem=2000MB -U user1,user2
Jeżeli utworzenie rezerwacji będzie możliwe - system kolejkowy wyśle wiadomość (na adres zarejestrowany w bazie) z potwierdzeniem.
Zobacz też: PBSPro, konfiguracja kolejek PBS
Systemy kolejkowe |
PBSPro |
---|