Views

Fluent: Wstawianie do kolejki

From Centrum Komputerów Dużej Mocy, ICM Uniwersytet Warszawski

Jump to: navigation, search
FLUENT
Grafika:Fluent_ansys_logo.gif
Produkt: FLUENT
Producent: ANSYS
Licencja:
Zainstalowany na: halo2 rekin labuz1 labuz3 lab edukacyjny
Wersja: 12.1, 13.0.LM2, 14.0
Email: fluent@icm.edu.pl
Program Fluent
Licencja krajowa
Fluent w ICM
Uruchamianie
Obliczenia równoległe
Program Gambit
Gambit w ICM
Uruchamianie
Program Tgrid
Tgrid w ICM
Uruchamianie
Obliczenia w ICM
Tryb wsadowy
Fluent sekwencyjny
Fluent równoległy
Wstawianie do kolejki
Rozmaitości
Projekty użytkowników
Linki

Uruchamianie obliczeń klastrze można wykonywać tylko za pośrednictwem systemu kolejkowego.

Przed wstawieniem zadania do kolejki należy upewnić się, że opisujący je skrypt zapisany jest w pliku wykonywalnym.

Contents

Pliki wykonywalne - atrybuty pliku

Załóżmy, że skrypt kolejkowy został zapisany w pliku o nazwie job. Polecenie:

     ls -l job

pozwala wyświetlić atrybuty tego pliku.

     -rwxr-xr-x 1 user group 138 Oct 30 16:05 job

x oznacza, że plik jest wykonywalny.

Jeśli symbol x nie występuje na zaznaczonej pozycji, należy zmienić atrybuty pliku aby uczynić go wykonywalnym. Służy do tego polecenie:

     chmod 755 job

Polecenie qsub

Zadanie wstawia się do kolejki za pomocą polecenia:

     qsub ./job

Możliwość szybkiego sprawdzenia poprawności zadania wsadowego zapewnia kolejka test. Nie jest to kolejka przeznaczona do prowadzenia obliczeń i dlatego obowiązuje na niej ograniczenie czasu wykonywania zadania do 15 minut. Wstawienie zadania do kolejki test nastąpi w wyniku wydania polecenia:

     qsub -q test ./job

Uwaga o kolejkach na klastrze halo

Wszelkie zadania należy wstawiać do kolejki halo, ewentualnie test. Przydział zasobów w zależności od ustaleń podanych w skrypcie kolejkowym jest następujący:

  • zadania z ppn>2 trafiają na węzły v40z (ośmioprocesorowe)
  • pozostałe w większości wypadków na e325 (dwuprocesorowe)
  • walltime < 15 minut oraz zadanie mieszczące się na dwóch węzłach dwuprocesorowych - kolejka test (praktycznie natychmiastowy start)
  • na zadanie testowe są przydzielone dwa węzły
Krotki opis wezłów
97x 2-procesorowe Opteron 2GHz, 2GB ram, 76GB przestrzeni dyskowej IDE, oraz
12x 4-procesorowe Opteron 2.2GHz dual-core (widoczne jako 8 procesorow), 16GB ram, 112GB macierzy dyskowej SCSI.
Zadania 1:ppn=(1|2) maja pierwszeństwo na 80 nodach dwuprocesorowych

Polecenie qstat

Po umieszczeniu zadania w kolejce warto jest sprawdzić, co dzieje się z zadaniem. Służy do tego polecenie qstat. 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)

Standardowy zestaw informacji wypisywanych po wydaniu polecenia qstat zawiera nastepujące pozycje:

  • Job id oznacza numer zadania przydzielony przez system kolejkowy
  • Name nazwa zadania w kolejce (zgodna z nazwą podana w skrypcie kolejkowym frazą #PBS -N zadanie
  • User nazwa użytkownika
  • Time Use wykorzystany czas
  • S status zadania. R oznacza, że zadanie jest wykonywane, Q oznacza, że zadanie oczekuje na wykonanie.
  • Queue nazwa kolejki. Ustawienia na klastrze halo są takie, że dobór kolejki następuje automatycznie na podstawie charakterystyki zadania (liczba procesorów, czas obliczeń). Wyjątkiem jest kolejka testowa 'test'.
Poniżej podany jest przykładowy zestaw informacji uzyskanych za pomocą polecenia qstat:
  Job id              Name             User             Time Use S Queue
  ------------------- ---------------- ---------------- -------- - -----
  69195.halo          test             ala              311:28:1 R halo_1n_336h   
  69214.halo          zadanie          basia            621:42:4 R halo_1n_336h   
  69209.halo          tunel_223        basia            621:54:4 R halo_1n_336h   
  71260.halo          most             zosia                   0 Q halo_16n_336h  


Wykonując polecenie qstat z różnymi opcjami pozwala modyfikować wypisywane informacje:

  • -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
  • -n wypisuje zadania w kolejkach z podaniem węzłów, na których są wykonywane
  • -u nazwa_użytkownika wypisuje zadania wysłane przez użytkownika o podanej nazwie.

Opcje można ze sobą łączyć. Na przykład polecenie qsub -n -u ala wyświetli informację o wszystkich zadaniach umieszczonych w kolejce (oczekujących na wykonywanie oraz wykonywanych) przez użytkownika ala wraz z podaniem numerów węzłów przydzielonych do realizacji tych zadań.

Po wstawieniu zadania do kolejki system kolejkowy powiadamia o przyznanym numerze zadania (job_id). Wykonanie polecenia:

  qstat -f job_id

zwraca informacje o wszystkich parametrach, które system kolejkowy przyznał temu zadaniu. Jeśli polecenie to wykona się po uruchomieniu zadania (status R), można między innymi sprawdzić na których węzłach/procesorach wykonywane są nasze obliczenia.

Polecenie qdel

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 job_id

Uwaga na zakończenie - 'podglądanie' przebiegu obliczeń

Uruchamiając zadanie poprzez system kolejkowy należy 'mimo wszystko' kontrolować jego przebieg. Zdarza się, aczkolwiek rzadko, że w wyniku chwilowych problemów z łącznością z serwerem licencji, Fluent nie potrafi kontynuować obliczeń, natomiast do systemu kolejkowego nie jest przekazywany sygnał, że obliczenia zostały de facto zakończone. Takie uśpione zadania należy usuwać z kolejki ręcznie, za pomocą polecenia qdel.

W szczególności zalecane jest sprawdzanie 'postępu' obliczeń, co w przypadku programu Fluent oznacza przede wszystkim sprawdzanie zawartości pliku, w którym znajduje się zapis konsoli (w konwencji przyjętej dla potrzeb opisu znajdującego się na tych stronach jest to plik output) oraz zawartości plików zawierających 'monitory', czyli zapis ewolucji wybranych wartości i parametrów zadania. Ponieważ zapis tych informacji najczęściej odbywa się na dysku związanym z węzłem, na którym wykonywane są obliczenia (a nie w katalogu domowym na 'halo'), bezpośrednia kontrola przebiegu zadania wymaga:

  • sprawdzenia, na którym węźle wykonywane są obliczenia:
qstat -n -u nazwa_użytkownika
załóżmy, że w wyniku polecenia:
227:aniat@halo:/home/staff/aniat/test# qstat -1 -n -u aniat
wyświetliła się następująca informacja:
halo: 
                                                                  Req'd  Req'd   Elap
Job ID               Username Queue    Jobname    SessID NDS   TSK Memory Time  S Time
-------------------- -------- -------- ---------- ------ ----- --- ------ ----- - -----
77015.halo           aniat    test     test_autos  28544     1  --  460mb 00:15 R   --  n32/0

Oznacza to, że obliczenia są wykonywane na węźle n32
  • zalogowania się na tę maszynę za pomocą polecenia ssh, w tym przypadku poprzez:
ssh n32
  • obejrzenia zawartości interesujących plików.
Jeśli postępują Państwo zgodnie z konwencją podaną w przykładowym skrypcie kolejkowym, plików należy poszukiwać w katalogu /tmp1/nazwa_użytkownika/numer_zadania.
W omawianym tu przykładzie można postąpić następująco:
201:aniat@n32:/home/staff/aniat# cd /tmp1/aniat

zmiana katalogu na katalog /tmp1/aniat

202:aniat@n32:/tmp1/aniat# ls -l /tmp1/aniat
total 4
drwxr-xr-x  2 aniat icm-staff 4096 Aug  9 14:18 28552

wyświetlenie zawartości tego katalogu. 'Domyślamy się', że katalog 28552 jest katalogiem roboczym wykonywanego (i obserwowanego) zadania.

203:aniat@n32:/tmp1/aniat# cd 28552
204:aniat@n32:/tmp1/aniat/28552# ls -l

przejście do tego katalogu, wyświetlenie jego zawartości, możliwość oglądania zawartości plików, dat i godzin ich ostatnich modyfikacji (to bardzo znacząca informacja!), itd.