Klaster obliczeniowy (PL/HPC) - FAQ

Powrót do usługi

Pytania i odpowiedzi

Jak zalogować się do klastra?
Proces logowania możliwy jest po uzyskaniu i potwierdzeniu loginu oraz hasła dostepowego. Logowanie jest możliwe wyłacznie za pośrednictwem protokołu ssh na adres: blueocean.p.lodz.pl Przykładowe logowanie:
ssh twoj.login@blueocean.p.lodz.pl

 

Zmiany w polityce przydziału zasobów obliczeniowych klastra
Chcąc ciagle podnosić wydajność klastra obliczeniowego zaplanowaliśmy szereg zmian. Pierwsza z nich to zmiana polityki przydziału zasobów obliczeniowych. Postanowiliśmy wprowadzić jedna zunifikowana kolejka dla wszystkich klasycznych zadań obliczeniowych - boqueue. Zasoby beda przydzielane w oparciu o wybór odpowiedniego środowiska zrównoleglenia w sposób deklaratywny:

bonode - zadania nie przekraczające zasobów jednego noda obliczeniowego

bofillup - zadania przekraczające zasoby jednego noda, system kolejkowy przydziela zasoby z wielu nodów

Dodatkowo od teraz jeden slot obliczeniowy jest równoznaczny nie z zadaniem ale z pojedynczym rdzeniem obliczeniowym. Zatem aby poprawnie korzystać z zasobów klastra należy w starych skryptach kolejkowych zmienić nazwę kolejki na boqueue oraz dodać lub zmodyfikować linijkę dotyczącą środowiska zrównoleglenia:
#$ -pe nazwa_srodowiska_zrownoleglenia zadeklarowana_liczba_rdzeni

gdzie deklarujemy odpowiednie środowisko zrównoleglenia oraz liczbę rdzeni CPU, które chcemy wykorzystać do obliczeń.

 

Jak uruchomić zadanie w systemie kolejkowym?

Uruchomienie zadań w klastrze możliwe jest wyłącznie dla użytkownika posiadającego wymagane uprawnienia. W celu uporządkowania pracy w klastrze oraz w celu ograniczenia wystąpienia potencjalnych problemów należy zgłaszać zadania do systemu kolejkowego przy pomocy "pliku uruchamiającego zadanie" zawierającego definicję środowiska obliczeniowego oraz polecenia do wykonania. Każdy nowy użytkownik po przypisaniu go do domeny ADM.P.LODZ.PL otrzyma przepis na plik, w którym osobiście będzie mógł zmieniać i definiować zadania uruchamiane w klastrze. W obrazowy sposób działanie systemu kolejkowego można opisać jako przekazanie komendy obliczeniowej (lub polecenia systemowego) nodowi zarządzającemu, który sam zadba o to gdzie, kiedy i w jaki sposób zrealizować żądanie użytkownika na nodach obliczeniowych. Po uzupełnieniu "pliku uruchamiającego zadanie" poleceniami dla klastra można go uruchomić poleceniem:

$ plik_uruchamiający zadanie
np.: lammps_run

Plik uruchamiający zadanie może wyglądać nastepująco:

#!/bin/bash

# 1. Przygotowanie obliczenia
cTIME=`date +"%Y%m%d%H%M%S"`
f=g09.$1.$cTIME
# 2. Deklaracja środowiska systemu kolejkowego
echo "#!/bin/bash" > $f
echo "#$ -cwd" >> $f
echo "#$ -M imie.nazwisko@p.lodz.pl" >> $f
echo "#$ -m e" >> $f
echo "#$ -q boqueue" >> $f
echo "#$ -pe bonode 1" >> $f
# 3. Deklaracja środowiska oprogramowania użytkowego
echo "module load nazwa_oprogramowania" >> $f
# 4. Wykonanie komendy uruchamiającej zadanie
echo "komenda do wykonania" >> $f
# 5. Działania po wykonaniu zadania
# 6. Przekazanie zadania do systemu kolejkowego:
qsub -S /bin/bash $f

parametr „#$ -pe bonode 1” oznacza deklarację jaki ma być tryb rozłożenia obliczeń oraz ile rdzeni zostanie wykorzystanych do obliczenia. W tym wypadku zadeklarowano chęć wykorzystania jednego rdzenia obliczeniowego. Jeśli chcemy uruchomić np. polecenia Gaussiana09 z deklaracją wykorzystania 12 rdzeni obliczeniowych należy wpisać do takiego pliku informację o zmiennych środowiskowych, przykładowy plik o nazwie g09r można zapisać:

#!/bin/bash
# 1. Przygotowanie obliczenia
cTIME=`date +"%Y%m%d%H%M%S"`
f=g09.$1.$cTIME
# 2. Deklaracja środowiska systemu kolejkowego
echo "#!/bin/bash" > $f
echo "#$ -cwd" >> $f
echo "#$ -M imie.nazwisko@p.lodz.pl" >> $f
echo "#$ -m e" >> $f
echo "#$ -q boqueue" >> $f
echo "#$ -pe bonode 12" >> $f
# 3. Deklaracja środowiska oprogramowania użytkowego
echo "module load gaussian9_A_02" >> $f
# 4. Wykonanie komendy uruchamiającej zadanie
echo "g09 $PWD/$1" >> $f
# 5. Działania po wykonaniu zadania
# 6. Przekazanie zadania do systemu kolejkowego:
qsub -S /bin/bash $f

gdzie wykonanie i dodanie do systemu kolejkowego następuje poprzez uruchomienie:
$ ./g09r plik_gaussiana

Najważniejsze polecenia systemu kolejkowego SGE to: qstat - pokazuje stan wszystkich zadań we wszystkich kolejkach
qstat -u user - pokazuje stan zadań użytkownika user
qstat numer_zadania - pokazuje stan wybranego zadania
qstat -u '*' - pokazuje wszystkie zadania wszystkich użytkowników
qdel - usuwanie/"zabijanie" zadania z kolejki
qdel numer_zadania
qhold - wstrzymywanie zadania do czasu jego uwolnienia poleceniem qhold z opcjami lub qrls
qhold numer_zadania - wstrzymanie zadania
qhold -r numer_zadania - wznowienie wstrzymanego zadania z kolejki
qrls - wznowienie zatrzymanego zadania z kolejki
qrls numer_zadania
qsub - wstawianie zadania do kolejki

 

Jak uruchomić zadanie w systemie kolejkowym ze zintegrowanym środowiskiem Mpich3.2?

Postać pliku uruchamiającego zadanie:

#!/bin/bash
cTIME=`date +"%Y%m%d%H%M%S"`
f=pe.$1.$cTIME
echo "#!/bin/bash" > $f
echo "#$ -cwd" >> $f
echo "#$ -M uzytkownik@p.lodz.pl (link sends e-mail)" >> $f
echo "#$ -m e" >> $f
echo "#$ -pe bonode 5" >> $f
echo "#$ -q boqueue" >> $f
#echo "#$ -V" >> $f
#echo "#$ -j y" >> $f
#echo "#$ -o $f.out" >> $f
echo "export PATH=/opt/MPI/mpich3.2/bin:$PATH" >> $f
echo "mpiexec program_mpi" >>$f
qsub -S /bin/bash $f

parametr „#$ -pe bonode 5” oznacza deklarację jaki ma być tryb rozłożenia obliczeń oraz ile rdzeni zostanie zarezerwowanych dla obliczenia na jednym nodzie docelowym.

 

Jak uruchomić zadanie w systemie kolejkowym ze zintegrowanym środowiskiem Mpich2?

Wersja Mpich2 dostępna tylko dla użytkowników klastra v.1.4.

Do uruchamiania obliczeń w środowisku równoległym opartym o system kolejkowy niezbędne jest przyznanie odpowiednich uprawnień. Tak więc osoby zainteresowane powinny wyrazić chęć korzystania z tego typu obliczeń poprzez email. W obecnym stanie środowiska obliczenia mogą być prowadzone na 4 nodach. Ograniczenie wyłacznie do 4 nodów uwarunkowane jest utrzymaniem stabilności pozostałych obliczeń i będzie zmieniane w zależności od potrzeb, wydajności klastra.

Przykładowy kontener dla obliczeń MPI:

#!/bin/bash
cTIME=`date +"%Y%m%d%H%M%S"`
f=pe.$1.$cTIME
echo "#!/bin/bash" > $f
echo "#$ -cwd" >> $f
echo "#$ -M twoj.email@p.lodz.pl" >> $f
echo "#$ -m e" >> $f
echo "#$ -pe bofillup 10 " >> $f
echo "#$ -q boqueue " >> $f
echo "#$ -V" >> $f
echo "#$ -j y" >> $f
echo "#$ -o $f.out" >> $f
echo "/opt/mpich2/bin/mpiexec $PWD/$1" >>$f
qsub -S /bin/bash $f

Jeżeli kontener zapisany jest jako pe_run to obliczenia wykonyje się:
./pe_run skrypt_mpi

W przykładzie zastosowano drugie z dostępnych środowisk zrównoleglenia: bofillup wykorzystujące inną metodę alokacji obliczeń: fill_up. Metoda ta pozwala na korzystanie przez jedno zadanie z zasobów wielu nodów: podczas alokowania zasobów obliczeniowych jeżeli nod nie pozwala osiągnąć wskazanej liczby procesów, zostają przydzielone zasoby kolejnego noda aż do spełnienia zażądanej wartości. Liczba "10" w tej samej dyrektywie wskazuje na liczbę uruchomionych procesów w zadaniu. Należy zwrócić uwagę, że liczba gniazd na wspomniane procesy w każdym nodzie jest ograniczona, zależnie od noda, do 24, 16 lub 12 rdzeni. Należy więc dobierać obliczenia optymalnie dla zadań tak aby umożliwić prace innym. Ponadto dzięki systemowi priorytetów kolejki użytkownicy liczący najintensywniej będą otrzymywali niższy priorytet obliczeń, a co za tym idzie ich prace będą wykonywane  po pracach użytkowników liczących mniej intensywnie. Dokładne dobieranie liczby procesów ma wpływ na priorytet w kolejce.
qstat -g t - przeglądanie obliczeń równoległych

Jak uruchomić zadanie w systemie kolejkowym dla oprogramowania Ansys:

Przykładowy kontener o nazwie ansys_run:

#!/bin/bash
cTIME=`date +"%Y%m%d%H%M%S"`
f=ansys.$cTIME
echo "#!/bin/bash" > $f
echo "#$ -cwd" >> $f
echo "#$ -M twoj.login@p.lodz.pl" >> $f
echo "#$ -m e" >> $f
echo "#$ -q boqueue" >> $f
echo "#$ -pe bonode 4 " >> $f
echo "export PATH=$PATH:/opt/ansys_inc/v140/CFX/bin/" >> $f
echo "export MPI_REMSH=ssh" >> $f
echo '/opt/ansys_inc/v140/CFX/bin/cfx5solve  $1 >> $f
qsub -S /bin/bash $f

Przykładowe wywołanie:

~/ansys_run -def CFX.def -continue-from-file CFX.res -par -part 4 -start-method "MPICH2 Local Parallel"

 

Powrót do usługi