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