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 T i = T i obl + T i kom + T i jałowy Całkowity czas wykonania równoległego T = max i (T i ) T = i T i /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: T i obl 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 T i obl = T sekw + T plus W teorii (np. do analiz wydajności) często zakłada się idealny rozkład operacji pomiędzy procesory T i obl = (T sekw + T plus )/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: T i kom czas komunikacji przypadający na pojedynczy procesor Czas przesłania pojedynczego komunikatu o rozmiarze m bajtów t s +l*(m*t w +t h ) routing SF t s +m*t w +l*t h routing CT t s +m*t w 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, t w rzędu 8ns (0.125GB/s) 10Gb ts rzędu 1000ns, t w rzędu 0.8ns (1.25 GB/s) Infiniband DDR, 4X ts rzędu 1000 ns, t w rzę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: T i jał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): max i (T i obl + T i kom ) / ( i (T i obl + T i kom ) / 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: T i narz = T i T sekw /p (inaczej: T i narz (p) = T i (p) T (1)/p ) jako sumaryczny dla wszystkich procesorów: T narz_total = p*t narz (= p*t T sekw = i T i T sekw, analogicznie dla T (1)) wreszcie jako średni przypadający na 1 procesor: T narz = T narz_total /p = T T sekw /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 T i = 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