Wydajność obliczeń równoległych

Transkrypt

Wydajność obliczeń równoległych
Wydajność obliczeń równoległych
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
1
Wydajność obliczeń równoległych
• Podobnie jak w obliczeniach sekwencyjnych, gdzie celem optymalizacji wydajności było maksymalne skrócenie czasu wykonania, tak i w obliczeniach równoległych chodzi o ten sam cel
• Dla konkretnego programu obliczenie liczby wykonywanych w programie operacji i czasu wykonania pozwala na uzyskanie wydajności w MFLOPS
• W przypadku obliczeń równoległych można szczegółowo analizować czas wykonania, uwzględniając także komunikację międzyprocesorową, co prowadzi do otrzymania wielu charakterystyk realizacji równoległej
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
2
Czas równoległego wykonania programu
• Czas wykonania na pojedynczym i­tym procesorze
– Ti = Tiobl + Tikom + Tijałowy • Całkowity czas wykonania równoległego
– T|| = maxi(Ti) – T|| = ∑i Ti /p (uzupełnienie czasem jałowym) • Możliwe jest zmniejszenie czasu wykonania dla systemów, w których daje się osiągnąć nakładanie się obliczeń i komunikacji
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
3
Czas równoległego wykonania programu
• Elementy składowe czasu wykonania:
– Tiobl – czas obliczeń na pojedynczym procesorze
– Najczęściej zakłada się, że algorytm równoległy wykonuje te same operacje co algorytm sekwencyjny, lub ewentualnie także pewne dodatkowe operacje wynikłe z realizacji równoległej
• ∑i Tiobl = Tsekw + Tplus
– W teorii (np. do analiz wydajności) często zakłada się idealny rozkład operacji pomiędzy procesory
• Tiobl = (Tsekw + Tplus)/p
– W praktyce maksymalny czas obliczeń na pojedynczym procesorze jest zazwyczaj większy niż wynikający z założenia idealnego zrównoważenia obciążenia (chyba że ma miejsce przyspieszenie ponadliniowe)
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
4
Czas równoległego wykonania programu
• Elementy składowe czasu wykonania:
– Tikom – czas komunikacji przypadający na pojedynczy procesor – Czas przesłania pojedynczego komunikatu o rozmiarze m­bajtów
• ts+l*(m*tw+th) – routing SF • ts+m*tw+l*th – routing CT • ts+m*tw – wzór uproszczony, routing CT – Dokładna analiza przesyłanych komunikatów umożliwia znalezienie wzorów na czasy realizacji operacji komunikacji grupowych
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
5
Parametry sieci komunikacyjnych
➔
➔
Ethernet

1Gb – ts rzędu 10 000ns, twrzędu 8ns (0.125GB/s)

10Gb – ts rzędu 1000ns, twrzędu 0.8ns (1.25 GB/s)
Infiniband

➔
➔
DDR, 4X – ts rzędu 1000 ns, twrzędu 0.5ns (2GB/s)
wiele innych mniej popularnych, często już o znaczeniu tylko historycznym (Myrinet, QsNet, SCI itp.)
http://en.wikipedia.org/wiki/List_of_device_bandwidths
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
6
Czas równoległego wykonania programu
• Elementy składowe czasu wykonania:
– Tijałowy – czas jałowy jest najtrudniejszy do oszacowania
– Występowanie czasu jałowego jest związane z niezrównoważeniem obciążenia procesorów, konieczną synchronizacją działania procesorów, występowaniem fragmentów sekwencyjnych itp.
– Miarą zrównoważenia obciążenia (load balance) może być stosunek maksymalnego czasu obliczeń i komunikacji dla pojedynczego procesora do średniego czasu obliczeń i komunikacji (czasem wyróżnia się osobno zrównoważenie obciążenia dla obliczeń i komunikacji):
• maxi(Tiobl + Tikom) / (∑i(Tiobl + Tikom) / P) – Doskonałe zrównoważenie oznacza stosunek równy 1, zwiększanie stosunku oznacza coraz gorsze zrównoważenie obciążenia
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
7
Czas równoległego wykonania programu
• Analizy wydajności obliczeń równoległych prowadzą najczęściej do oszacowania pewnej dolnej granicy czasu wykonania równoległego
• Dolna granica czasu wykonania pozwala odrzucić algorytmy, które na pewno są zbyt mało wydajne
• Precyzyjne określenie czasu wykonania jest trudne – wymaga uwzględnienia nierównomierności obciążenia, nakładania się obliczeń i komunikacji, ewentualnej ponadliniowości przyspieszenia obliczeń, zatykania się kanałów komunikacyjnych itp.) • Z tego względu ostateczna ocena wydajności programu równoległego opiera się zazwyczaj na eksperymentalnie zmierzonych czasach i obliczonych parametrach przyspieszenia obliczeń i efektywności zrównoleglenia dla konkretnej platformy
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
8
Narzut równoległego wykonania programu
• Czas wykonania równoległego można porównać z czasem idealnego równoległego rozwiązania zadania, posługując się pojęciem narzutu wykonania równoległego, T||narz
• Narzut wykonania równoległego jest miarą odejścia od idealnego, liniowego przyspieszenia obliczeń • Narzut można rozważać dla pojedynczego procesora:
– Tinarz = Ti ­ Tsekw/p (inaczej: Tinarz(p) = Ti(p) – T||(1)/p )
• jako sumaryczny dla wszystkich procesorów:
– T||narz_total = p*T||narz (= p*T|| ­ Tsekw= ∑i Ti – Tsekw , analogicznie dla T||(1))
• wreszcie jako średni przypadający na 1 procesor:
– T||narz = T||narz_total/p = T|| ­ Tsekw/p (inaczej: T||narz(p) = T||(p) – T||(1)/p )
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
9
Narzut równoległego wykonania programu
• Sumaryczny narzut wykonania równoległego składa się z:
– Udziału części sekwencyjnej (niedającej się zrównoleglić)
– Czasu realizacji dodatkowych obliczeń
– Czasu komunikacji/synchronizacji – Czasu jałowego – Czasu systemowego (uruchomienie procesów, alokacja pamięci itp.)
• Proporcje powyższych czynników w narzucie pojedynczego procesora są różne, choć narzut przypadający na pojedynczy procesor jest taki sam (po uzupełnieniu czasem jałowym tak że Ti = T|| )
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
10
Narzut równoległego wykonania programu
• Narzut wykonania równoległego, dla stałego rozmiaru zadania, zazwyczaj rośnie, jako funkcja liczby procesorów (stąd prawo Amdahla)
• Narzut obliczeń równoległych dla stałej liczby procesorów i rosnącego rozmiaru zadania może stanowić coraz mniejszy procent całkowitego czasu wykonania programu, stąd mimo wszystko sensowność obliczeń równoległych
• Istnieją precyzyjne miary liczbowe określające jak powinien rosnąć narzut jako funkcja liczby procesorów i rozmiaru zadania, aby obliczenia równoległe miały sens (czyli aby były skalowalne)
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
11
Ziarnistość obliczeń
• Inną istotną cechą przydatną w ocenie wydajności obliczeń równoległych jest ziarnistość obliczeń
• Ziarnistość można określać w sposób ujmujący jej istotę, ale trudny do wyrażenia liczbowego, jako ilość obliczeń wykonywanych niezależnie przez procesory pomiędzy punktami synchronizacji lub wymiany komunikatów
• Z tej perspektywy obliczenia dzielimy na:
– drobnoziarniste (fine grain) – o częstych komunikatach
– gruboziarniste (coarse grain) – o rzadkich komunikatach
• W sposób liczbowy, choć tylko pośrednio ujmujący specyfikę ziarnistości, możemy ziarnistość wyrażać poprzez stosunek czasu komunikacji do czasu obliczeń (computation to communication ratio)
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
12
Ziarnistość obliczeń
➔
➔
➔
➔
Obliczenia drobnoziarniste mogą pozwalać na bardziej precyzyjne równoważenie obciążenia pomiędzy procesorami
Obliczenia gruboziarniste będą miały przewagę nad drobnoziarnistymi w przypadku połączeń międzyprocesorowych o dużej zwłoce (latency)
Zazwyczaj obliczenia o wysokim stosunku czasu obliczeń do czasu komunikacji są dobrze skalowalne, zwłaszcza jeśli stosunek ten rośnie wraz z liczbą procesorów
Przykładami obliczeń dobrze skalowalnych są np. te z symulacji technicznych, w których stosunek obliczeń do komunikacji ma charakter stosunku objętości do powierzchni (volume to surface ratio)
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
13