Wykład 4 p. 1/14 Obliczenia równoległe w zagadnieniach inżynierskich Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska
Klastry Wykład 4 p. 2/14 Idea klastra obliczeniowego stanowi rozszerzenie idei sieci stacji roboczych (Network Of Workstations - NOW ). Pod względem sprzętowym oba składaja się z pewnej liczby komputerów (stacji roboczych) połaczonych siecia komunikacyjna (najczęściej z wydzielonym węzłem zarzadzaj acym). 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ęść wirtualnego komputera udostępnionego dla użytkowników w sposób analogiczny do rzeczywistych superkomputerów.
Klasyfikacja klastrów Wykład 4 p. 3/14 Jedna z podstawowych metod klasyfikacji klastrów stanowi podział na: klastry wysokiej wydajności lub obliczeniowe (high performance clusters), klastry wysokiej dostępności (high availability clusters).
Klastry obliczeniowe Wykład 4 p. 4/14 W przypadku klastrów obliczeniowych głównym celem twórców jest osiagnięcie jak najwyższej maksymalnej wydajności maszyny równoległej. Powoduje to stosowanie komponentów o najlepszych, pod względem szybkości, parametrach, wykorzystanie dedykowanych sieci komunikacyjnych oraz bazowanie na zabezpieczeniach programowych w zakresie stabilności pracy wirtualnego komputera.
Klastry wysokiej dostępności Wykład 4 p. 5/14 Klastry wysokiej dostępności wykorzystywane sa w zadaniach wymagajacych niezwykle wysokiej niezawodności i gwarancji nieprzerwanej pracy komputera. Często komponenty stosowane w nich należa do starszych generacji, majacych za soba długi okres testów i udoskonaleń oraz gwarantujacych bezawaryjna współpracę z warstwa programowa. Powszechnie spotykana praktyka jest również wykonywanie pojedynczego zadania jednocześnie przez wiele węzłów klastra, co umożliwia łatwe wykrycie przekłamań w wynikach generowanych przez wadliwa jednostkę 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. Typowym przykładem zastosowania klastrów wysokiej dostępności sa serwery internetowe oraz systemy zarzadzaj ace przedsiębiorstwami.
Architektura klastrów obliczeniowych (I) Wykład 4 p. 6/14 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
Dostęp do zasobów obliczeniowych Wykład 4 p. 7/14 W większości przypadków dostęp do zasobów obliczeniowych realizowany jest w oparciu o poniższe zasady: Dostęp do zasobów obliczeniowych jest możliwy jedynie poprzez ssh. W przypadku klastrów użytkownicy loguja się na węzeł dostępowy z którego zgłaszaja zadanie do wykonania na węzłach obliczeniowych (nie można się bezpośrednio zalogować na węzły obliczeniowe). Katalogi domowe użytkowników HOME znajduja się na specjalnie do tego celu przeznaczonych zasobach dyskowych (np. macierzy dyskowej) lub na jednym z dysków węzła dostępowego. W przypadku węzłów obliczeniowych jest on montowany poprzez sieciowy system plików (np. NFS). Pozostałe katalogi (np. /tmp sa lokalne dla węzłów). Na każdym węźle klastra ścieżka do katalogu domowego HOME jest taka sama (/home/nazwa_konta).
Wykład 4 p. 8/14 System kolejkowy Zadania moga być uruchamiane na klastrze tylko poprzez system kolejkowy. Wykonywanie obliczeń z pominięciem systemu kolejkowego nie jest dozwolone. Zasada działania systemu kolejkowego: 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). Po zakończeniu wykonania zadania informacja o tym może być przesłana użytkownikowi. Pozwala na optymalne wykorzystanie mocy obliczeniowych i pamięci komputera.
Torque Resource Manager Wykład 4 p. 9/14 W chwili obecnej bardzo często (szczególnie w mniejszych ośrodkach obliczeniowych) do zarzadzania zasobami obliczeniowymi jest używany system Torque. System ten bazuje na oprogramowaniu PBS (Portable Batch System) i jest rozwijany jako projekt OpenSource. Z punktu widzenia użytkownika praktycznie nie różni się od innych odmian systemu PBS. Podstawowe komendy systemu to: qsub - wstawia zadanie do kolejki, qstat - umożliwia wyświetlenie informacji o kolejkach i zadaniach, qdel - usuwa zadania z kolejki.
qsub Wykład 4 p. 10/14 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: $ 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: #!/bin/bash (można skorzystać również z innego interpretera) #PBS (parametry_dla_qsub)... polecenia_do_uruchomienia... Następnie należy wstawić zadanie do kolejki: $ qsub [opcje_dla_qsub] nazwa_skryptu
Wykład 4 p. 11/14 Wybrane parametry polecenia qsub parametr opis przykład -N określa nazwę zadania -N obliczenia1 -q definiuje kolejkę do której dodajemy zadanie -q queue_name -I wykonuje zadanie interaktywne -q queue_name -o określa plik do którego przekierowane zostanie standardowe -o obliczenia1.out wyjście -e jak wyżej, ale dla stderr -e comp01job.err -l definiuje zasoby wymagane przez zadanie (wymagania odnośnie zasobów oddzielone sa przecinkami), np: nodes=limit - dla zadań równoległych określa na ilu węzłaach i procesorach zadanie ma zostać wykonane walltime=limit - maksymalna długość działania zadania od momentu jego uruchomienia mem=limit - limit pamięci operacyjnej -l nodes=2:ppn=2 -l walltime=00:00:60 -l mem=128mb Przykład: $ qsub -l nodes=2,walltime=10:00 zadanie1
Wykład 4 p. 12/14 qsub - przykładowy skrypt startowy # interpreter skryptu: #PBS -S /bin/tcsh # ustawienia limitów zasobów #PBS -l nodes=1 #PBS -l walltime=24:00:00 #PBS -l mem=100mb #PBS -N my_simple_job # ustaw nazwę zadania rm my_simple_job.o* rm my_simple_job.e* cd fortran rm./*.out # skasuj poprzednio wygenerowane pliki # zmień katalog # skasuj zbędne pliki f77 simple.f./a.out >> simple.out # uruchom kompilację # uruchom program z przekierowaniem wyników
Wykład 4 p. 13/14 Kontrola i monitorowanie zadań 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 qstat -n qstat -q qstat -r qstat -f jobid lista zadań w kolejkach lista zadań w kolejkach z podaniem na jakim węźle liczy się każde zadanie lista kolejek lista uruchomionych zadań (status running) obszerna informacja o zadaniu o identyfikatorze jobid Aby skasować wstawione do systemu zadanie należy użyć polecenia qdel: $ qdel identyfikator_zadania
Wykład 4 p. 14/14 Uruchamianie zadań - MPI #!/bin/bash #! program zostanie uruchomiony na 5 węzłach przez jedną godzinę, #! wymaga 512MB pamięci RAM na każdym węźle #! można również dokładnie wskazać węzł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 mają zostać uruchomione #! i pełna ścieżka do programu NO_TASKS=5 PROGRAM_PATH=$HOME/myprogram lamboot $PBS_NODEFILE mpirun -np $NO_TASKS $PROGRAM_PATH wipe $PBS_NODEFILE