Systemy wieloprocesorowe i wielokomputerowe Taksonomia Flynna Uwzględnia następujące czynniki: • Liczbę strumieni instrukcji • Liczbę strumieni danych Klasyfikacja bierze się pod uwagę: • Jednostkę przetwarzającą JP • Moduł pamięci MP Taksonomia Flynna Skrót Nazwa Liczba strumieni instrukcji Liczba strumieni danych SISD Single Instruction Single Data 1 1 SIMD Single Instruction Multiplie Data 1 wiele MISD Multiplie Instruction Single Data wiele 1 MIMD Multiplie Instruction Multiplie Data wiele wiele SISD - Single Instruction, Single Data Przykład: urządzenia jednoprocesorowe Elementy równoległości: przetwarzanie potokowe i super skalarne; Single Instruction Multiplie Data Przykład: komputery wektorowe i macierzowe. takie same instrukcje na oddzielnych danych. Procesory macierzowe Procesor macierzowy składa się z siatki (dwu lub trzy wymiarowej) jednakowych procesorów posiadających pamięci lokalne wykonujących jeden program. Procesory macierzowe Procesory macierzowe Przykład: Za pierwszy komputer macierzowy zbudowany według architektury SIMD źródła podają komputer ILLIAC IV. Projekt z lat 60 w University of Illinois a maszyna weszła do eksploatacji w roku 1972. • Maszyna składała się z jednostki sterującej rozgłaszającej rozkazy do 64 jednostek przetwarzających (w rzeczywistości zbudowano tylko 16 jednostek). • Każda z tych jednostek operowała na pamięci lokalnej zawierającej 2K słów 64 bitowych i mogła komunikować się bezpośrednio z czterema innymi procesorami. • Wydajność maszyny sięgnęła 15 Mflop i była daleko poniżej zakładanej wydajności 1000 Mflop. Procesory wektorowe • Procesor wektorowy operuje na wektorach czyli wielu wielkościach skalarnych naraz. • Komputer wektorowy składa się z części zawierającej procesor konwencjonalny i uzupełniony jest o procesor wektorowy będący jednostką wykonującą operacje na długich rejestrach danych. • Procesory wektorowe są elementami wielu superkomputerów (DCD Cyber 205, Cray 1, Cray 2, Cray 3, Fujitsu VPX 2000, Hitachi S3600). W procesorach Pentium zastosowano po raz pierwszy mechanizmy MMX (ang. MultiMedia eXtension) i SSE (ang. Streaming SIMD Extensions). Mechanizm MMX - wykonywanie operacji stałoprzecinkowych na wektorach 64 bitowych. Mechanizm SSE - wykonywaniu operacji zmiennoprzecinkowych na wektorach zawierających 4 liczby zmiennoprzecinkowe (każda zajmuje 32 bity). Single Instruction Multiplie Data Współcześnie wg koncepcji SIMD budowane są akceleratory graficzne wykorzystywane w komputerach PC. Nvidia - GeForce GTX TITAN liczba rdzeni CUDA 2688: 5 – GPCs – Graphics Processor Clasters; 14 – SMx – Streaming Multi-processors; 192 - stream processors; Nvidia GeForce KEPLER Single Instruction Multiplie Data Własności komputerów SIMD: • Większość systemów składa się z wielu (często prostych) procesorów. • Wszystkie procesory wykonują tę samą instrukcję ale dla różnych zestawów danych. • Każdy z procesorów posiada pamięć lokalną ale istnieje też pamięć wspólna. • Często istnieje połączenie pomiędzy sąsiednimi (lub innymi) procesorami. • Implementują równoległość drobnoziarnistą (ang. finegrained parallelism.) MISD - Multiple Instruction Single Data MISD - Multiple Instruction Single Data Przykład: • komputery wysokiej dyspozycyjności; • w pojedynczym strumieniu wyznaczane są beamformery w różnych pasmach; • zaszyfrowane dane są dekodowane wg różnych algorytmów. MIMD - Multiple Instruction Multiple Data MIMD - Multiple Instruction Multiple Data Do grupy systemów MIMD zalicza się całe spektrum komputerów poczynając do stacji roboczych (procesory wielordzeniowe) po superkomputery. Systemy MIMD mają bardzo zróżnicowaną architekturę, a przez to wymagają odrębnych metod programowania. Z uwagi na te właściwości powstały metody dalszego ich klasyfikowania. TITAN Supercomputer http://www.anandtech.com/show/6421/inside-the-titan-supercomputer-299k-amd-x86-cores-and-186k-nvidia-gpu-cores TITAN Supercomputer http://www.top500.org/lists/2012/11/ http://www.anandtech.com/show/6421/inside-the-titan-supercomputer-299k-amd-x86-cores-and-186k-nvidia-gpu-cores Taksonomia Tanneubauma Kryterium – sposób komunikacji pomiędzy procesorami. Komunikacja może być realizowany poprzez: • wspólną pamięć; • system wejścia wyjścia. Taksonomia Tanneubauma Konstrukcja, w której procesory komunikują się poprzez pamięć dzieloną nazywa się wieloprocesorem (ang. Multiprocessor). Gdy procesory komunikują się poprzez urządzenia wejścia wyjścia mamy do czynienia z wielokomputerem (ang. Multicomputer). Taksonomia Tanneubauma Multiprocesory Przestrzeń adresowa współdzielona pomiędzy wszystkie procesory Multiprocesory Własności multiprocesora: • Dostęp do pamięci jest wąskim gardłem ograniczającym wydajność systemu. • Komunikacja procesów odbywa się przez wspólną pamięć – nie trzeba specjalnych mechanizmów komunikacyjnych. • Konieczność synchronizacji dostępu do zmiennych dzielonych. Multikomputery – ang. multicomputers Multikomputery Własności: • Każdy z procesorów ma swoją lokalną pamięć. • Komunikacja procesów odbywa się przez system wejścia/wyjścia przy wykorzystaniu abstrakcji komunikatów. Taksonomia Johnsona Modyfikacja klasyfikacji Flynna – kategoria systemów MIMD podzielona została na cztery podkategorie w zależności od zastosowanej w nich struktury pamięci. Typ pamięci: GM – pamięć globalna, ang. Global Memory. DM – pamięć rozproszona, ang. Distributed Memory. Sposób dostępu do pamięci: SV – współdzielone zmienne, ang. Shared Veriables. MP – przekazywanie komunikatów, ang. Message Passing. Taksonomia Johnsona Pamięć globalna GM Pamięć rozproszona DM Komunikacja poprzez zmienne dzielone SV Shared Veriables GMSV DMSV Komunikacja poprzez przekazywanie komunikatów MP Message Passing GMMP DMMP Taksonomia Johnsona Komputery należące do grupy GMSV są ściśle powiązanymi ze sobą wieloprocesorami , których liczba w większości rozwiązań nie przekracza 20. Dostęp do pamięci realizowany jest przy użyciu współdzielonej magistrali. DMMP – wysoko skalowalne wielokomputery: • wyposażone w pamięć rozproszoną; • wykorzystujące różnorodne mechanizmy dostępu do pamięci; • posiadające kilka przestrzeni adresowych; • wykorzystujące mechanizm przesyłania komunikatów. Ze względu na różnorodność rozwiązań zgodnych z architekturą DMMP wydziela się wśród nich mniejsze klasy. Taksonomia Johnsona DMSV – skalowalne wieloprocesory wykorzystujące: • współdzielenie zmiennych zamiast przesyłania komunikatów; • zastosowanie globalnej przestrzeni adresowej. Ilość procesorów nie przekracza 256, a wykorzystywane topologie ich połączeń to hipersześcian i kratownica. GMMP – wykorzystują: • pamięć globalną oraz • mechanizm przesyłania komunikatów. Brak praktycznej implementacje tej kategorii. Klasyfikacja równoległości: • Procesory superskalarne i procesory wektorowe; • Procesory wielordzeniowe; • Systemy SMP / Systemy NUMA; • Klastry; • Systemy masywnie równoległe; • Gridy. Systemy z pamięcią dzieloną Zwiększanie mocy obliczeniowej poprzez zrównoleglanie na poziomie instrukcji ma swoje granice wynikające z ograniczeń technologicznych. Dalsze przyspieszenie może być osiągnięte poprzez wskazanie części kodu, która może być wykonywana równolegle. Nazwane jest to zrównolegleniem na poziomie wątków, ang. Thread Level Parallelism. Multiprocesory z siecią w pełni połączoną Wieloprocesor z przełącznicą krzyżową Multiprocesory Rozwiązaniem wąskiego gardła przy dostępie do wspólnej pamięci było zastosowanie tak zwanej przełącznicy krzyżowej (ang. Crossbar Switch), która jest przykładem sieci w pełni połączonych (ang. Fully Connected Networks). Zalety - jednoczesny dostęp wielu procesorów do wielu modułów pamięci (pod warunkiem że dany moduł nie jest zajęty), sieci nieblokujące. Wady - znaczna liczba magistral i przełączników co przy większej liczbie modułów pociąga za sobą znaczne koszty. Przy n procesorach i k modułach pamięci liczba przełączników proporcjonalna do k×n . Komputer Sun Fire E25K wykorzystuje przełącznicę krzyżową wymiaru 18x18 Wieloprocesory z siecią wielostopniową Sieci wielostopniowe (ang. Multistage Networks) stanowią kompromis pomiędzy kosztami a wydajnością. Wykazują większą wydajność niż konstrukcje ze wspólną magistralą i mniejszy koszt niż rozwiązania z przełącznicą krzyżową. Wieloprocesory z siecią wielostopniową Przykład sieci wielostopniowej – sieć omega Sieć omega zawierająca n procesorów i n modułów pamięci składała się będzie z log 2 n stopni a w każdym stopniu będzie n przełączników. 2 n W całej sieci będzie log 2 n przełączników. W przełącznicy 2 2 krzyżowej – n . Przełącznica krzyżowa dla 8 procesorów i 8 pamięci zawierała będzie 64 przełączniki podczas gdy sieć omega tylko 12. Wieloprocesory z pamięcią wieloportową Przeniesienie układów logicznych, odpowiedzialnych za obsługę transmisji i zgłoszeń dostępu, z punktów krzyżowych (w przełącznicy krzyżowej) do wnętrza modułów pamięci, prowadzi do organizacji zwanej pamięcią wieloportową, ang. multiport memory. Właściwości systemów opartych na pamięciach wieloportowych: - skomplikowany druk, - kosztowna pamięć, - ograniczenie konfiguracji i maksymalnej przepustowości systemu przez liczbę portów do modułu pamięci Klastry Wyróżnia się trzy podstawowe rodzaje klastrów: • klastry wysokiej dostępności (ang. high availability clusters – HA), • klastry zrównoważonego obciążenia (ang. load balancing clusters – LB), • klastry wysokiej wydajności (ang. high performance clusters – HPC). Klaster wysokiej dostępności Klastry HA = gwarancja dostępności usług oferowanych poprzez klaster. Najprostszy klaster tego typu składa się z dwóch węzłów, węzła aktywnego, aktualnie oferującego daną usługę oraz węzła oczekującego i monitorującego pracę węzła aktywnego. W przypadku awarii węzła aktywnego, węzeł będący w spoczynku przechodzi w stan aktywności - przejmuje adres IP odchodzącego węzła, uzyskuje dostęp do współdzielonych zasobów a następnie uruchamia odpowiednie usługi umożliwiając dalszą pracę. Współdzielenie danych pomiędzy węzłami może odbywać się za sprawą replikacji programowej (np. DRBD) bądź też dzięki rozwiązaniu sprzętowemu. Przykładem dosyć popularnego oprogramowania typu OpenSource oferującego funkcjonalność wysokiej dostępności jest projekt Linux-HA Klaster zrównoważonego obciążenia Klastry LB = gwarancja zrównoważonego obciążenia na wszystkie węzły klastra. Przekierowanie żądania do innego węzła odbywa się na podstawie analizy obciążenia (wykorzystania procesora, pamięci) węzłów. Nie dopuszcza się do sytuacji, w której niektóre z węzłów są w stanie pełnej zajętości, a inne wolne od wykonywania jakichkolwiek zadań. Zadaniem mechanizmu LB jest pełne wykorzystanie mocy klastra. Umożliwia on również wykrywanie awarii węzłów bądź też wykrycie całkowitego wyłączenia węzła. Przykładem projektów realizujących założenia klastra zrównoważonego obciążenia jest LVS (Linux Virtual Server) oraz openMosix . Klaster wysokiej wydajności Poprzez klaster wysokiej wydajności (ang. high performance computing - HPC) rozumie się grupę komputerów wykorzystywaną do wykonywania obliczeń. Klastry tego typu ze względu na oferowaną dużą moc obliczeniową są szczególnie popularne w środowiskach naukowych. Używa się ich do uruchamiania programów wykonujących obliczenia. Klaster wysokiej wydajności Poniżej kilka przykładowych zastosowań systemów HPC: • analiza danych pochodzących z sejsmogramów w poszukiwaniu złóż ropy naftowej czy też gazu ziemnego (do rekonstrukcji niewielkich obszarów potrzebne są terabajty danych), • symulacje aerodynamiczne przy projektowaniu silników oraz samolotów, • projektowanie systemów do przewidywania trzęsień ziemi, • w naukach biomedycznych np. symulacja procesu fałdowania białek, który w przyrodzie zachodzi bardzo szybko tj. około jednej milionowej części sekundy (zaburzenie tego procesu może prowadzić do choroby Alzheimera) - symulacja tego procesu na zwykłym komputerze zajęłaby dekady, • modelowanie farmaceutyczne, • modelowanie wyników finansowych, • symulacje astrofizyczne, • symulacje klimatu Ziemi (modelowanie aktualnie zachodzących zjawisk klimatycznych oraz ich przewidywanie), • zastosowanie w kinematografii przy tworzeniu efektów specjalnych w filmach; renderowanie graficzne przy manipulowaniu obrazem wysokiej rozdzielczości. Klasyfikacja klastrów Kryterium sprzęt i sieć Klastry heterogeniczne: • uruchamiane w środowiskach heterogenicznych, czyli niejednorodnych; • zbudowane z komputerów pochodzących od różnych producentów; • komputery pracują na różnych systemach operacyjnych; • elementy klastra wykorzystują różne protokoły sieciowe. Klastry homogeniczne: • uruchamiane w środowiskach homogenicznych, czyli jednorodnych; • zbudowane w oparciu o sprzęt tego samego, lub kompatybilnego producenta. • komputery pracują pod kontrolą tego samego systemu operacyjnego. Klastry