230 likes | 389 Views
Metody komunikacji i synchronizacji w obliczeniach równoległych. Michał Radziszewski. Plan prezentacji. Potrzeba obliczeń równoległych Pamięć dzielona a odrębne maszyny Message Passing Klasyczne zadania synchronizacji Synchronizacja na jednym OS Superkomputery
E N D
Metody komunikacji i synchronizacji w obliczeniach równoległych Michał Radziszewski
Plan prezentacji • Potrzeba obliczeń równoległych • Pamięć dzielona a odrębne maszyny • Message Passing • Klasyczne zadania synchronizacji • Synchronizacja na jednym OS • Superkomputery • Inne podejście: karty graficzne
Potrzeba obliczeń równoległych • Wydajność procesorów sekwencyjnych • 2002r. Architektura NetBurst, Pentium 4, ok. 3GHz max • 2008r. Architektura Core, Core 2 Duo/Quad, też ok. 3GHz max • Przez 6 lat wydajność przy tej samej częs-totliwości zwiększyła się zaledwie ok. 2.5x • Próby zwiększania częstotliwości ponad 3GHz problematyczne, pobór prądu
Procesory wielordzeniowe • Intel • Pentium D, V 2005, konstrukcja nieudana • Core 2 Duo, VII 2006 • Core 2 Quad, XI 2006 ($1000), $270 obecnie • AMD • Athlon X2, IV 2005, lepszy od Pentium D • Phenom, XI 2007, 4 rdzenie, błędy sprzętowe • Wykorzystanie ich wymaga równoległości!
Pamięć dzielona • Procesory wielordzeniowe • Płyty wieloprocesorowe • Maksymalnie 4x4 rdzenie, 320GFlops, 256GB RAM • Superkomputery – wielokrotnie więcej
Message Passing • Biblioteka MPI (Message Passing Interface) • Wysyłanie komunikatów między procesami, optymalne do pracy w środowiskach rozproszonych • Ale: na jednej maszynie znacznie mniej efektywne niż jeden wielowątkowy proces ze wspólną przestrzenią adresową
MPI – podstawowe funkcje • Podstawowe: send, recv – wersjesynchroniczne, asynchroniczne, nieblokujące, buforowanie • Bariera: barrier – podział obliczeń na dwa etapy, rozpoczęcie drugiego możliwe dopiero wtedy gdy wszystkie procesy zakończą pierwszy • Komunikacja kolektywna
MPI – komunikacja kolektywna • Funkcje scatter, gather • scatter rozrzuca kolejne elementy tablicy z wybranego procesu do wszystkich procesów • gather w analogiczny sposób zbiera elementy • funkcje te stanowią punkt synchronizacji
MPI – komunikacja kolektywna • Funkcje allgather, all_to_all • allgather – funkcja gather w każdym procesie • all_to_all – kombinacja funkcji scatter i gather • funkcje te także stanowią punkt synchronizacji
MPI – komunikacja kolektywna • Funkcja broadcast – send do każdego procesu, złożoność logarytmiczna • Funkcja reduce • sekwencja funkcji gather + operator o • o musi być łączne • Wariant allreduce
Klasyczne zadania synchronizacji • Pamięć dzielona oraz odrębne maszyny • Ograniczenia globalne • zasób krytyczny • zakleszczenia • zagłodzenia • Własności bezpieczeństwa i żywotności • Problem czytelników i pisarzy • Problem jedzących filozofów
Problem czytelników i pisarzy • Istnieje globalna struktura danych, do której dostęp może uzyskać jednocześnie dowolna ilość procesów czytających albo jeden piszący • Kolejki czytelników i pisarzy • Pytanie: czy wpuszczać nowych czytelników gdy czeka co najmniej jeden pisarz? • Efektywność odczytu a zagłodzenie pisarzy
Problem jedzących filozofów • Każdy filozof do jedze-nia potrzebuje dwóch widelców • Potencjalne zaklesz-czenie – gdy każdy z nich weźmie 1 widelec i czeka na drugi
Synchronizacja przy jednym OS • Obiekty nazwane i nienazwane • Wykluczanie • muteksy, sekcje krytyczne • semafory • Zdarzenia • Funkcje współzależne (atomowe) • long InterlockedExchangeAdd(long*, long) • long InterlockedExchange(long*, long)
Superkomputery • Blue Gene\L – najszybszy współczesny superkomputer • Lawrence Livermore National Laboratory • Moc 478 TFlops (od 2007r.) • 106 496 węzłów • Każdy węzeł 2x 700MHz PowerPC, 2x 2.8 GFlops, pamięć DRAM • Pamięć 2x 32768 GB
Blue Gene\L – komunikacja • Trzy sieci komunikacyjne • trójwymiarowa sieć toroidalna do komunikacji peer-to-peer między węzłami, routing sprzętowy • specjalna sieć do komunikacji kolektywnej, one-to all, all to all broadcast, topologia drzewa • globalna sieć przerwań, szybkie bariery • Gigabit Ethernet – sieciowy system plików oraz wejścia/wyjścia
Blue Gene\L – komunikacja • Dodatkowo, niezależna sieć kontrolna umożliwiająca dostęp do każdego węzła w celach konfiguracyjnych i diagnostycznych
Blue Gene\L – oprogramowanie • Bardzo prosty system operacyjny, złożony tylko na węzłach I/O • Specjalizowana i zoptymalizowana implementacja MPI • Specjalizowane biblioteki matematyczne • Wsparcie dla języków C, C++, Fortran
Karty graficzne • Nvidia 8800 GTX – 128 rdzeni w jednym procesorze, ~330 GFlops • Tylko pojedyncza precyzja • Procesor nie jest dostosowany do dowolnych programów • Działa dobrze jedynie dla zadań o regularnych danych (np. macierze) • Nie działa przeszukiwanie drzew • Procesor strumieniowy
Karty graficzne – SLI • Obecnie można zamontować 3 karty do jednej maszyny, co daje teoretycznie ~1TFlops • Można łączyć wiele maszyn z 3 kartami każda • Użycie jednocześnie CPU i procesora graficznego
Programowanie strumieniowe • Kernele operują na danych ze strumienia • Każda operacja atomowa • Kolejne elementy ze strumienia mogą być przetworzone w przypadkowej kolejności