Views

Fluent równoległy

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

PRZYKŁAD SKRYPTU KOLEJKOWEGO - Fluent równoległy

Skrypty kolejkowe różnią się w zależności od tego czy obliczenia będą wykonywane na jednym procesorze czy też będą prowadzone w trybie równoległym.

Przykładowy skrypt kolejkowy uruchamiający obliczenia na kilku procesorach może wyglądać następująco:

     #!/bin/csh
     #PBS -S /bin/csh
     #PBS -N zadanie4
     #PBS -l walltime=100:00:00
     #PBS -l mem=460mb
     #PBS -l nodes=2:ppn=2
     #PBS -m e
     #
     env | grep PBS
     mkdir ~$USER/test.$$
     cd ~$USER/test.$$
     cat $PBS_NODEFILE > hostfile
     cp ~$USER/test/inputfile .
     cp ~$USER/test/example.cas .
     cp ~$USER/test/UDF.c .
     use_fluent
     fluent 3ddp -t4 -cnf=hostfile -g -i inputfile >output 


Najważniejsze w tym skrypcie polecenie wywołujące FLUENTa zostało pogrubione. Przypomnijmy, że opcja -g oznacza wyłączenie trybu graficznego, -i inputfile oznacza, ze odpowiedzi na pytania Fluenta będą pobierane z pliku inputfile natomiast wszystkie komunikaty generowane przez Fluenta, które podczas pracy interaktywnej pojawiałyby się na konsoli, będą zapisywane do pliku output. Informacje wyróżnione w pliku skryptowym kolorem są związane z wykorzystaniem wersji równoległej Fluenta.

  • Kolorem czerwonym zaznaczono miejsca, w których definiuje się liczbę procesorów, na których będzie wykonywane zadanie:
     #PBS -l nodes=2:ppn=2

Powyższa opcja oznacza, że obliczenia będą wykonywane na dwóch węzłach (nodes=2), w wykorzystaniem na każdym węźle dwóch procesorów (ppn=2). Zatem przykładowe zadanie zostanie wykonane na czterech procesorach.

Liczba 4 pojawia się w poleceniu wywołującym Fluenta:

     fluent 3ddp -t4 -cnf=hostfile -g -i inputfile >output
  • Kolorem zielonym zaznaczone są miejsca skryptu związane z określeniem maszyn, na których wykonywane będzie zadanie. Zauważmy, że w chwili pisania skryptu nie wiadomo jakie maszyny zostaną przydzielone do realizacji zadania. Z drugiej strony Fluent wymaga, aby w poleceniu wywołującym podać nazwę pliku, w którym wpisane są nazwy maszyn realizujących obliczenia!

Problem ten rozwiązuje się za pomocą zmiennej środowiskowej PBS_NODEFILE, w której przechowywane są nazwy maszyn przydzielonych zadaniu przez system kolejkowy.

Polecenie:

     cat $PBS_NODEFILE > hostfile

"przepisuje" zawartość zmiennej PBS_NODEFILE do pliku o przykładowej nazwie hostfile. Plik ten jest następnie wykorzystany w poleceniu wywołującym Fluenta:

     fluent 3ddp -t4 -cnf=hostfile -g -i inputfile >output 


Przez przystąpieniem do omówienia znaczenia kolejnych linii skryptu informujemy, że "do odwołania" w przypadku uruchamiania zadań równoległych można zapomnieć o obowiązującej użytkowników dużych maszyn w ICM sugestii aby wszystkie dane oraz wyniki wykonywanych programów przechowywać w katalogach /tmp, a nie w katalogu domowym. Zakładamy, że dane dla Fluenta (pliki example.cas, inputfile oraz UDF.c) znajdują się w katalogu /home/users/ala/test. Przypomnijmy też, że zmienna USER oznacza nazwę użytkownika (czyli w naszym przypadku jej wartościa, $USER, jest "ala"), natomiast za pomocą symbolu ~ (tylda) można opisać katalog domowy: ~ala oznacza /home/users/ala, podobnie ~$USER oznacza /home/users/ala. Oznaczenia te pojawiły się w skrypcie.

Przejdźmy do skryptu:

     #!/bin/csh
     #PBS -S /bin/csh

shell do interpretacji pliku ze skryptem


     #PBS -N zadanie4

Określenie nazwy zadania (tu: zadanie4). Pod taką nazwą będzie widziane zadanie w systemie oraz tak zaczynać się będą nazwy plików wynikowych, tj. zadanie4.eXXX oraz zadanie4.oXXX, gdzie XXX to numer zadania jaki przydzielił system kolejkowy PBS.

Definiowanie limitów:

     #PBS -l walltime=100:00:00

limit czasu zegarowego, tu: 100 godzin (opcja wymagana na "gridzie").

     #PBS -l mem=460mb

limit pamięci

     #PBS -l nodes=2:ppn=2

liczba procesorów. Tu: dwa węzły (nodes=2), na każdym dwa procesory (ppn=2); w sumie 4 procesory.

     #PBS -m e

Po zakończeniu obliczeń użytkownik zostanie o tym poinformowany pocztą elektroniczną


     env | grep PBS

Polecenie "informacyjne", nie mające wpływu na realizację zadania. W pliku zadanie4.oXXX wypisane zostaną wartości wszystkich zmiennych środowiskowych związanych z systemem kolejkowym PBS.


     mkdir ~$USER/test.$$

Utworzenie katalogu roboczego, będącego podkatalogiem katalogu domowego użytkownika. $$ w nazwie tworzonego katalogu oznaczają numer przydzielony zadaniu przez system kolejkowy.


     cd ~$USER/test.$$

Przejście do katalogu roboczego, który od tej chwili staje się katalogiem bieżącym.


     cat $PBS_NODEFILE > hostfile

Utworzenie pliku hostfile zawierającego listę nazw maszyn przydzielonych przez system kolejkowy do realizacji zadania.


     cp ~$USER/test/inputfile .
     cp ~$USER/test/example.cas .
     cp ~$USER/test/UDF.c .

Skopiowanie plików definiujących zadanie dla Fluenta do katalogu roboczego (=katalog bieżący).


     use_fluent

Ustawienie środowiska dla programu Fluent.


     fluent 3ddp -t4 -cnf=hostfile -g -i inputfile >output

Uruchomienie programu Fluent

Wszystkie pliki powstające podczas obliczeń znajdują się w katalogu roboczym.

Uwaga: Po zakończeniu obliczeń warto obejrzeć nie tylko wyniki działania programu, ale również zapoznać się z zawartością plików wyjściowych .oXXX oraz .eXXX aby upewnić się, że podczas wykonywania programu nie wystąpiły błędy. Pliki te znajdują się w katalogu, z którego wstawiono zadanie do kolejki.