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