Jak korzystać z kolejek PBS: Różnice pomiędzy wersjami

Z KdmWiki
Przejdź do nawigacji Przejdź do wyszukiwania
m (Poprawki edycyjne)
Linia 59: Linia 59:
 
Liczba zbiorów zasobów może być różna (równa 1 lub większa).
 
Liczba zbiorów zasobów może być różna (równa 1 lub większa).
  
=== Przykłady ===
+
; 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):
+
Zadanie uruchamia 4 procesy w obrębie jednego węzła i wymaga 4096 MB RAM (po 1024 MB na proces):
 
<pre>
 
<pre>
 
select=1:ncpus=4:mem=4096MB
 
select=1:ncpus=4:mem=4096MB
 
</pre>
 
</pre>
; Zadanie uruchamia 8 procesów MPI, z których każdy wymaga 512 MB RAM
+
Zadanie uruchamia 8 procesów MPI, z których każdy wymaga 512 MB RAM
 
<pre>
 
<pre>
 
select=8:ncpus=1:mem=512MB
 
select=8:ncpus=1:mem=512MB
 
</pre>
 
</pre>
; Zadanie uruchamia 32 procesów MPI, po 4 na każdym węźle (i domyślne 1700 MB na każde 4 procesy):
+
Zadanie uruchamia 32 procesów MPI, po 4 na każdym węźle (i domyślne 1700 MB na każde 4 procesy):
 
<pre>
 
<pre>
 
select=8:ncpus=4:mpiprocs=4
 
select=8:ncpus=4:mpiprocs=4
 
</pre>
 
</pre>
; Zadanie wymaga 16GB RAM (i jednego rdzenia)
+
Zadanie wymaga 16GB RAM (i jednego rdzenia)
 
<pre>
 
<pre>
 
select=1:mem=16GB
 
select=1:mem=16GB
 
</pre>
 
</pre>
; Zadanie wymaga 1 karty GPU i 4 GB pamięci
+
Zadanie wymaga 1 karty GPU i 4 GB pamięci
 
<pre>
 
<pre>
 
select=1:ngpus=1:mem=4GB
 
select=1:ngpus=1:mem=4GB
Linia 100: Linia 100:
 
</pre>
 
</pre>
  
=== Przykłady ===
+
== Przykłady ==
; Uruchomienie obliczeń na postawie skryptu
+
=== Uruchomienie obliczeń na postawie skryptu ===
 
* zawartość skryptu uruchom.sh
 
* zawartość skryptu uruchom.sh
 
<pre>
 
<pre>
Linia 120: Linia 120:
 
qsub uruchom.sh
 
qsub uruchom.sh
 
</pre>
 
</pre>
; Uruchomienie zadania interaktywnego (np. w celu kompilacji oprogramowania)
+
=== Uruchomienie zadania interaktywnego (np. w celu kompilacji oprogramowania) ===
 
<pre>
 
<pre>
 
qsub -I -l select=1:ncpus=4:mem=4096MB -l software=GCC_4.7.2
 
qsub -I -l select=1:ncpus=4:mem=4096MB -l software=GCC_4.7.2
 
</pre>
 
</pre>
  
; Przekazanie skryptu przez standardowe wejście '''qsub'''
+
=== Przekazanie skryptu przez standardowe wejście '''qsub''' ===
 
* zawartość pliku skrypt.sh
 
* zawartość pliku skrypt.sh
 
<pre>
 
<pre>

Wersja z 10:01, 26 mar 2013

< 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
  • 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:

  • ncpus - liczba rdzeni obliczeniowych
    • 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
  • mem - rozmiar pamięci
    • 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
  • ngpus - liczba kart graficznych
    • domyślnie: 0 (zadanie trafi na węzeł z GPU dopiero jeżeli użytkownik tego zażąda)
    • maksymalnie: 2

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
      • 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ł 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).

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
  • -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
  • wstawienie zadania:
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