Fluent równoległy
From Centrum Komputerów Dużej Mocy, ICM Uniwersytet Warszawski
| FLUENT | |
|---|---|
| |
| 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.
