Programowanie Równoległe i Rozproszone Lucjan Stapp Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska (l.stapp@mini.pw.edu.pl) 1/69 PRiR Wykład 1 Ćwiczenia Zasady zaliczania Aktywność i obecność (-20; +20) pkt (część A) Test* (27 kwiecień??) 50 pkt (część B) Egzamin część pisemna 100 pkt (część C) Dopuszczenie do części ustnej A + B + C >95pkt (55,88%) * Test zamiast wykładu. 2/69 PRiR Wykład 1 Literatura 1. Lester, Bruce, P., The Art of Parallel Programming, Prentice Hall, 1993 2. Brinch Hansen, P., The Search for Simplicity: Essays in Parallel Programming, IEEE, 1998 3. Quinn, Michael J., Parallel Programming in C with MPI and OpenMP, McGraw Hill, 2004 4. www.netlib.org 3/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 1
3 pomysły z późnych lat 60: Sztuczna inteligencja Pamięć bąbelkowa (ang. Bubble memory) Programowanie równoległe Wstęp 4/69 PRiR Wykład 1 Wstęp Dlaczego równolegle? Przetwarzanie równoległe nie zastępujeaktualnej technologii, ale jest jej akceleratorem. Przypuśćmy, że mamy problem, który wymaga 10 gigaflops (10 miliardów = 10 10 operacji zmiennoprzecinkowych na sekundę) Rozwiązanie: zaczekać 5 lat na Intel Pxx (czy jakkolwiek będzie zwany) albo użyć 20 Pentium III pracujących równolegle i mieć rozwiązanie dzisiaj 5/69 PRiR Wykład 1 Wstęp Dlaczego równolegle? Przetwarzanie równoległe nie zastępujeaktualnej technologii, ale jest jej akceleratorem. Przypuśćmy, że mamy problem, który wymaga 100 godzin obliczeń dla Pentium 4.2.0*2000 MHz, ale potrzebujemy wyniku w czasie godziny. Rozwiązanie: czekać 5 lat na Intel Pxx (czy jakkolwiek będzie zwany) albo podzielić pytanie na mniejsze pod-zadania pracujące równolegle i mieć rozwiązanie w kilka minut. 6/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 2
Wstęp Dlaczego równolegle? Przetwarzanie równoległe nie zastępujeaktualnej technologii, ale jest jej akceleratorem. It is a lot easier to harness 100 horses than to grow one that s 100 times bigger "O wiele łatwiej jest zaprząc 100 koni niż wyhodować jednego, który jest 100 razy większy. Ale I know how to make 4 horses pull a cart - I don't know how to make 1024 chickens do it. Enrico Clementi 7/69 PRiR Wykład 1 Wstęp Zdefiniowanie przetwarzania równoległego nie jest łatwe. Dosłownie oznacza to wykonywanie kilku instrukcji równocześnie, a nie jedna za drugą (przetwarzanie sekwencyjne): mikro-paralelizm - projektowanie jednochipowego mikroprocesora (np. RISC); procesory ogólnego zastosowania współpracujące ze sobą -cel tego wykładu. 8/69 PRiR Wykład 1 Typowy podział (systematyka Flynna -1963): Wstęp Single Instruction Single Data Multi Multi 9/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 3
Systematyka Flynna SISD (wymowa sees-dee) przetwarzanie sekwencyjne. Są to konwencjonalne systemy, które zawierają jeden CPU i dlatego mogą przetwarzać jeden strumień rozkazów, który jest wykonany szeregowo. Obecnie wiele dużych komputerów może mieć więcej niż jeden CPU, ale każdy z nich wykonuje niepowiązane ze sobą strumienie rozkazów. Dlatego takie systemy są maszynami SISD pracującymi na rozłącznych danych. Maszyny SISD to większość stacji roboczych takich firm jak np. DEC, Hewlett-Packard i Sun Microsystems. Definicja maszyn SISD jest podana tylko ze względów czysto formalnych, ten typ nie będzie omawiany na tym wykładzie. 10/69 PRiR Wykład 1 Systematyka Flynna MISD (wymowa mees-dee) brak zastosowań. Teoretycznie w tego typu maszynach wiele instrukcji powinno działać na jednym strumieniu danych. Trudno sobie wyobrazić taką maszynę i - jak dotąd - żadna maszyna tego typu nie została zbudowana. 11/69 PRiR Wykład 1 Systematyka Flynna SIMD (wymowa seem-dee) Można myśleć o maszynie typu SIMD jako o zbiorze procesorów zarządzanych przez inny procesor (kontrolny), który w każdym cyklu wysyła wspólną instrukcję każdemu procesorowi. Jest to połączenie grupy procesorów, które wykonują ten sam program na różnych danych (synchronizowanych przez ten sam zegar). Takie systemy często mają bardzo dużo jednostek przetwarzających, począwszy od 1 024 do, wszystkie mogące wykonywać w jednym kroku tę samą instrukcję na różnych danych. Dzięki temu pojedyncza instrukcja wykonywana jest na wielu danych równolegle. 12/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 4
Systematyka Flynna SIMD (wymowa seem-dee) cd. Maszyny SIMD są często stosowane do obliczeń na macierzach (np. w analizie elementu skończonego, w modelowaniu zachowań sejsmicznych, prognozowaniu pogody). Pierwszą komercyjną maszyną typu SIMD był DAP (Distributed Array Processor- Rozproszona Macierz Procesorów) stworzona przez ICL, Wielka Brytania; CRAY T-90; CPP DAP Gamma II; Quadrics Apemille;. 13/69 PRiR Wykład 1 Systematyka Flynna SIMD (wymowa seem-dee) cd. Największym komercyjnym sukcesem maszyn SIMD jest Connection Machine CM-1 i CM-2 firmy Thinking Machines (przejętą przez SGI, teraz HP) zbudowana z ponad 64 000 elementów obliczeniowych; była używana w zastosowaniach od badań wojskowych po animację komputerową. Connection Machine używają 1 bitowych elementów obliczeniowych, które dokonują tylko boolowskich kombinacji 1 bitu przeczytanego z pamięci z jednobitową wewnętrzną flagą. Router pakietów wbudowany w każdą 16 elementową jednostkę przetwarzającą skutecznie łączy ze sobą wszystkie procesory. Wszystkie obliczenia wykonywane są synchronicznie przez tablicę procesorów zgodnie ze wspólnym zegarem. 14/69 PRiR Wykład 1 Systematyka Flynna SIMD (wymowa seem-dee) cd. Procesory wektorowe (Vectorprocessors) Inną podklasą systemów SIMD są procesory wektorowe(ang. vectorprocessors). Procesory wektorowe działają na tablicach podobnych danych, a nie - jak standardowe procesory - na pojedynczych elementach. Kiedy dane mogą być przetwarzane przez te jednostki, wyniki mogą być dostarczane z tempem jednego, dwóch i - w specjalnych okolicznościach - trzech na cykl zegara (cykl zegara zdefiniowany jako podstawowa wewnętrzna jednostka czasu dla systemu). 15/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 5
SIMD (wymowa seem-dee) cd. Systematyka Flynna Procesory wektorowe (Vectorprocessors) Tak więc procesory wektorowe wykonują obliczenia na danych prawie równolegle, ale tylko jeśli obliczenia prowadzone są w trybie wektorowym. W takim przypadku są one kilka razy szybsze niż obliczenia wykonywane w konwencjonalnym trybie skalarnym. Ze względów praktycznych procesory wektorowe są klasyfikowane jako maszyny SIMD. Przykładem takiego systemu jest NEC 6i SX. 16/69 PRiR Wykład 1 SIMD z pamięcią dzieloną Ta podklasa maszyn jest niemal równoważna pojedynczemu procesorowi wektorowemu, mimo to istnieją inne interesujące maszyny w tej klasie. Procesory w systemie z pamięcią dzieloną komunikują się przez czytanie i pisanie do pamięci znajdującej się we wspólnej przestrzeni adresowej, co często implikuje wspólną (dzieloną) szynę. 17/69 PRiR Wykład 1 SIMD z pamięcią dzieloną SIMD z pamięcią dzieloną: architektura 18/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 6
SIMD z pamięcią dzieloną Jednoprocesorowa maszyna wektorowa będzie miała tylko jeden wyróżniony procesor wektorowy i system może nawet mieć skalarne operacje zmiennoprzecinkowe dzielone z procesorem wektorowym (jak było w niektórych systemach Cray). Należy zauważyć, że VPU nie posiada pamięci podręcznej (ang. cache). W wielu wypadkach jednostka wektorowa nie może z niej skorzystać, a prędkość wykonywania może zostać zmniejszona przez częste przepełnianie pamięci podręcznej. 19/69 PRiR Wykład 1 SIMD z pamięcią dzieloną Istniały, co prawda, jednostki takie jak CDC Cyber 205 i ETA-10, które ładowały argumenty bezpośrednio z pamięci i przechowywały wyniki także w pamięci. W dniu dzisiejszym procesory wektorowe korzystają z rejestrów wektorowych. To często nie zmniejsza prędkości przetwarzania, jednocześnie dostarczając większą elastyczność w zbieraniu argumentów i operacjach na nich z natychmiastowym rezultatem. 20/69 PRiR Wykład 1 SIMD z pamięcią dzieloną Na wcześniejszej ilustracji nie pokazane są szczegóły dotyczące połączenia między VPU a pamięcią. Jednak te detale są bardzo ważne dla wydajnej operacji wektorowej: gdy przepustowość pomiędzy pamięcią a VPU jest za mała, nie są czerpane pełne korzyści z VPU, ponieważ musi on czekać na argumenty i/albo musi czekać zanim wyniki zostaną zapisane w pamięci; kiedy stosunek wykonywanych operacji arytmetycznych do operacji czytania/zapisywania nie jest wystarczająco duży, aby zrekompensować tę sytuację, mogą pojawić się poważne straty wydajności. Problem zostanie omówiony w dalszej części wykładu. 21/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 7
SIMD z pamięcią dzieloną VPU są obrazowane jako pojedyncze bloki na naszej ilustracji. Istnieje znacząca różnica w strukturze jednostek tego typu. Każde VPU składa się z pewnej liczby wektorowych elementów funkcyjnych, albo "potoków". Pełnią one jedną bądź kilka funkcji w VPU. Każde VPU posiada potoki zaprojektowane tak, aby zapewnić funkcje związane z dostępem do pamięci. Potoki odpowiedzialne są za zapewnienie dostawy argumentów do potoków arytmetycznych i zachowywanie wyników ponownie w pamięci. Zazwyczaj będzie kilka arytmetycznych jednostek funkcyjnych dla operacji całkowitych/logicznych, dla dodawania zmiennopozycyjnego, mnożenia i czasem kombinacji obydwu - tak zwanych operacji złożonych. 22/69 PRiR Wykład 1 SIMD z pamięcią dzieloną Uwaga: Obecnie jednostki realizujące zadania zgodnie z metodologią SIMD obecne są także w stosowanych w domowych komputerach procesorach opartych o architekturę x86. Procesory te oferują listę rozkazów poszerzoną o zestawy rozkazów typu SIMD, takie jak: SSE od ang. "Streaming SIMD Extensions"), SSE2, SSE3, SSSE3, SSE4, SSE5, MMX, 3DNow!, AVX, AltiVec. 23/69 PRiR Wykład 1 SIMD z pamięcią rozproszoną Maszyny tego typu są czasem zwane tablicami procesorów (ang. processor-array machines). Ponieważ procesory tych maszyn pracują krokowo (ang. lock-step), czyli wszystkie procesory wykonują tę samą instrukcje w tym samym czasie (ale na innych danych), nie wymagana jest synchronizacja między procesorami. To znacznie upraszcza projektowanie takich systemów. Procesor kontrolny podaje instrukcję, która ma być wykonana przez procesory. 24/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 8
SIMD z pamięcią rozproszoną Wszystkie obecnie dostępne maszyny typu DM-SIMD wykorzystują kontroler komunikacji (zwany też front-end procesor, bądź FEP) oraz połączenie poprzez ścieżkę danych do procesora kontrolnego. Operacje, które nie mogą być wykonane przez tablicę procesorów, bądź przez procesor kontrolny, są przerzucane do systemu komunikacji. Dla przykładu, I/O może być wykonywane przez system komunikacji, przez maszynę z tablicą procesorów, bądź przez obie. To typowy model maszyny typu DM-SIMD, od której faktyczne modele będą odbiegać w różnym stopniu. 25/69 PRiR Wykład 1 SIMD z pamięcią rozproszoną SIMD z pamięcią rozproszoną; typowa architektura 26/69 PRiR Wykład 1 SIMD z pamięcią rozproszoną Powyższy wzorzec może sugerować, że wszystkie procesory są połączone w dwuwymiarową siatkę i faktycznie architektura połączeniowa tego typu maszyn zawsze zawiera siatkę dwuwymiarową. Przeciwległe rogi każdej siatki są także zawsze połączone w topologi torusa. Dla kilku maszyn nie jest to jedyny schemat połączeń. Mogą być także połączone w 3 wymiarach, diagonalnie, bądź w bardziej złożone struktury. 27/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 9
Systematyka Flynna MIMD (wymowa meem-dee) Tego typu maszyny wykonują równolegle kilka strumieni instrukcji na różnych danych. 28/69 PRiR Wykład 1 MIMD (wymowa meem-dee) Systematyka Flynna Miejscem krytycznym jest komunikacja między procesami, ponieważ jeśli dwa procesy muszą współdziałać w różnych momentach tego samego obliczenia, muszą wymieniać się danymi (wynikami) między sobą. 29/69 PRiR Wykład 1 MIMD (wymowa meem-dee) Systematyka Flynna Różnica między wieloprocesorowymi maszynami SISD, wspomnianymi wcześniej, a maszynami MIMD polega na fakcie, że instrukcje i dane są powiązane, ponieważ reprezentują różne części tego samego zadania. Systemy MIMD mogą przetwarzać równolegle wiele podzadań w celu skrócenia czasu rozwiązania dla głównego problemu. Jest duża różnorodność systemów typu MIMD, szczególnie w tej klasie systematyka Flynna okazuje się nie w pełni odpowiednia do klasyfikowania systemów. Do tej jednej klasy należą systemy, które zachowują się bardzo różnie, jak czteroprocesorowy np. NEC SX-6 i 1 000 procesorowy SGI/Cray T3E. 30/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 10
MIMD Dlatego maszyny typu MIMD można podzielić na kilka klas: Z pamięcią dzieloną: wiele procesorów komunikuje się przez wspólną szynę dostępu do wspólnej pamięci; Z pamięcią rozproszoną: każdy procesor ma swoją własną pamięć, komunikacja odbywa się przez szybkie łącza; Klastry (od drugiej połowy lat 90-tych): dwa rozwiązania: Maszyny z pamięcią dzieloną (np. klastry firmy SUN); Maszyny z rozproszoną pamięcią (klastry internetowe bądź naukowe ); Maszyny typu ccnuma. 31/69 PRiR Wykład 1 MIMD System z pamięcią dzieloną 32/69 PRiR Wykład 1 MIMD System z pamięcią rozproszoną 33/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 11
2 podstawowe definicje Ziarnistość systemu opisuje stosunek czasu jaki procesor poświęca na komunikację do czasu poświęconego na obliczenia. Procesory są drobnoziarniste (ang. fine grained), jeśli spędzają więcej czasu na obliczeniach niż na komunikacji, w przeciwnym przypadku są gruboziarniste (ang. coarse grained). Skalowalność systemu opisuje, jak dodatkowe procesory wpływają na całkowitą wydajność. Skalowalność liniowa jest idealna: weź dwa razy więcej procesorów i czekaj na odpowiedź połowę czasu. 34/69 PRiR Wykład 1 MIMD z pamięcią wspólną Procesory w systemie z pamięcią dzieloną komunikują się przez czytanie i pisanie do pamięci znajdującej się we wspólnej przestrzeni adresowej, co często implikuje wspólną (dzieloną) szynę. Można także używać poprzecznych połączeń (ang. crossbar interconnections) albo wielostopniowego połączenia (ang. multistage interconnection network) 35/69 PRiR Wykład 1 MIMD z pamięcią wspólną Architektura z pamięcią dzieloną Połączenie szyną 36/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 12
MIMD z pamięcią wspólną Architektura z pamięcią dzieloną Poprzeczne połączenia 37/69 PRiR Wykład 1 Shared memory MIMD Architektura z pamięcią dzieloną Wielostopniowe połączenie 38/69 PRiR Wykład 1 MIMD z pamięcią wspólną Szyna dzielona jest najłatwiejszym i najczęściej stosowanym rozwiązaniem. W praktyce bardzo trudne okazało się zaprojektowanie szyny, która byłaby wystarczająco szybka, szczególnie biorąc pod uwagę, że szybkość procesorów zwiększała się szybko. Nakłada to górną granicę na liczbę procesorów, dlatego liczba takich połączeń w praktyce nie przekracza kilkudziesięciu (raczej 20 niż 90). 39/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 13
MIMD z pamięcią wspólną W 1992 powstał standard (IEEE P896) dla szybkich szyn łączących systemy wewnętrznie lub zewnętrznie. Szyna ta nazwana Scalable Coherent Interface SCI powinna zapewnić przepustowość między dwoma elementami rzędu 200-1,000 Mbyte/s. Jest używana przez HP/Convex SPP-2000, ale może być użyta w sieci stacji roboczych. SCI jest czymś więcej niż szybką szyną i może działać jako szkielet sieci dla rozproszonego przetwarzania. 40/69 PRiR Wykład 1 MIMD z pamięcią wspólną Problemy: Jeden proces będzie miał kontrolę nad szyną w momencie, gdy inny chce dostać się do pamięci. Ten problem jest z reguły rozwiązywany przez przydzielanie każdemu procesorowi dużego bufora na pamięć podręczną, do którego ma dostęp zamiast pamięci dzielonej. Spójność danych: z wieloma procesorami operującymi na tych samych danych może się to skończyć tak, że jedna zmienna będzie miała wiele wartości w każdej pamięci podręcznej w systemie. Jest wiele dostępnych algorytmów, zapewniających spójność danych np. bus snooping, different caching system i inne, ale to zwiększa koszt (=czas wykonania) oraz złożoność systemu. 41/69 PRiR Wykład 1 MIMD z pamięcią wspólną Systemy z pamięcią dzieloną są najłatwiejszymi komputerami równoległymi do programowania. W systemach gruboziarnistych mogą działać programy (działają) pisane dla systemów jednoprocesorowych. Systemy z pamięcią dzieloną są skalowalne dla niedużej liczby procesorów. Dla ilości większej niż 20 stosunek czas/procesorspada, ponieważ szyny stają się przepełnione. 42/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 14
MIMD z pamięcią wspólną Podsumowując: ZA: PRZECIW: Łatwe do programowania Dużo gotowego oprogramowania Niskie koszty Ograniczona skalowalność Problemy zgodności pamięci podręcznej Gruboziarnista równoległość 43/69 PRiR Wykład 1 MIMD z pamięcią rozproszoną Klasa DM-MIMD jest bez wątpienia najszybciej rozwijającą się częścią rodziny komputerów wysoko wydajnościowych. Procesory w systemie z rozproszoną pamięcią wykorzystują komunikaty, aby koordynować swoje działania. Każdy procesor ma swoją pamięć i elementy łącznościowe z innymi procesorami. Procesor, jego pamięć i elementy łączące są określane mianem węzła (ang. node) systemu. Ponieważ do synchronizacji wykorzystywane są komunikaty, nazywamy te systemy systemami wymiany komunikatów (ang. message passing multiprocessors). Ponieważ każdy węzeł jest kompletnym komputerem, taki system jest nazwany systemem wielokomputerowym (ang. multicomputers). 44/69 PRiR Wykład 1 MIMD z pamięcią rozproszoną Problem połączeń: Idealne rozwiązanie podłączyć każdy procesor w systemie do każdego innego - jest (dziś) niedostępne ze względu na trudności w budowie, koszty i skalowalność. 45/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 15
MIMD z pamięcią rozproszoną Różne strategie: pierścienie hipersześciany (ang. hypercube) drzewa binarne i grube (ang. fat) drzewa dwuwymiarowe tablice procesorów 46/69 PRiR Wykład 1 MIMD z pamięcią rozproszoną 47/69 PRiR Wykład 1 MIMD z pamięcią rozproszoną Hipersześciany Dobrą właściwością topologii opartej na hipersześcianie jest to, że przy 2 d węzłach liczba krawędzi, jakie trzeba pokonać pomiędzy każdymi dwoma wierzchołkami wynosi maksymalnie d. Tak więc wymiar sieci rośnie tylko logarytmicznie wraz ze wzrostem liczby wierzchołków. Dodatkowo, możliwe jest symulowanie każdej innej topologii na hipersześcianie: drzew, pierścieni, 2 i 3 wymiarowych siatek, i innych. 48/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 16
MIMD z pamięcią rozproszoną Hipersześciany W praktyce dokładna topologia hipersześcianu nie ma większego znaczenia, ponieważ wszystkie systemy na rynku implementują "wormhole routing". To oznacza, że jeśli wiadomość jest wysyłana z węzła i do węzła j, przesyłany jest nagłówek, co powoduje bezpośrednie połączenie pomiędzy tymi węzłami. Jak tylko połączenie zostanie nawiązane, właściwe dane są przesyłane bez zakłócenia operacji na pośrednich węzłach. Poza małą ilością czasu potrzebnego na nawiązanie połączenia pomiędzy wierzchołkami, czas połączenia stał się na dobrą sprawę niezależny od faktycznej odległości (->OneLab). 49/69 PRiR Wykład 1 MIMD z pamięcią rozproszoną Hipersześciany Jeśli w obciążonej sieci kilka wiadomości ma przebyć tę samą drogę, czasy oczekiwania są wyliczone jak w każdej sieci, która bezpośrednio nie łączy każdego procesora z każdym. Często stosowane są strategie wielokrotnego przełączania, aby ominąć obciążone połączenia. 50/69 PRiR Wykład 1 MIMD z pamięcią rozproszoną Grube drzewo 51/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 17
MIMD z pamięcią rozproszoną Grube drzewa Wydajny pod względem kosztów sposób, aby połączyć dużą liczbę procesorów, to właśnie grube drzewo (ang. fat tree). W zasadzie zwykłe drzewo wystarczy, żeby połączyć wszystkie węzły w systemie. Jednak w praktyce okazuje się, że w pobliżu korzenia drzewa występuje przeciążenie systemu z powodu dużej koncentracji wiadomości, które najpierw muszą dostać się na wysoki poziom zanim mogą ponownie zejść niżej do docelowych węzłów. Grube drzewo częściowo rekompensuje to zjawisko przez zapewnienie większej przepustowości (najczęściej w formie wielokrotnych połączeń) w wyższych partiach drzewa. N- wymiarowe grube drzewo to drzewo, gdzie poziomy w kierunku korzenia są N krotnie liczniejsze niż ich liczba na niższym poziomie. 52/69 PRiR Wykład 1 MIMD z pamięcią rozproszoną Dwuwymiarowe tablice procesorów(każdy procesor jest połączony ze swoimi sąsiadami). Sporo dużych równoległych systemów DM-MIMD zbudowano w oparciu o 2 i 3 wymiarowe siatki (ang. mesh), ewentualnie struktury walcowe. Powodem tego może być to, że większość dużych symulacji może być wydajnie mapowana na tej topologii, i że większa ilość połączeń prawie się nie opłaca. Jednak niektóre systemy utrzymują dodatkowe połączenia poza siatką w celu uniknięcia wąskich gardeł w przesyłaniu i wyszukiwaniu danych. 53/69 PRiR Wykład 1 Podsumowanie MIMD z pamięcią rozproszoną ZA: Niemal liniowa skalowalność Drobnoziarnista równoległość PRZECIW: Trudne do programowania Mało dostępnych programów Kosztowne 54/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 18
Klastry Rozwój klastrów, zbioru stacji roboczych/komputerów PC połączonych przez sieć lokalną, szybko wzrósł od momentu zaprezentowania pierwszego klastra Beowulf-a w 1994 r. Atrakcyjność tego rozwiązania leży w potencjalnie niskich kosztach zarówno sprzętu i oprogramowania jak i kontroli, jaką budowniczowie i użytkownicy mają nad systemem. Zainteresowanie klastrami można dostrzec nawet ze strony IEEE w postaci działania Task Force on Cluster Computing (TFCC), który regularnie wydaje White Paper. Opisywany w nim jest obecny status obliczeń prowadzonych na klastrach. Także książki jak zbudować i utrzymać klastry zwiększyły ich popularność. 55/69 PRiR Wykład 1 Klastry Wraz z tym, jak środowisko klastrów stawało się dojrzalsze i atrakcyjniejsze finansowo, zarówno duże, jak i małe firmy wkroczyły na to pole i oferują mniej lub bardziej gotowe do działania klastry dla tych, którzy nie chcą budować swojego systemu od podstaw. Liczba firm sprzedających konfiguracje oparte na klastrach stała się dość duża. 56/69 PRiR Wykład 1 Klastry Dodatkowo jest duża różnica w użytkowaniu klastrów i ich bardziej zintegrowanych odpowiedników, które będą omówione w następujących sekcjach: klastry są najczęściej używane do capability computing, podczas gdy zintegrowane maszyny są używane do capacity computing. 57/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 19
Klastry Pierwszy tryb użytkowania - capability computing - oznacza, że system jest używany do jednego bądź kilku programów, dla których nie ma żadnej dostępnej alternatywy pod względem możliwości obliczeniowych. Drugie podejście -capacity computing - polega na utrzymywaniu dużego obciążenia przez pracę wielu, często wymagających, programów i użytkowników. 58/69 PRiR Wykład 1 Klastry Tradycyjnie dostawcy dużych superkomputerów nauczyli się dostarczać oprogramowanie do tego ostatniego trybu pracy, ponieważ cenne zasoby ich systemów musiały być jak najwydajniejsze. Dla kontrastu klastry takie jak klaster Beowulf (Mossix i inne) są głównie zarządzane przez systemy na bazie Linuxa, które albo nie posiadają odpowiednich narzędzi, albo są one słabo rozwinięte. Jednakże wraz ze wzrostem popularności i stabilności klastrów kształtuje się trend do używania ich do capability computing. 59/69 PRiR Wykład 1 Klastry Ważnym, ale nie zadziwiającym wnioskiem jest, że prędkość łącza jest bardzo ważna we wszystkim, poza aplikacjami najbardziej złożonymi obliczeniowo. Kolejną ważną obserwacją jest, że węzły obliczeniowe z więcej niż jednym procesorem mogą być atrakcyjne z punktu widzenia oszczędności (prawdopodobnie także energii) i kwestii odprowadzania ciepła, ale wydajność może zostać poważnie obniżona przez fakt, że więcej procesorów musi pracować na pamięci poszczególnego węzła. Przepustowość węzłów w tym wypadku nie wystarcza dla wymagań aplikacji wymagających dużej ilości pamięci. 60/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 20
Klastry Na szczęście jest dziś duży wybór sieci komunikacyjnych dostępnych w klastrach. Oczywiście 100 Mb/s Ethernet jest zawsze wykonalny, co jest atrakcyjne ze względów ekonomicznych, ale ma minusy w postaci ograniczenia maksymalnej przepustowości (około 10 MB/s) i dużego opóźnienia (ang. latency) (około100 µs). Gigabitowy Ethernet ma maksymalną przepustowość 10 razy większą, ale ma takie samo opóźnienie. 61/69 PRiR Wykład 1 Maszyny ccnuma W dzisiejszych czasach można zaobserwować trend, aby budować systemy, które mają raczej małą (do 16) liczbę procesorów RISC ściśle zintegrowanych w klasterze w tzw. węzeł SMP - Symmetric Multi- Processing. Procesory w takim węźle są praktycznie zawsze połączone bezpośrednio szyną, podczas gdy klastry połączone są mniej kosztowną siecią. 62/69 PRiR Wykład 1 Maszyny ccnuma Diagram blokowy systemu z hybrydową siecią: klastry 4 CPU są połączone szyną. Zewnętrznie klastry połączone są mniej kosztowną siecią. 63/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 21
Maszyny ccnuma Jest to postępowanie podobne do tego przy dużych grupach procesorów wektorowych wspomnianych wcześniej, ale istotną różnicą jest to, że każdy procesor, jeśli zajdzie taka potrzeba, ma dostęp do całej przestrzeni adresowej. Najważniejszymi sposobami pozwalającymi węzłom SMP dzielić ich pamięć jest S-COMA (Simple Cache-Only Memory Architecture - Prosta Architektura Pamięci Podręcznej) i ccnuma (Cache Coherent Non-Uniform Memory Access Niejednorodna Dostępność do Spójnej Pamięci Podręcznej). Dlatego takie systemy mogą być uznawane za maszyny SM-MIMD. Z drugiej strony, ponieważ pamięć jest fizycznie rozproszona, nie może być zagwarantowane, że operacja dostępu do danych będzie obciążona tym samym czasem. 64/69 PRiR Wykład 1 Maszyny ccnuma W systemach S-COMA hierarchiczność pamięci podręcznej lokalnych węzłów jest rozszerzona na pamięć innych węzłów. Gdy potrzebne są dane nie znajdujące się w lokalnej pamięci węzła, są one tam dostarczane z węzła, w którym się fizycznie znajdowały. W ccnuma ten pomysł jest dalej rozszerzany i cała pamięć w systemie jest adresowana globalnie. Tak więc dane mogą nie być fizycznie lokalne, ale logicznie należą do jednej przestrzeni adresowej. Ponieważ dane mogą być fizycznie rozproszone na wiele węzłów, czas dostępu do różnych danych może być różny - co wyjaśnia termin niejednorodna dostępność do pamięci (nonuniform). 65/69 PRiR Wykład 1 Maszyny ccnuma Termin spójna pamięć podręczna (ang. Cache Coherent ) odnosi się do faktu, że dla wszystkich procesorów jedna zmienna musi mieć jedną, ustaloną wartość. Dlatego musi zostać zapewnione, że pamięć podręczna, która zapewniła te dane, jest pod tym względem zgodna. Jest wiele sposobów na zapewnienie spójności pamięci podręcznej procesorów. Jeden to snoopy bus protocol, w którym pamięci nasłuchują transportu zmiennych do innych procesorów i uaktualniają swoje kopie tych zmiennych, jeśli je posiadają. Inny sposób to pamięć słownikowa (ang. directory memory), specjalny obszar pamięci, który pozwala śledzić wszystkie kopie zmiennych i ich aktualność. 66/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 22
Maszyny ccnuma W chwili obecnej żadna komercyjna maszyna nie używa schematu S-COMA. Jest kilka popularnych maszyn ccnuma (HP SuperDome, SGI Origin3000 i Altix3000) dostępnych na rynku. Dla wszystkich praktycznych zastosowań możemy zaklasyfikować te systemy jako maszyny SM-MIMD także dlatego, że specjalny sprzęt/oprogramowanie (jak pamięć słownikowa) zostało dodane, aby osiągnąć spójny obraz systemu pomimo jego fizycznego rozproszenia. 67/69 PRiR Wykład 1 Podsumowanie Niektóre maszyny są oczywiście hybrydami kategorii, jednak ten klasyczny model (Flynna) przetrwał ponieważ jest prosty, łatwy do zrozumienia i daje dobry pierwszy ogląd zagadnienia. Jest również prawdopodobnie dzięki swojej zrozumiałości najbardziej powszechnym schematem * * David A. Patterson and John L. Hennessy. Computer Organization and Design (Second Edition) Morgan Kaufmann Publishers, 1998, pp.748 68/69 PRiR Wykład 1 Podsumowanie Równoległe przetwarzanie jest ciągle wyzwaniem dla naukowców. Nie możemy jeszcze oczekiwać bardzo dobrych kompilatorów do równoległego przetwarzania, ale: budowa narzędzi (takich jak kompilatory, biblioteki i systemy) pomagających w przetwarzaniu równoległym jest intensywnie rozwijającą się dziedziną 69/69 PRiR Wykład 1 Przygotował: Lucjan Stapp 23