Obliczenia równoległe w zagadnieniach in˙zynierskich Wykład 4

Transkrypt

Obliczenia równoległe w zagadnieniach in˙zynierskich Wykład 4
Klastry
Idea klastra obliczeniowego stanowi rozszerzenie idei sieci stacji
roboczych (Network Of Workstations - NOW ). Pod wzgledem
˛
sprz˛etowym oba składaja˛ sie˛ z pewnej liczby komputerów (stacji
roboczych) połaczonych
˛
siecia˛ komunikacyjna˛ (najcz˛eściej z
wydzielonym w˛ezłem zarzadzaj
˛
acym).
˛
Obliczenia równoległe
w zagadnieniach inżynierskich
Wykład 4
Różnica polega na logicznej reprezentacji systemu: w przypadku
sieci stacji roboczych każda maszyna widziana
jest jako niezależny system i fakt ten musi
znaleźć odbicie w stosowanych tam rozwiazaniach
˛
programistycznych. W przypadku klastra natomiast
pojedyncze maszyny stanowia˛ cz˛eść wirtualnego
komputera udostepnionego
˛
dla użytkowników
w sposób analogiczny do rzeczywistych
superkomputerów.
Dr inż. Tomasz Olas
[email protected]
Instytut Informatyki Teoretycznej i Stosowanej
Politechnika Cz˛estochowska
Wykład 4 – p. 2/14
Wykład 4 – p. 1/14
Klastry obliczeniowe
Klasyfikacja klastrów
Jedna˛ z podstawowych metod klasyfikacji klastrów stanowi podział na:
W przypadku klastrów obliczeniowych głównym celem twórców jest
osiagni
˛ ecie
˛
jak najwyższej maksymalnej wydajności maszyny
równoległej.
klastry wysokiej wydajności lub obliczeniowe (high performance
clusters),
Powoduje to stosowanie komponentów o najlepszych, pod wzgledem
˛
szybkości, parametrach, wykorzystanie dedykowanych sieci
komunikacyjnych oraz bazowanie na zabezpieczeniach
programowych w zakresie stabilności pracy wirtualnego komputera.
klastry wysokiej dostepności
˛
(high availability clusters).
Wykład 4 – p. 3/14
Wykład 4 – p. 4/14
Klastry wysokiej dostepno
˛
ści
Architektura klastrów obliczeniowych (I)
Klastry wysokiej dostepności
˛
wykorzystywane sa˛ w zadaniach
wymagajacych
˛
niezwykle wysokiej niezawodności i gwarancji
nieprzerwanej pracy komputera. Cz˛esto komponenty stosowane w
nich należa˛ do starszych generacji, majacych
˛
za soba˛ długi okres
testów i udoskonaleń oraz gwarantujacych
˛
bezawaryjna˛ współprace˛
z warstwa˛ programowa.
˛
Powszechnie spotykana˛ praktyka˛ jest również wykonywanie
pojedynczego zadania jednocześnie przez wiele w˛ezłów klastra, co
umożliwia łatwe wykrycie przekłamań w wynikach generowanych
przez wadliwa˛ jednostk˛e jak również natychmiastowe zastapienie
˛
jej
przez inna,
˛ należac
˛ a˛ do tej samej grupy. Praktykowane jest również
pozostawienie grupy maszyn nieprzydzielonych do żadnego zadania
jako zabezpieczenia w przypadku poważniejszej awarii.
Aplikacje równoległe
Aplikacje sekwencyjne
Środowisko do programowania równoległego
Warstwa pośrednia klastra
(Obraz pojedynczego systemu, Infrastruktura dostępowa)
Stacja
robocza
Stacja
robocza
Stacja
robocza
Stacja
robocza
Stacja
robocza
AM
AM
AM
AM
AM
Interfejs
sieciowy
Interfejs
sieciowy
Interfejs
sieciowy
Interfejs
sieciowy
Interfejs
sieciowy
Sieć o wysokiej wydajności
Typowym przykładem zastosowania klastrów wysokiej dostepności
˛
sa˛ serwery internetowe oraz systemy zarzadzaj
˛
ace
˛
przedsiebiorstwami.
˛
Wykład 4 – p. 5/14
Wykład 4 – p. 6/14
System kolejkowy
Dostep
˛ do zasobów obliczeniowych
W wiekszości
˛
przypadków dostep
˛ do zasobów obliczeniowych
realizowany jest w oparciu o poniższe zasady:
Zadania moga˛ być uruchamiane na klastrze tylko poprzez system
kolejkowy. Wykonywanie obliczeń z pominieciem
˛
systemu
kolejkowego nie jest dozwolone.
Dostep
˛ do zasobów obliczeniowych jest możliwy jedynie
poprzez ssh.
Zasada działania systemu kolejkowego:
W przypadku klastrów użytkownicy loguja˛ sie˛ na w˛ezeł
dostepowy
˛
z którego zgłaszaja˛ zadanie do wykonania na
w˛ezłach obliczeniowych (nie można sie˛ bezpośrednio
zalogować na w˛ezły obliczeniowe).
System przyjmuje zadania od użytkowników i umieszcza je
w tzw. kolejce, w której czekaja˛ aż do wykonania.
Umożliwia zarzadzanie
˛
zadaniami (usuwanie, przerywanie,
wznawianie).
Katalogi domowe użytkowników HOME znajduja˛ sie˛ na specjalnie
do tego celu przeznaczonych zasobach dyskowych (np.
macierzy dyskowej) lub na jednym z dysków w˛ezła
dostepowego.
˛
W przypadku w˛ezłów obliczeniowych jest on
montowany poprzez sieciowy system plików (np. NFS).
Pozostałe katalogi (np. /tmp sa˛ lokalne dla w˛ezłów).
Po zakończeniu wykonania zadania informacja o tym może być
przesłana użytkownikowi.
Pozwala na optymalne wykorzystanie mocy obliczeniowych i pamieci
˛
komputera.
Na każdym w˛eźle klastra ścieżka do katalogu domowego HOME
jest taka sama (/home/nazwa_konta).
Wykład 4 – p. 7/14
Wykład 4 – p. 8/14
Torque Resource Manager
qsub
W chwili obecnej bardzo cz˛esto (szczególnie w mniejszych
ośrodkach obliczeniowych) do zarzadzania
˛
zasobami obliczeniowymi
jest używany system Torque.
Polecenie qsub służy do wstawiania zadań do systemu kolejkowego.
Można to zrealizować na dwa sposoby:
Sposób pierwszy, najprostszy, z wykorzystaniem wyłacznie
˛
polecenia qsub:
System ten bazuje na oprogramowaniu PBS (Portable Batch
System) i jest rozwijany jako projekt OpenSource.
$ echo polecenie_do_wykonania_i_jego_opcje |qsub [opcje_dla_qsub]
Sposób drugi, z wykorzystaniem skryptu startowego:
Należy utworzyć skrypt startowy, który uruchamia zadanie.
Skrypt taki może, obok uruchomienia zadania i przekazania
dodatkowych argumentów dla qsub, zadbać również np.
o utworzenie plików tymczasowych:
Z punktu widzenia użytkownika praktycznie nie różni sie˛ od innych
odmian systemu PBS.
Podstawowe komendy systemu to:
qsub - wstawia zadanie do kolejki,
qstat - umożliwia wyświetlenie informacji o kolejkach
#!/bin/bash (można skorzystać również z innego interpretera)
#PBS (parametry_dla_qsub)
...
polecenia_do_uruchomienia
...
i zadaniach,
qdel - usuwa zadania z kolejki.
Nastepnie
˛
należy wstawić zadanie do kolejki:
$ qsub [opcje_dla_qsub] nazwa_skryptu
Wykład 4 – p. 9/14
Wykład 4 – p. 10/14
qsub - przykładowy skrypt startowy
Wybrane parametry polecenia qsub
parametr
opis
przykład
-N
określa nazwe˛ zadania
-N obliczenia1
-q
definiuje kolejk˛e do której dodajemy zadanie
-q queue_name
-I
wykonuje zadanie interaktywne
-q queue_name
określa plik do którego przekierowane zostanie standardowe
-o obliczenia1.out
-o
# interpreter skryptu:
#PBS -S /bin/tcsh
wyjście
-e
jak wyżej, ale dla stderr
-l
definiuje zasoby wymagane przez zadanie (wymagania odno-
# ustawienia limitów zasobów
#PBS -l nodes=1
#PBS -l walltime=24:00:00
#PBS -l mem=100MB
-e comp01job.err
#PBS -N my_simple_job
# ustaw nazw˛
e zadania
rm
rm
cd
rm
# skasuj poprzednio wygenerowane pliki
śnie zasobów oddzielone sa˛ przecinkami), np:
nodes=limit - dla zadań równoległych określa na ilu wezła˛
-l nodes=2:ppn=2
ach i procesorach zadanie ma zostać wykonane
walltime=limit - maksymalna długość działania zadania od
-l walltime=00:00:60
momentu jego uruchomienia
mem=limit - limit pamieci
˛ operacyjnej
-l mem=128mb
my_simple_job.o*
my_simple_job.e*
fortran
./*.out
f77 simple.f
./a.out >> simple.out
# zmień katalog
# skasuj zb˛
edne pliki
# uruchom kompilacj˛
e
# uruchom program z przekierowaniem wyników
Przykład:
$ qsub -l nodes=2,walltime=10:00 zadanie1
Wykład 4 – p. 11/14
Wykład 4 – p. 12/14
Kontrola i monitorowanie zadań
Uruchamianie zadań - MPI
Zadanie identyfikowane jest w systemie kolejkowym na podstawie
swojego identyfikatora zadania, które jest zwracane jako wynik
działania polecenia qsub:
$ echo sleep 10 | qsub
1512.eltoro.pcz.pl
Stan zadania i kolejki można sprawdzić poleceniem qstat:
qstat
lista zadań w kolejkach
qstat -n
lista zadań w kolejkach z podaniem na jakim weźle
˛
liczy sie˛
lista kolejek
qstat -r
lista uruchomionych zadań (status running)
qstat -f jobid
obszerna informacja o zadaniu o identyfikatorze jobid
#! program zostanie uruchomiony na 5 w˛
ezłach przez jedna˛ godzin˛
e,
#! wymaga 512MB pami˛
eci RAM na każdym w˛
eźle
#! można również dokładnie wskazać w˛
ezły, np: -l nodes=eltoro02+eltoro05,...
#PBS -l nodes=5,walltime=01:00:00,mem=512mb
#PBS -o myprogram.log
#PBS -e myprogram.err
#! Liczba procesów MPI jakie maja˛ zostać uruchomione
#! i pełna ścieżka do programu
NO_TASKS=5
PROGRAM_PATH=$HOME/myprogram
każde zadanie
qstat -q
#!/bin/bash
Aby skasować wstawione do systemu zadanie należy użyć polecenia
qdel:
lamboot $PBS_NODEFILE
mpirun -np $NO_TASKS $PROGRAM_PATH
wipe $PBS_NODEFILE
$ qdel identyfikator_zadania
Wykład 4 – p. 13/14
Wykład 4 – p. 14/14

Podobne dokumenty