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 itym 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 mbajtó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