slajdy
Transkrypt
slajdy
Obliczenia równoległe w ICM Konrad Wawruch [email protected] Warszawa, 20 stycznia 2005 O czym powiem: 1. czym się zajmuje ICM 2. czym ja się zajmuję 3. specyfika współczesnych obliczeń naukowych 4. adaptacyjne środowisko do obliczeń równoległych 5. predykcja czasu działania programu 1 Czym się zajmuje ICM? • Część naukowa biofizyka, bioinformatyka, meteorologia, modelowanie w medycynie... • Część usługowa – KDM Komputery Dużej Mocy utrzymanie zasobów, portowanie, optymalizacja oprogramowania • Edukacja modelowanie, optymalizacja kodów numerycznych, przetwarzanie rozproszone, praktyki studenckie Zasoby ICM • Klastry Dual Opteron ok. 200 CPU, 800 GFLOP • Cray X1e superkomputer wektorowy, 32 (128) CPU, 576 GFLOP • Jak to porównać? 2 Czym się zajmuję? • Zarządzanie zasobami w systemach rozproszonych alokacja, rezerwacja... • Zarządzanie dużymi zasobami danych w systemach rozproszonych replikacja, synchronizacja, dzielenie... • Obliczenia równoległe i rozproszone systemy heterogeniczne • CR, czyliCzarna Robota optymalizacja i portowanie kodów 3 Czym się zajmowałem w 2004 roku? • Smith-Watermann znajdowanie podobieństwa sekwencji nukleotydowych • Rurki – modelowanie przepływu krwi zrównoleglenie oprogramowania • Portowanie i optymalizacja kodów – Cray VASP, CHARMm, Siesta, Gromos, Gromacs, DFTB, CPMD Gamess, NAMD, PETsc, COAMPS • Praktyki studenckie • Projektowanie leków Przetwarzanie dużych baz pełnotekstowych Obliczenia deskryptorów kwantowych NLP – Natural Language Processing machine learning 4 Specyfika współczesnych obliczeń naukowych • Duże wymagania odnośnie mocy obliczeniowej: – wymagana moc obliczeniowa rzędu setek GigaFlopów – operowanie na dużych ilościach danych, nie do zgromadzenia w jednym miejscu – klasyczne superkomputery nie wystarczają lub są za drogie • Wirtualne łączenie się ośrodków superkomputerowych (klastrowanie klastrów lub superkomputerów) • Normą jest użycie rzeczywistych kodów równoległych 5 Metody zrównoleglania kodu • Programy MIMD – Multiple Instructions, Multiple Data • Programy SIMD – Single Instructions, Multiple Data: – Zrównoleglanie automatyczne wykonywane przez kompilator; – Zrównoleglanie półautomatyczne – wykonywane przez kompilator, wskazówki programisty w postaci dyrektyw, np. High Performance Fortran: program zad1 INTEGER A,B,C DIMENSION A(100), B(100), C(100) !HPF$ !HPF$ !HPF$ !HPF$ !HPF$ 10 !HPF$ TEMPLATE T(100) DISTRIBUTE T(BLOCK) ALIGN A(i) WITH T(i) ALIGN B(i) WITH T(i) ALIGN C(i) WITH T(i) INTEGER n=100 DO 10 I=1,N A(i)=1 B(i)=N-i C(i)=0 CONTINUE 20 INDEPENDENT DO 20 I=1,N C(i)=A(i)+B(i) CONTINUE 30 DO 30 I=1,N WRITE(*,*) C(i) CONTINUE END 6 • – Zrównoleglanie ręczne: ∗ wyspecjalizowane języki wspierające operacje na rozproszonych danych, np. PFortran: program zad3 INTEGER A,B,c,d dimension A(16) 10 do 10 i=1,2 a(i)=(thisnode+1)*2 continue B=+{A(1)} B=B*thisnode c=max{a(2)} c=c*a(2)@thisnode 999 1000 write (*,999) c write (*,1000) thisnode, b format (’ minimum*tablica 2 na danym procesorze: ’,I5) format (’ na procesorze: ’,I5,’ suma: ’,I5) stop end • – ∗ biblioteki pozwalające na przesyłanie danych między węzłami, np. PVM, MPI. 7 MPI – Message Passing Interface program trapezy include ’mpif.h’ integer status(MPI_Status_size) call MPI_Init(ierr) call MPI_Comm_Rank(MPI_Comm_World,my_rank,ierr) call MPI_Comm_Size(MPI_Comm_World,np,ierr) if(my_rank.eq.0) then a=-1 b=-1 n=100 endif call MPI_Bcast(a,1,MPI_Real,0,MPI_Comm_World,ierr) OBLICZENIA_LOKALNE local_suma=TRAP(local_a,local_b,local_n,h,f) call MPI_Reduce(local_suma,suma,1,MPI_Real,MPI_Sum,0, 1 MPI_Comm_World,ierr) if (my_rank.eq.0) then write(*,*) suma endif call MPI_Finalize(ierr) stop end Podstawowe operacje: • MPI SEND, MPI ISEND • MPI RECV, MPI IRECV • MPI BCAST, MPI GATHER, MPI SCATTER 8 Komunikacja równoległa: Standardem jest użycie biblioteki MPI (Message Passing Interface). • Jeden kod na wszystkich procesorach • Komunikacja symetryczna, synchroniczna lub asynchroniczna • Instrukcje wysyłania i odbierania między pojedyńczymi węzłami • Operacje grupowe: Gather, Scatter, Barrier, Broadcast, Reduce, ... Problem: Chcemy wykonywać obliczenia na kilku klastrach (mających wewnętrzną sieć wysokiej przepustowości), połączonych siecią WAN. • Co sieć to inna przepustowość i opóźnienia. • Klastry nie mają identycznych połączeń między sobą. • Węzły klastrów są maszynami SMP. Albo NUMA. Ale to nie wystarczy: • Potrzebujemy obsłużyć wymagania dotyczące QoS • Odmienne podejście do tematu: zgadnąć, jakie zasoby i jaką topologię udostępnić dla danego zadania obliczeniowego • Migracja zadań, checkpointing • Uwzględnienie czasu konwersji w środowiskach heterogenicznych • Uruchomienie zadania: gdzie i jak uruchomić, aby wieloetapowe zadanie policzyło się najszybciej • Użycie informacji historycznych 9 W jaki sposób optymalnie przesyłać dane w takim systemie? Na początku był PRAM... • wady • modyfikacje: EREW PRAM ... LogP • L: opóźnienie • o: narzut (czas zajętości procesora) • g: minimalny odstęp między możliwością transmisji • P: liczba modułów procesor+pamięć • skończona przepustowość sieci (L/g) 10 Inne modele: • Rozszerzenia PRAM: – MPC – Phase PRAM – delay model – LPRAM – PMU • BSP • Postal LogGP • L: opóźnienie • o: narzut (czas zajętości procesora) • g: minimalny odstęp między możliwością transmisji • G: przepustowość dla długich komunikatów czas na przesłanie bajtu długiego komunikatu • P: liczba modułów procesor+pamięć LoGPC • L: opóźnienie • o: narzut (czas zajętości procesora) • G: przepustowość dla długich komunikatów czas na przesłanie bajtu długiego komunikatu • P: liczba modułów procesor+pamięć • C: congestion 11 Gdzie to jest użyte? • Komercyjne implementacje MPI • MPI-StarT • MagPIe • PACX-MPI MPICH-G2 • pełne drzewa binarne • uwzględnianie wielopoziomowości • dzięki użyciu GTK (Globus ToolKit) autodetekcja topologii 12 Niezawodność obliczeń równoległych • Jest implementacja niezawodnego MPI: MPICHV • Metoda Pessimistic Log – restart całego zadania z checkpointu • Uniezależnienie od problemów z siecią – Memory Channels • Wady: – potrzebne dodatkowe Checkpoint Server-y – obciążenie sieci – restart całego zadania, nie jednego procesu – brak współpracy z systemem kolejkowym – duży narzut na węzłach obliczeniowych • Optymistyczne informacje: – Checkpoint powoduje narzut rzędu 1% – zastosowanie komunikacji zero-copy oraz asynchronicznej powinno skompensować konieczność dwukrotnego wysyłania danych 13 Predykcja czasu wykonania programu równoległego przy użyciu informacji historycznych Moje modyfikacje • użycie informacji od użytkownika (pomysł nie mój) • Filtracja – spłaszczanie • Filtracja historii zamiast “zapominania” • skalowalność: funkcja rzeczywista zamiast liniowej Wyniki (poziom ufności 95%) • Średni błąd algorytmu oryginalnego: 30-40% (w zależności od kategorii oraz aplikacji) średnia średnia: 37% • Średni bląd algorytmu zmodyfikowanego: 15-40% średnia średnia: 28% • Porównanie: oryginalny algorytm był o 14% lepszy od najlepszego z pozostałych, teraz zyskujemy 9% 14 Moja praca naukowa • Zastosowanie zaawansowanych modeli równoległości do optymalizacji czasu wykonywania operacji grupowych w MPI – pierwsze podejście: każdorazowe wyliczanie schematów – zderzenie z rzeczywistością – drugie podejście: automatycznie aktualizowane tablice routingu • Odporność MPI na awarie • Oszczędność MPI w przypadku awarii • Migracja zadań w MPI • Uczenie się i migracja zadań w celu zwiększenia wydajności 15