Zasady projektowania algorytmów równoległych Rafał Walkowiak jesień 2 /4/23 Zasady projektowania
Algorytm równoległy Algorytm sekwencyjny: sekwencja kroków rozwiązujących problem przy użyciu komputera sekwencyjnego. Algorytm równoległy: jak rozwiązać problem przy użyciu komputera równoległego? Specyfikacja kolejnych kroków i kroków, które mogą być realizowane współbieżnie. Zadania: określenie pracy nadającej się do współbieżnej realizacji przydział współbieżnych fragmentów pracy na procesory współbieżne dystrybucja danych wejściowych, wyjściowych i pośrednich zarządzanie dostępem do danych współdzielonych przez wiele procesorów synchronizacja procesorów na różnych etapach wykonania programu równoległego. Określenie algorytmu równoległego to zadanie dla programisty i projektanta algorytmów niewiele można zrobić automatycznie. /4/23 Zasady projektowania 2
Podział, zadania i graf zależności kolejnościowych Podział (ang. decomposition) obliczeń na zadania (ang. tasks). Współbieżna realizacja zadań podstawowym warunkiem efektywności przetwarzania równoległego. Zadania: dowolne rozmiary, niepodzielne, niezależne lub zależne: pewne zdania wykorzystują dane generowane przez inne zadania i oczekują na ich zakończenie: powiązania tego typu opisuje: graf zależności kolejnościowych graf acykliczny, węzły zadania, łuki -zależności między zadaniami: zadanie może być wykonane, gdy zakończyło się przetwarzanie wszystkich zadań połączonych z nim łukiem wejściowym, wagi w węzłach określają ilość pracy zadania. /4/23 Zasady projektowania 3
Przykład Podział - przykłady A * b = y - niezależne zadania różnej wielkości, graf zależności bez łuków Relacyjna baza danych samochodów: zapytanie dotyczące modelu, roku produkcji, koloru. Realizacja: generacja tablic zawierających informacje oddzielnie o modelu, roku i kolorze, następnie wyznaczenie przecięcia lub sumy tablic. corsa 2 srebrny biały corsa 2 srebrny biały corsa i 2 9 srebrny lub biały 6 Przykład2 srebrny lub biały corsa i 2 i (srebrny lub biały) 2 i (srebrny lub biały) 8 Grafy zależności kolejnościowych dla różnych sposobów przetwarzania zapytania. corsa i 2 i (srebrny lub biały) 7
Ziarnistość (ang. granularity) określona za pomocą liczby i rozmiaru zadań, obliczenia drobnoziarniste i gruboziarniste. Stopień współbieżności (ang. degree of concurrency) liczba zadań nadająca się do jednoczesnej realizacji, maksymalny, średni stopień współbieżności (dla zapytania o samochody z poprzedniej strony, 4;2.33, 4;,88) Ścieżka krytyczna w grafie zależności kolejnościowych najdłuższa ścieżka skierowana pomiędzy dowolną parą węzłów wejściowego (bez łuków wejściowych) i wyjściowego (bez łuków wyjściowych). Długość ścieżki krytycznej to suma etykiet węzłów na ścieżce krytycznej. Stosunek całej pracy do długości ścieżki krytycznej określa średni stopień współbieżności. Graf interakcji (między zadaniami) jest nadgrafem grafu zależności kolejnościowych i uwzględnia dodatkowo interakcje związane z koniecznością udostępnienia danych wejściowych, wyjściowych lub pośrednich przez zadania, które są właścicielami tych danych (w modelu p.r. z przesyłaniem komunikatów) przykład: mnożenie macierzy (przydział poszczególnych wierszy tablicy i wektora do procesorów udostępnianie elementów wektora). /4/23 Zasady projektowania 5
Procesy i przydział zadań Proces jednostka realizująca przetwarzanie, wykorzystuje ona kod i dane odpowiadające zadaniu i generuje dane wyjściowe w określonym czasie po aktywacji zadania przez program równoległy. Proces realizuje obliczenia, komunikuje się i synchronizuje z innymi procesami. Dla uzyskania przyspieszenia koniecznych jest wiele procesów aktywnych współbieżnie i pracujących nad różnymi zadaniami. Aby tego dokonać konieczny przydział zadań do procesów (ang. mapping). Przydział zadań Graf zależności kolejnościwych i graf interacji - baza wyjściowa maksymalizacja współbieżności przez przydział zadań niezależnych do różnych procesów, minimalizacja całkowitego czasu przetwarzania przez zapewnienie możliwości wykonania każdego zadania ze ścieżki krytycznej natychmiast jak tylko stanie się ono gotowe, minimalizacja interakcji przez przydział zadań o wysokim stopniu wzajemnych interakcji do jednego procesu, powyższe cele są często konfliktowe, przydział zadań określa w jaki sposób wykorzystana zostanie współbieżność zdefiniowana na etapie podziału, kluczowy dla efektywności przetwarzania. /4/23 Zasady projektowania 6
Przydział zadań do procesów cd przykład str 4 liczba interakcji Z4 Z3 Z2 Z Z4 Z3 Z2 Z P3 P2 P P Z6 Z5 P3 P2 P P Z5 Z7 P2 P P Efektywny przydział przypadku samochodowego na 4 procesory. Proces jednostka logiczna realizująca zadania Processor jednostka sprzętowa wykonująca przetwarzanie Rzutowanie jeden do jeden - proces procesor na danym etapie projektu algorytmu uwzględniającym jedną formę współbieżności. Zadania procesu przydzielonego do węzła wieloprocesorowego mogą się stać elementem dalszego podziału uwzględniającego architekturę sprzętu. /4/23 Zasady projektowania 7 Z7 Z6 P P P
Metody ogólnego przeznaczenia: - dekompozycja rekursywna, - dekompozycja danych. Techniki podziału Metody specjalnego przeznaczenia: - dekompozycja eksploracyjna, - dekompozycja spekulatywna. Dekompozycja rekursywna polega na podziale problemu na zbiór podobnych niezależnych podproblemów, które będą mogły być rozwiązane przez podobną dekompozycję rekursywnie. Strategia dziel i zwyciężaj. Przykłady: - sortowanie poprzez rekursywny podział zbioru względem elementu osiowego na dwa podzbiory - znajdowanie maksimum przez rekursywny podział na zbioru na równe podzbiory i znajdowanie w nich maksimum /4/23 Zasady projektowania 8
Dekompozycja rekursywna - przykłady 5 2 6 8 7 9 min(,2) 5 6 8 7 9 2 min(4,) min(9,2) 5 6 7 8 9 2 min(4,9) min(,6) min(9,) min(2,2) 5 6 7 8 2 2 Podział na 2 podzbiory o wartościach mniejszych i większych równych elementowi osiowemu; wynik w liściach. Rekurencyjny podział zbioru na podzbiory, a następnie propagacja wartości minimalnej z dwóch elementów. /4/23 Zasady projektowania 9
Dekompozycja danych () Dekompozycja danych wyjściowych określenie zadania jako pracy niezbędnej do wyznaczenia podzbioru danych wyjściowych Przykłady: mnożenia tablic jeden/kilka elementów (lub jego składowa) tablicy wyniku znajdowanie częstości występowania podzbiorów w bazie transakcji jeden/kilka wzorców dla różnych podzbiorów bazy /4/23 Zasady projektowania
Dekompozycja danych (2) Dekompozycja danych wejściowych określenie zadania jako pracy niezbędnej do przetworzenia podzbioru danych wejściowych, zazwyczaj konieczne dalsze zdania dla konsolidacji uzyskanych w ten sposób wyników pośrednich dla uzyskania wyników ostatecznych. Przykłady: znajdowanie częstości występowania podzbiorów w bazie transakcji krotności dla wszystkich wzorców w fragmencie bazy transakcji wyznaczanie sumy elementów zbioru /4/23 Zasady projektowania
Dekompozycja danych (3) Podział danych wejściowych i wyjściowych przykład następna strona Podział danych pośrednich zdefiniowanie zadań obliczających elementy danych pośrednich Reguła właściciel przetwarza bazuje na dekompozycji danych zadanie oblicza wszystko co może wyznaczyć bazując na partycji danych wejściowych lub oblicza wszystkie elementy przydzielonej mu partycji danych wyjściowych. /4/23 Zasady projektowania 2
Podział danych wejściowych i wyjściowych - przykład P A,B,C,E,G, H A,B,C,F,K,L D,E,F,K A,D,E,G,L A,B,C D,E C,E,G A,E 2 2 2 A,B,C,E,G, H A,B,C,F,K,L D,E,F,K A,D,E,G,L C,D F,G B,C,F C,D,L P3 F,G,H,I F,G,H,I P2 A,G,H,K,L B,C,G,K D,F,K,L F,G,H F,G,I,J A,B,C D,E C,E,G A,E A,G,H,K,L B,C,G,K D,F,K,L F,G,H F,G,I,J C,D F,G B,C,F C,D,L 2 Wzorce, zbiory danych, częstość występowania P4 /4/23 Zasady projektowania 3
Dekompozycja eksploracyjna Dotyczy przeszukiwania przestrzeni rozwiązań. Zadania określają jedno z rozwiązań na drodze do celu. Każde zadanie może mieć wielu następników Znalezienie poszukiwanego rozwiązania powoduje przerwanie realizacji pozostałych zadań. Sekwencyjna generacja zadań (rozwiązań) startowych dla przetwarzania równoległego. Przykłady: metody kombinatoryczne lokalnego przeszukiwania: tabu search, genetic algorithms itp. /4/23 Zasady projektowania 4
Dekompozycja eksploracyjna - przykład - 5-to elementowa układanka 2 3 4 5 6 8 9 7 3 4 5 2 2 3 4 5 6 7 8 9 3 4 5 2 2 3 4 5 6 7 8 9 3 4 5 2 2 3 4 5 6 7 8 9 2 3 4 5 rozwiązanie startowe rozwiązania pośrednie rozwiązanie końcowe Zadania polegają na wyznaczaniu możliwych następników aktualnego rozwiązania (zadania) i współbieżnej ich analizie. Rozwiązanie startowe ma 4 następników: 7 w górę, 8 w lewo, 6 w prawo, 3 w dół /4/23 Zasady projektowania 5
Dekompozycja spekulatywna Dotyczy realizacji zbioru możliwych zadań bez znanych wartości danych wejściowych. Zadania te są przetwarzane w możliwym stopniu, zazwyczaj tylko jedno z zadań będzie kontynuowane jako wynik uzyskania wartości danych wejściowych decydujących o ścieżce obliczeń. Przykład: - analiza rozgałęzień wyrażenia switch języka C - symulacja zdarzeń dyskretnych analiza zachowania podsystemu w wyniku pojawienia się możliwych danych wejściowych; w przypadku, gdy dane są znane wykorzystuje się właściwe wyniki bez konieczności dokonywania obliczeń od podstaw. /4/23 Zasady projektowania 6
Charakterystyka zadań Statyczne generowanie zadań zadania znane przed rozpoczęciem przetwarzania (dekompozycja danych), statyczny graf zależności danych (dekompozycja rekursywna) Dynamiczne generowanie zadań zadania tworzone na bieżąco w czasie przetwarzania (dekompozycja rekursywna) Rozmiary zadań jednakowe- zadania jednorodne, niejednakowe- zadania niejednorodne Znajomość rozmiarów zadań Wielkość danych związanych z zadaniem dane wejściowe, wyjściowe, pośrednie różny rozmiar /4/23 Zasady projektowania 7
Rodzaje interakcji zadań Interakcje wymiana danych, pracy, synchronizacja Interakcje statyczne określony moment i uczestnicy interakcji przed rozpoczęciem przetwarzania łatwe do implementacji w modelu z przekazywaniem komunikatów Interakcje dynamiczne brak określonych z góry momentu bądź uczestników interakcji implementacja w modelu z przekazywaniem komunikatów ze względu na konieczność uczestnictwa 2 stron wymaga wprowadzenia dodatkowych mechanizmów synchronizacji lub badania stanu. Interakcje regularne i nieregularne Interakcje: tylko-odczyt, odczyt-zapis Interakcje jedno-, dwu- stronne jednostronne możliwe w modelu współdzielonej pamięci, interakcje dwustronne wymagają zaangażowania 2 zadań, w modelu z przekazywaniem komunikatów interakcje dwustronne. /4/23 Zasady projektowania 8
Przydział zdań do procesorów Cel: minimalizacja czasu, w którym wszystkie zadania zostaną wykonane. Praktycznie minimalizacja czasu niezbędnego na interakcję między procesami, minimalizacja czasu bezczynności procesorów (ograniczenia kolejnościowe zadań) Dobry przydział zapewnia zrównoważenie przetwarzania i interakcji między procesami na każdym etapie realizacji algorytmu równoległego. Przydział statyczny gdy zadania generowane statycznie o znanym koszcie łatwiejsze programowanie. Przydział dynamiczny gdy zadania generowane dynamicznie, uwzględnienie lokalizacji i wielkości danych oraz modelu programowania trudniejsze programowanie, potencjalnie bardziej efektywne przetwarzanie. /4/23 Zasady projektowania 9
Przydział statyczny Przydział bazujący na podziale danych lub statycznym grafie zależności między zadaniami. Schematy przydziału bazujące na podziale danych, podziale zadań i hierarchiczne schematy przydziału. W podziale danych zadania definiowane są przez określenie danych. Przydział zadań do procesorów polega w tym przypadku na przydziale (dystrybucji) danych do procesorów. Schematy dystrybucji danych dzielą się w zależności od struktury danych: dystrybucje tablicowe: blokowe, gdy jednakowa ilość pracy związana z generowanym elementem cykliczne, gdy ilość pracy różna dla różnych elementów (znany trend): brak lokalności danych, wiele różnorodnych zadań większe prawdopodobieństwo, że któreś z nich gotowe, przykład - LU faktoryzacja. blokowo-cykliczne, analogiczne zyski do cyklicznej dystrybucji, większa lokalność danych. losowe dystrybucje blokowe w przypadkach gdy struktura przetwarzania nieregularna (tablice rzadkie) i możliwe nierównomierne przydziały pracy w dystrybucji cyklicznej podział grafu nieregularne struktury danych, graf określający sąsiedztwo elementów struktury danych powinien być podzielony na podgrafy (zdania procesorów) w sposób minimalizujący liczbę krawędzi z wierzchołkami przynależnymi do różnych podgrafów, przykład: symulacja rozprzestrzeniania się zanieczyszczeń w akwenach wodnych o nieregularnych kształtach. Zasady projektowania 2
Blokowy przydział statyczny - przykład A x B = C P. P6. P5 P P P2 P3 P4 P5 P6 P7 P8 P9 PP P2P3P4P5 A x B = C Przydział statyczny bazujący na podziale danych wyjściowych. Dane wejściowe niezbędne dla mnożenia tablicy podział wymiariowy n 2 +n 2 /6 O(n 2 ) podział 2 wymiarowy n 2 /2 O(n 2 / p)
Przydział statyczny (2) Statyczny regularny graf interakcji między zadaniami 4 2 4 2 3 4 5 6 7 Przydział zadań opisanych binarnym drzewem zależności do hiperkostki procesów. Minimalizacja kosztów komunikacji: wiele zależnych od siebie zadań przydzielonych do tego samego procesora, pozostałe zadania komunikujące się przydzielone do procesorów bezpośrednio ze sobą połączonych. Zapewnienie maksymalnej równoległości: wszystkie zadania nadające się do współbieżnej realizacji przydzielone do różnych procesorów. Minimalizacja czasu jałowego: oczekiwanie procesorów na realizację przetwarzania wynika z zależności kolejnościowych opisanych w grafie interakcji a nie z liczby zadań. 6
Przydział zadań do procesorów - odwzorowanie (zagnieżdżenie) grafów Graf aplikacji - graf wyjściowy - graf zadań ze strukturą komunikacji (połączeń między zadaniami). Graf systemu obliczeniowego - graf docelowy - struktura systemu wielokomputerowego, w którym przetwarzanie ma być realizowane. Przeciążenie (ang. congestion) liczba ścieżek komunikacyjnych przypadająca na jedno łącze. Odstęp (ang.dilation) - liczba łącz wykorzystywanych do realizacji pojedynczej ścieżki komunikacyjnej. Powiększenie (ang. expansion) - określa ile zadań zostało przydzielonych do procesora 23
Odwzorowanie grafów Zagnieżdżenie łańcucha w hiperkostce. Kolejne 2 d elementów (oznaczonych od do 2 d -) odwzorowanych na d wymiarową hiperkostkę. Etykiety kolejnych (wg lańcucha) węzłów w hyperkostce określa się za pomocą funkcji kodu Graya. Wartości odpowiadające kolejnej pozycji liczby binarnej powstają w wyniku umieszczenia na tej pozycji i odbiciu lustrzanym wartości wcześniejszych. Brak przeciążenia i odstęp=, gdyż węzły których etykiety różnią się na jednej pozycji mają bezpośrednie łącze. łańcuch hyperkostka 2 3 4 3 2 6 5 6 7 5 7 4 24
Odwzorowanie grafów Krata zamknięta o 2 r * 2 s węzłach odwzorowana w hiperkostkę 2 r+s węzłową : wezłowi i,j odpowiada węzeł o etykiecie będącej złożeniem kodu i-tego elementu r pozycyjnego kodu Graya i kodu j-tego elementu s pozycyjnego kodu Graya czyli każdy wiersz i każda kolumna są odwzorowane w podkostkę o odpowiedniej liczbie węzłów 2,4,8,6... procesory, do których przydzielone są zadania z jednej kolumny mają jednakowe mniej znaczące bity, procesory w wierszu mają jednakowe bardziej znaczące bity etykiet, sąsiednie zadania przydzielone do sąsiednich procesorów (o etykietach różniących się na jednym bicie) brak przeciążenia i odstęp=, gdyż węzły komunikujące się - których etykiety różnią się na jednej pozycji - mają bezpośrednie łącze. Jaka będzie jakość zagnieżdzenia kraty 8-2 na hiperkostkę 2 6 lub na h 2 4? (,) (,) (,2) (,3),3,2 2,3 2,2 (,) (,) (,2) (,3),, 2, 2, (2,) (2,) (2,2) (2,3),3,2 3,3 3,2 (3,) (3,) (3,2) (3,3),, 3, 3, 25
Odwzorowanie kraty w łańcuch,,2,3,4 2,4 2,3 2,2 2, 3, 3,2 3,3 3,4 4,4 4,3 4,2 4, Krata otwarta 4X4 odwzorowana w łańcuch 6 elementowy Przeciążenie wynosi 5 (linia przerywana) w ogólności pierwiastek(p) +. Dolne ograniczenie przeciążenia: Iloraz szerokości połowienia odwzorowywanych sieci np. szerokość połowienia: krata 4, łańcuch więc iloraz = 4 Ile wynosi maksymalny odstęp? 7 Jak odwzorować łańcuch w kratę? Szerokość połowienia to minimalna liczba łączy, jakie należy usunąć z sieci aby ją podzielić na dwie podsieci o jednakowej liczbie węzłów. 26
Odwzorowanie hiperkostki w kratę 2 wymiarową Założenie: liczba procesorów jest równa 2 d gdzie d jest parzystą potęgą dwójki. Docelowa krata jest wymiaru 2 d/2 x 2 d/2. Kostka p węzłowa widziana jako p kostek p węzłowych (por. rysunek). Ustalając d/2 starszych bitów etykiety i biorąc pod uwagę możliwe kombinacje d/2 młodszych bitów definiujemy 2 d/2 elementowe hiperkostki. Każda taka hiperkostka (kolejno dla starszych bitów będących kolejnymi wartościami kodu Graya) jest odwzorowywana na kolejny wiersz kraty. Jest to odwzorowanie realizowane odwrotne do odwzorowania łańcuch-hiperkostka. Dolne ograniczenie przeciążenia wynika z ilorazów szerokości podziału hiperkostki (2 d- ) oraz kraty 2 d/2 i wynosi 2 d/2-. Dla p = 2 d procesorów ½ p.6 procesorów hiperkostka 4 wymiarowa 2.podział na 4 hiperkostki 2 wymiarowe 3.odwzorowanie hkostek krat na łańcuchy 4.przeciążenie wynosi 2 27
Przydział statyczny (3) Statyczny nieregularny graf interakcji między zadaniami P P P2 P 3 6 P 7 8 A 4 5 2 b P2 Przydział zgodnie z regułą właściciel przetwarza wynikający z podziału tablicy b na jednakowe ciągłe bloki powoduje w celu realizacji przetwarzania mnożenia macierzy konieczność dostępu do obcych danych - elementów tablicy b: Proces pobiera elementy 3,4,5,6,7,8 Proces pobiera elementy,,2,6,7 Proces2 pobiera elementy,,2,3,5 Zaproponowany podział grafu interakcji zrealizowany w sposób minimalizujący liczbę krawędzi z węzłami w różnych partycjach grafu pozwala na zmniejszenie liczby zewnętrznych dostępów: Proces pobiera elementy,7 Proces pobiera elementy,2,5,6,7 Proces2 pobiera elementy,4,8 28
Przydział dynamiczny Stosowany gdy: statyczny przydział dostarcza niezrównoważonego obciążenia pracą graf zależności między zadaniami jest dynamiczny Przydział dynamiczny = równoważenie obciążeń scentralizowane jedna struktura lub proces posiadające informacje o pracy do wykonania ograniczona skalowalność ze względu na dostęp do scentralizowanej struktury/procesu stanowi wąskie gardło self scheduling szeregowanie niezależnych pojedynczych iteracji pętli pobieranych na bieżąco do realizacji po zakończeniu poprzedniej odporne na różne koszty zadań chunk scheduling zapobieganie ograniczeniu powodowanemu przez wiele procesów realizujących dostęp do jednej struktury - przydział wielu iteracji zamiast jednej; liczba iteracji właściwa dla ilości pracy, liczby procesorów, może maleć ze spadkiem ilości pracy pozostałej do wykonania. rozproszone - wymiana zadań między procesami w trakcie pracy odzwierciedlająca obciążenie pracą, konieczne do określenia: które procesy mają się komunikować? kto i kiedy inicjuje przesłanie pracy? ile pracy jest przesyłanej? W większym stopniu nadają się do systemów z pamięcią współdzielona niż systemów bazujących na przesyłaniu komunikatów. 29
Minimalizacja kosztów interakcji Maksymalizacja dostępu lokalnego do danych wykorzystanie danych lokalnych lub ostatnio pobranych zapobiega pobieraniu danych do kontynuacji pracy minimalizacja wielkości danych współdzielonych przez właściwy przydział np. wielowymiarowy wykorzystywanie danych lokalnych do przechowywania wyników pośrednich minimalizacja częstości dostępu pobieranie większych porcji niezbędnych danych awansem, analiza w kodzie wartości, które będą musiały być pobrane i pobieranie ich wszystkich w jednym kroku. Minimalizacja współubiegania się o zasoby zapobieganie równoczesnym komunikacjom przez to samo łącze, dostępu do tego samego bloku pamięci, wysyłaniu komunikatu do tego samego procesu. Przykład: C i,j = Σ p- k= A i,k *B k,j realizowane współbieżnie dla różnych wartości j i jednakowej wartości i powoduje próbę jednoczesnych (kolejkowanych) dostępów do tych samych elementów tablicy A C i,j = Σ p- k= A i,(i+j+k)% p *B (i+j+k)% p,j powoduje, że różna jest kolejność odwoływania się do elementów tablicy A /4/23 Zasady projektowania 3
Nakładanie się obliczeń i interakcji Minimalizacja kosztów interakcji Przydział wielu zadań do procesora pozwala na realizację jednego w oczekiwaniu na zakończenie interakcji innych niebezpieczeństwo wzrostu narzutów wynikających ze zmniejszenia ziarna przetwarzania. Przewidywanie zakończenia przydzielonej aktualnie pracy może pozwolić na wysłanie żądania o nowe zadanie i równoczesną z kończącym się przetwarzaniem obsługę tego żądania. Wykorzystywanie przesłań nieblokujących w architekturach z przesyłaniem komunikatów. Wykorzystywanie mechanizmu wstępnego pobrania danych (sprzęt lub kompilator - wprowadzanie awansem dodatkowych instrukcji pobrania) w architekturach z pamięcią współdzieloną. /4/23 Zasady projektowania 3
Minimalizacja kosztów interakcji Replikacja danych / obliczeń Zbiorowe operacje interakcji zastosowanie dostarczonych w postaci operacji bibliotecznych zoptymalizowane sprzętowo i algorytmicznie operacji: dostęp do danych: pobieranie dane rozproszonych, rozsyłanie danych (niekoniecznie optymalne dla serii przesłań np. rozgłaszanie serii 4 komunikatów) obliczenia bazujące na intensywnej wymianie danych, synchronizacji Nakładanie wielu interakcji w czasie P>P2 P>P P2>P3 P>P P>P2 P2>P3 P>P P>P P>P P>P P>P2 P>P2 P>P2 P>P2 P2>P3 P2>P3 P2>P3 P2>P3 Rozgłaszanie w systemie 4 procesorowym - komunikat (dwie realizacje) i 4 komunikaty /4/23 Zasady projektowania 32
Modele algorytmów równoległych Struktura algorytmu równoległego: równoległość danych przydział statyczny bazujący na podziale danych jednakowe operacje na różnych elementach ważne zapewnienie lokalności danych, możliwość stosowania zbiorowych funkcji operacji interakcji przykład: mnożenie macierzy model grafu zadań (równoległość zadań) wykorzystanie w przydziale grafu zależności zadań asynchroniczne metody interakcji przykład: równoległe sortowanie, faktoryzacja macierzy rzadkiej, wynik dekompozycji dziel i zwyciężaj model puli zadań każde zadanie wykonywalne przez dowolny proces dynamiczny przydział zadań do procesorów praca generowana statycznie lub dynamicznie zadania dostępne na liście/listach mały wolumen danych w stosunku do wielkości obliczeń (dostosowane: niezrównoważenie obciążenia koszt dostępu do puli zadań) przykład: efekt zrównoleglenia pętli /4/23 Zasady projektowania 33
Modele algorytmów równoległych model master-slave jeden lub wielu procesów zarządcy generuje i przydziela zadania do podległych procesów wykonawców generacja zadań i obliczenia mogą być realizowane w nie nakładających się fazach (synchronizacja) dostosowanie granulacji (master wąskie gardło) potok przetwarzania/ producent-konsument strumień danych przechodzi przez następujące po sobie procesy realizujące na nim przetwarzanie przybycie nowych danych wyzwala przetwarzanie potok przetwarzania może mieć formę grafu spójnego skierowanego z łukami łączącymi producentów i konsumentów, dostosowanie granulacji zadań umożliwia wyważyć pomiędzy czasem oczekiwania na rozpoczęcie przetwarzania kolejnych procesów i narzutem wynikającym z częstych interakcji równoległość strumieniowa - równoczesne wykonywania wielu programów na strumieniu danych modele mieszane połączenie modeli hierarchiczne lub czasowe /4/23 Zasady projektowania 34