URUCHAMIANIE APLIKACJI NA KLASTRZE - PRZYKŁADY
WSTĘP
Wygodnym sposobem uruchamiania zadań na klastrze jest przygotowanie skryptu, który zawiera informacje o potrzebnych zasobach przekazywane do systemu kolejkowego (linie zaczynające się od #PBS) oraz komendy uruchamiające aplikacje obliczeniową lub skompilowany program.
Klaster nie jest przeznaczony do pracy w trybie interaktywnym, więc skrypt należy przygotować wcześniej na własnym komputerze. Trzeba pamiętać, aby programy i skrypty, przygotowane do pracy na klastrze, nie wykorzystywały funkcji wymagających wyświetlania okien graficznych, ponieważ uruchamiane w kolejce programy działają wyłącznie w trybie tekstowym.
ANSYS FLUENT
Przykład można pobrać z katalogu: /home/_EXAMPLE/fluent_job.
Pliki
Katalog fluent_job zawiera pliki:
- airfoil.cas
- airfoil.dat
- journal.jou
- fluent_job.sh skrypt uruchamiający symulację
Skrypt
#!/bin/bash -l #PBS -N fluent_job #PBS -l nodes=1:ppn=4 #PBS -l walltime=00:05:00 USER_NAME=user #change to your user name cd /home/$USER_NAME/fluent_job journal=journal.jou FLUENTSOLVER=2ddp # DON'T CHANGE BELOW THIS LINE rm -f pnodes cat $PBS_NODEFILE | sort > pnodes export ncpus=`cat pnodes | wc -l` fluent150 -g -pmpi-auto-selected -mpi=hp $FLUENTSOLVER -t$ncpus -cnf=pnodes -ssh -i
$journal > fluent.log
#PBS -N fluent_job
#PBS -l nodes=1:ppn=4
#PBS -l walltime=00:05:00
Przekazanie parametrów do systemu kolejkowego: nazwa zadania - fluent_job, liczba węzłów ‑ 1, liczba rdzeni – 4, przewidziany czas: 5 minut
cd /home/$USER_NAME/fluent_job
Zmiana katalogu roboczego.
journal=journal.jou
FLUENTSOLVER=2ddp
rm -f pnodes
cat $PBS_NODEFILE | sort > pnodes
export ncpus=`cat pnodes | wc -l`
Ustawienie parametrów uruchomienia programu.
fluent150 -g -pmpi-auto-selected -mpi=hp $FLUENTSOLVER -t$ncpus -cnf=pnodes -ssh -i
$journal > fluent.log
Uruchomienie programu z przekierowaniem standardowego wyjścia do pliku fluent.log
Dodanie zadania do kolejki
Przygotowany skrypt dodajemy do kolejki poleceniem:
$ qsub fluent_job.sh
W wyniku działania programu zostanie utworzony plik danych wyjściowych:
- airfoil-final.dat
oraz pliki:
- fluent_job.eXXXXXX standardowy plik błędów
- fluent_job.oXXXXXX standardowy plik wyjścia (pusty)
- fluent.log przekierowane wyjście programu.
- pnodes
COMSOL
Przykład można pobrać z katalogu: /home/_EXAMPLE/comsol_job.
Pliki
Katalog comsol_job zawiera:
- mapk-for-kevlar.mph plik danych do symulacji
- libegf-b.so biblioteka wykorzystywana w symulacji
- run.sh skrypt uruchamiający symulację
Skrypt
Skrypt uruchamia obliczenia w programie COMSOL
#!/bin/bash #PBS -N comsol_job #PBS -l nodes=1:ppn=12 USER_NAME=user #change to your user name cd /home/$USER_NAME/comsol_job /home/_PROGS/bin/comsol43b -ckl batch\
-inputfile /home/$USER_NAME/comsol_job/mapk-for-kevlar.mph\
-outputfile /home/$USER_NAME/comsol_job/mapk-for-kevlar.out.mph\
-batchlog /home/$USER_NAME/comsol_job/mapk-for-kevlar.out.log
#PBS -N comsol_job
#PBS -l nodes=1:ppn=12
Przekazanie parametrów do systemu kolejkowego: nazwa zadania - comsol_job, liczba węzłów ‑ 1, liczba rdzeni - 12.
cd /home/$USER_NAME/comsol_job
Zmiana katalogu roboczego.
/home/_PROGS/bin/comsol43b -ckl batch\
-inputfile /home/$USER_NAME/comsol_job/mapk-for-kevlar.mph\
-outputfile /home/$USER_NAME/comsol_job/mapk-for-kevlar.out.mph\
-batchlog /home/$USER_NAME/comsol_job/mapk-for-kevlar.out.log
Uruchomienie programu COMSOL z parametrami:
- -inputfile …/mapk-for-kevlar.mph dane wejściowe
- -outputfile …/mapk-for-kevlar.out.mph dane wyjściowe
- -batchlog …/mapk-for-kevlar.out.log log
Dodanie zadania do kolejki
Przygotowany skrypt dodajemy do kolejki poleceniem:
$ qsub comsol_job.sh
W wyniku działania programu, oprócz danych wyjściowych i logu utworzone zostaną pliki:
- comsol_job.eXXXXXX standardowy plik błędów
- comsol_job.oXXXXXX standardowy wyjście programu
- mapk-for-kevlar.out.mph.status status zadania obliczeniowego.
LS-DYNA
Przykład można pobrać z katalogu: /home/_EXAMPLE/lsdyna_job.
Pliki.
Katalog lsdyna_job zawiera pliki wygenerowane przez program LS-PrePost, który pełni funkcję pre- i postprocesora:
- billet.forge.209.d
- billet.forge.209.i
- billet.forge.209.k
oraz skrypt:
- lsdyna_job.sh
Skrypt.
Skrypt uruchamia obliczenia w programie LS-DYNA w trybie równoległym z wykorzystaniem pakietu mpi MVAPICH.
#!/bin/sh #PBS -N lsdyna_job #PBS -l nodes=1:ppn=10,walltime=1:00:00 module purge module load mvapich2/1.6-intel USER_NAME=user #change to your user name cd /home/$USER_NAME/lsdyna_job/ mpirun lsdyna i=/home/$USER_NAME/lsdyna_job/billet.forge.209.k
#PBS -N lsdyna_job
#PBS -l nodes=1:ppn=10,walltime=1:00:00
Przekazanie parametrów do systemu kolejkowego: nazwa zadania LS-DYNA, liczba węzłów -1, liczba rdzeni - 10, przewidywany czas na wykonanie zadania - 1h.
module purge
module load mvapich2/1.6-intel
Usunięcie domyślnego modułu MPI i załadowanie modułu mvapich2/1.6-intel.
cd /home/$USER_NAME/lsdyna_job/
Zmiana katalogu roboczego.
mpirun lsdyna i=/home/$USER_NAME/lsdyna_job/billet.forge.209.k
Uruchomienie programu LS-DYNA z zadaniem nazwa_zadania.k
Dodanie zadania do kolejki
Przygotowany skrypt dodajemy do kolejki poleceniem:
$ qsub lsdyna_job.sh
W wyniku działania programu zostanie utworzony zestaw plików danych oraz logów.
MATLAB
Przykład można pobrać z katalogu: /home/_EXAMPLE/matlab_job.
Skrypt
#!/bin/bash #PBS -N gen_atoms_job #PBS -l nodes=1:ppn=1,mem=10mb,walltime=00:05:00 USER_NAME=user #change to your user name cd /home/$USER_NAME/matlab_job /home/_PROGS/bin/matlab2013a -nodisplay -nodesktop -nojvm\
-r "run /home/$USER_NAME/matlab_job/gen_atoms; quit"
#PBS -N gen_atoms_job
#PBS -l nodes=1:ppn=1,mem=10mb,walltime=00:05:00
Przekazanie parametrów do systemu kolejkowego. W danym przykładzie deklarujemy, że nasze zadanie będzie się wykonywało na jednym rdzeniu (ppn=1) pojedynczego węzła (nodes=1), wykorzysta 10MB pamięci RAM (mem=10mb), czas trwania zadania nie przekroczy 5 minut (walltime=00:05:00).
cd /home/$USER_NAME/matlab_job
Przejście do katalogu, w którym zostanie uruchomiony docelowy program. Do katalogu zostały wcześniej skopiowany skrypt matlab-a gen_atoms.m oraz skrypt uruchomieniowy matlab_job.sh.
/home/_PROGS/bin/matlab2013a -nodisplay -nodesktop -nojvm -r "run /home/$USER_NAME/matlab_job/gen_atoms; quit"
Uruchomienie MATLABa w trybie wsadowym ze skryptem gen_atoms.m. Po jego wykonaniu program zostanie zamknięty poleceniem quit.
Dodanie zadania do kolejki
Przygotowany skrypt dodajemy do kolejki poleceniem:
$ qsub matlab_job.sh
W wyniku działania programu zostaną utworzone 3 pliki:
- gen_atoms_job.oXXXX – zawierający standardowe wyjście programu
- gen_atoms_job.eXXXX – zawierający wyjście błędów programu
- atoms.out – dane wyjściowe programu.