Analityczne modelowanie systemów równoległych



Podobne dokumenty
Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

Analiza efektywności przetwarzania współbieżnego

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Analiza ilościowa w przetwarzaniu równoległym

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Złożoność obliczeniowa zadania, zestaw 2

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Wydajność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Programowanie współbieżne Wykład 2. Iwona Kochańska

TEORETYCZNE PODSTAWY INFORMATYKI

Podstawy Informatyki. Sprawność algorytmów

Algorytmy sortujące 1

Równoległość i współbieżność

Równoległość i współbieżność

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Zaawansowane algorytmy i struktury danych

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

Wprowadzenie do złożoności obliczeniowej

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Programowanie równoległe

Zasady analizy algorytmów

Złożoność algorytmów. Wstęp do Informatyki

Matematyczne Podstawy Informatyki

Metoda Karnaugh. B A BC A

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp

Programowanie Współbieżne. Algorytmy

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Wstęp do programowania

Przykładowe sprawozdanie. Jan Pustelnik

Wstęp do metod numerycznych 9. Minimalizacja: funkcje jednej zmiennej. P. F. Góra

Temat: Algorytmy zachłanne

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH

Część I. Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania. Zadanie 1.1. (0 3)

Programowanie współbieżne Wstęp do obliczeń równoległych. Rafał Skinderowicz

Teoretyczne podstawy informatyki

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

INFORMATYKA SORTOWANIE DANYCH.

Podstawy OpenCL część 2

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Metody numeryczne. materiały do wykładu dla studentów. 1. Teoria błędów, notacja O

Sortowanie - wybrane algorytmy

Badania Operacyjne Ćwiczenia nr 5 (Materiały)

Adam Korzeniewski - p. 732 dr inż. Grzegorz Szwoch - p. 732 dr inż.

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

PROBLEMY NIEROZSTRZYGALNE

Metody numeryczne I Równania nieliniowe

Macierze. Rozdział Działania na macierzach

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

Matematyka dyskretna dla informatyków

Otrzymaliśmy w ten sposób ograniczenie na wartości parametru m.

EGZAMIN MATURALNY Z INFORMATYKI

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Teoretyczne podstawy informatyki

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Numeryczna algebra liniowa

Strategia "dziel i zwyciężaj"

Zadania jednorodne 5.A.Modele przetwarzania równoległego. Rafał Walkowiak Przetwarzanie równoległe Politechnika Poznańska 2010/2011

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Zakładamy, że są niezależnymi zmiennymi podlegającymi (dowolnemu) rozkładowi o skończonej wartości oczekiwanej i wariancji.

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Iteracyjne rozwiązywanie równań

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Rozdział 1 PROGRAMOWANIE LINIOWE

Macierze - obliczanie wyznacznika macierzy z użyciem permutacji

Algorytm i złożoność obliczeniowa algorytmu

Dlaczego nie wystarczają liczby wymierne

Maciej Piotr Jankowski

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Segmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp. autor: Łukasz Chlebda

1 Równania nieliniowe

Spis treści. Koszalin 2006 [BADANIA OPERACYJNE PROGRAMOWANIE LINIOWE]

2. LICZBY RZECZYWISTE Własności liczb całkowitych Liczby rzeczywiste Procenty... 24

Lista 0. Kamil Matuszewski 1 marca 2016

WYKŁAD 9 METODY ZMIENNEJ METRYKI

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Jeszcze o algorytmach

Przetwarzanie równoległe

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

BŁĘDY OBLICZEŃ NUMERYCZNYCH

W. Guzicki Próbna matura, grudzień 2014 r. poziom rozszerzony 1

Funkcje wymierne. Funkcja homograficzna. Równania i nierówności wymierne.

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

Podstawy Informatyki. Metody dostępu do danych

Programowanie celowe #1

ALGORYTMY I STRUKTURY DANYCH

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Transkrypt:

Analityczne modelowanie systemów równoległych 1

Modelowanie wydajności Program szeregowy jest modelowany przez czas wykonania. Na ogół jest to czas asymptotyczny w notacji O. Czas wykonania programu szeregowego zależy od jego rozmiaru danych wejściowych. Algorytm mergesort użyty dla tablicy o rozmiarze n ma złożoność obliczeniową O(nlog(n)). Algorytm szeregowy ma tę samą złożoność obliczeniową na każdej maszynie szeregowej. W przypadku programów równoległych sytuacja się komplikuje. Czas pracy jest funkcją: rozmiaru danych, liczby procesorów i architektury maszyny równoległej (np prędkości wymiany danych pomiędzy procesami). Trudno jest analizować algorytm w oderwaniu od maszyny bez pewnej utraty dokładności analizy. Aczkolwiek stworzone pewne wyidealizowane modele maszyny takie jak model logp czy maszyna PRAM. Zaproponowano (A. Grama i wsp.) aby kombinację algorytmu równoległego i maszyny równoległej nazywać systemem równoległym i analizować razem. 2

Przypomnienie: Notacje O, Θ, Ω Funkcja f(x) =O(g(x)) (czytamy f jest rzędu co najwyżej g), jeżeli istnieje stała c, taka że f(x) cg(x) dla x>x 0. Funkcja f(x) =Θ(g(x)) (czytamy f jest rzędu dokładnie g), jeżeli istnieją stałe c 1 oraz c 2, takie że, c 1 g(x) f(x) c 2 g(x) dla x>x 0 Funkcja f(x) =Ω(g(x)) (czytamy f jest rzędu co najmniej g), jeżeli istnieje stała c, taka że cg(x) f(x) dla x>x 0. Przykład: 100n 2 +0.5*n 3 +10n+1=O(n 3 ). 3

Użyteczność notacji O, Θ, Ω w obliczeniach równoległych Notacje O, Θ, Ω są powszechnie stosowane w modelowaniu czasu obliczeń sekwencyjnych (patrz przedmiot algorytmy i struktury danych). Ich użyteczność (i w ogóle użyteczność analizy asymptotycznej) w modelowaniu czasy pracy programów równoległych jest o wiele mniejsza. Prawie zawsze czas pracy programu zależy od dwóch zmiennych liczby procesorów p i rozmiaru danych n. Nie możemy przyjąć, że obie dążą do nieskończoności. Analiza asymptotyczna ignoruje czynniki niższych rzędów, które w praktyce mogą być bardzo istotne. Np. wzór na czas transmisji komunikatu o długości n słów ma postać: t C =t S +n*t W Analiza asymptotyczna powie nam że ten czas jest Θ(n). Jednak to wyrażenie ignoruje zupełnie t S, który dla praktycznych zastosowań może zdominować czas transmisji komunikatu. Ponadto analiza asymptotyczna ignoruje inne czynniki, pojawiające się w rzeczywistych systemach jak np. obciążenie sieci połączeń. 4

Miary wydajności dla programu równoległego Czas pracy (ang. wall clock time). Czas mierzony od momentu startu pierwszego procesora do momentu gdy ostatni procesor w grupie rozwiązującej problem zakończy pracę. Oznaczamy jako T p i jest on funkcją liczby procesorów p. Czas pracy wersji szeregowej oznaczamy jako T S. Przyspieszenie (ang. speedup): ile razy wersja równoległa jest szybsza. Natychmiast pojawia się pytanie: szybsza od czego? Nasz algorytm równoległy uproszczony dla jednego procesora nie musi wcale być algorytmem optymalnym, bo np. najlepszy algorytm szeregowy jest trudny do zrównoleglenia i zrównolegliliśmy algorytm gorszy Aby porównanie było uczciwe należy porównywać się z najlepszym algorytmem szeregowym. Przykład załóżmy że sortowanie bąbelkowe zajmuje 40s. Zrównoleglone na czterech procesorach trwa 10s. Przyspieszenie dla czterech procesorów jest równe 4. Ale czy to jest rzetelna ocena zrównoleglenia, jeżeli algorytm quicksort w wersji szeregowej zajmuje 3s. Rzeczywiste przyspieszenie wynosi więc 0.3 Przyspieszenie definiujemy jako S(p)=T S /T p (p). 5

Źródła narzutów (ang. overhead) w obliczeniach równoległych. Czy jeżeli użyję dwóch procesorów to mój program wykona się dwa razy szybciej? Z reguły nie. Program równoległy zawiera wiele dodatkowych narzutów w porównaniu z programem szeregowym. Są to: Komunikacja pomiędzy procesorami. Procesory rozwiązujące nietrywialny problem muszą się komunikować ze sobą, co zabiera czas. Koszt ten nie jest ponoszony w wersji szeregowej. Uwaga: koszty komunikacji w modelu ze wspólną pamięcią są ukryte (ale również ponoszone), dlatego tak popularny stał się model programowania z przesyłaniem komunikatów, w którym koszty te są jawne. Bezczynność (ang. idling). Procesor może być bezczynny z kilku powodów, np: nierównomiernego podziału pracy pomiędzy procesorami (niezrównoważenie obciążenia - ang. load imbalance), braku zrównoleglenia części algorytmu. Nadmiarowe obliczenia. Obliczenia wykonywane przez wersję równoległą, a nie wykonywane przez wersję szeregową. Ich występowanie może być spowodowane trudnościami w zrównolegleniu lub potrzebą minimalizacji komunikacji. 6

Diagram przestrzenno - czasowy obliczeń dla 8 procesorów Istnieją programy (np jumpshot dostarczany z MPICH) do tworzenia takiego diagramu. Jest to dobre narzędzie do diagnozowania i analizy programów równoległych 7

Ograniczenia przyspieszenia Minimalne przyspieszenie jest równe 0, w sytuacji w której program równoległy nigdy się nie kończy. Teoretycznie przyspieszenie jest ograniczone z góry przez liczbę procesorów p. (p krotny wzrost zasobów prowadzi do p-krotnego przyspieszenia). Przyspieszenia większe od p nazywane jest przyspieszeniem superliniowym. Ma ono miejsce w tedy, gdy każdy procesor spędza mniej niż T s /p czasu nad rozwiązywaniem problemu. W takiej sytuacji możnaby zasymulować p procesorów przy pomocy jednego procesora i podziału czasu, co dałoby algorytm szeregowy o krótszym czasie wykonania niż T s. Powyższe przeczy założeniu, że porównujemy się z najszybszym algorytmem szeregowym. 8

Przyczyna przyspieszenia superliniowego - lepsze wykorzystanie pamięci cache Większa łączna pojemność pamięci cache procesorów w systemie wieloprocesorowym prowadzi to większego współczynnika trafień i w konsekwencji co superliniowego przyspieszenia. Przykład: procesor z 64KB pamięci cache ma współczynnik trafień 80% (dla danego algorytmu i rozmiaru danych). W systemie dwuprocesorowym łączna pojemność pamięci cache dwóch procesorów wynosi 128KB. Ponieważ rozmiar danych pozostaje taki sam współczynnik trafień może wzrosnąć. Przyjmijmy że wzrośnie do 90%. Z pozostałych 10%, 8% to dostępy do pamięci lokalnej DRAM 2% do pamięci zdalnej (zakładamy architekturę NUMA). Przyjmując czas dostępu do pamięci cache 2ns, lokalnej 100ns, zdalnej 400 ns dostajemy (obliczenia - A. Grama) przyspieszenie 2.43 dla dwóch procesorów. Powyższa analiza zakłada brak jakichkolwiek narzutów, co nie zdarza się w praktyce. W rezultacie przyspieszenie superliniowe, z powodu lepszego wykorzystania pamięci cache zdarza się bardzo rzadko (ale czasami ma miejsce). 9

Przyczyna przyspieszenia superliniowego - program szeregowy wykonuje więcej pracy 2 1 9 3 6 x 10 4 5 7 8 Przeszukiwanie wgłąb drzewa od korzenia, w poszukiwaniu wierzchołka ze znakiem x. Wierzchołki odwiedzane są zaznaczone na niebiesko, liczby pokazują kolejność odwiedzania Razem 10 odwiedzanych wierzchołków. 10

Przeszukiwanie wgłąb - wersja równoległa Wersja dla dwóch procesorów. Obydwa zaczynają od korzenia. Procesor pierwszy otrzymuje lewe poddrzewo a procesor drugi prawe. Obydwa poddrzewa przeszukiwane są równolegle Zakładamy, że pierwszy procesor, który znajdzie wierzchołek kończy pracę całego programu. W trzecim kroku procesor drugi znajduje x, przyspieszenie 10/3=3.33! 2 1 1 2 3 x 3 11

Przyspieszenie superliniowe - przyczyna wersja równoległa wersja szeregowa 2 1 1 2 2 1 9 3 x 3 3 6 x 10 4 5 7 8 Wyraźnie widać, że program równoległy wykonuje mniej pracy. Dzięki "lepszemu" punktu startowemu jednego z procesorów natrafiamy szybciej na rozwiązanie i nie ma potrzeby odwiedzania wierzchołków drzewa zaznaczonych na zielono. W tej sytuacji algorytm składający się z dwóch procesów na jednym procesorze również szybciej odnalazłby rozwiązanie od algorytmu szeregowego. Kłóci się to z założeniem porównywania z najlepszym algorytmem szeregowym, ale dla tego problemów trudno sformułować algorytm "najlepszy" 12

Wydajność (ang. Efficiency) Wydajność jest miarą użytecznego wykorzystania procesora. Definiuje się ją jako stosunek przyspieszenia do idealnego przyspieszenia liniowego równego p: E p = S p p = T s p T p p Wydajność w praktyce zawiera się w przedziale (0,1). Wydajność równa 1 oznacza przyspieszenie liniowe. W przypadku przyspieszenia superliniowego wydajność jest większa niż 1. 13

Koszt Koszt jest iloczynem czasu pracy i liczby procesor C p = p T p p Koszt odzwierciedla sumę czasu spędzonego przez wszystkie procesory pracujące nad rozwiązaniem problemu. System równoległy jest optymalny ze względu na koszt, jeżeli jego koszt jest tego samego rzędu (jako funkcja rozmiaru danych), co czas pracy najlepszego algorytmu szeregowego. Znaczenie praktyczne tego pojęcia: Można wykazać że algorytm optymalny ze względu na koszt ma stałą wydajność. Jeżeli nie jest optymalny ze względu na koszt, wydajność spada przy liczbie procesorów dążącej do nieskończoności. 14

Całkowity narzut równoległy (ang. total parallel overhead) T p - czas wersji równoległej, T s - czas wersji szeregowej, p liczba procesorów. Całkowity czas spędzony przez wszystkie procesory pracujące nad rozwiązaniem problemu jest równy pt p. T s jednostek tego czasu jest spędzona na użytecznej pracy pozostałość jest całkowitym narzutem równoległym (T o ). T o p = p T p p T s 15

Przykład (A. Grama i wsp.): dodawanie liczb 16 procesorów, każdy przechowuje jedną z liczb. Krok 1. (Strzałka oznacza wysłanie liczby a jej odbiorca wykonuje sumowanie swojej liczby z nadesłaną) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Krok 2. Sumowanie ośmiu sum cząstkowych, otrzymujemy cztery sumy cząstkowe 0 1 2 3 4 5 6 7 8 9 11 10 13 12 15 14 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Krok 3. Sumowanie czterech sum cząstkowych, otrzymujemy dwie sumy cząstkowe 0 3 4 7 8 11 15 12 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Dodawanie liczb - c.d. Krok 4. Sumowanie dwóch sum cząstkowych otrzymujemy wynik w procesorze 0 0 7 8 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Po zakończeniu algorytmu procesor 0 zawiera sumę liczb. 0 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Algorytm zakończyliśmy po czterech krokach. Nietrudno zauważyć że w każdym kroku zakres sum cząstkowych podwaja się. Stąd liczba kroków algorytmu sumowania p liczb na p procesorach wynosi Θ(log(p)). Czas jednego kroku t obejmuje wysłanie jednej liczby (t S +1*t W ) + wykonanie dodawania (t D ). Zatem t=t S +t W +t D. Czas ten jest więc stały nie zależy od liczby procesorów (i liczb ) p. Z powyższych dwóch wniosków wynika czas pracy algorytmu szeregowego Θ(log(p)). 17

Dodawanie liczb - skalowalność Czas algorytmu szeregowego sumowania p liczb: Θ(p). Stąd otrzymujemy przyspieszenie: S p = p log p Oraz wydajność: E p = p log p p = 1 log p Analiza jest asymptotyczna: pomijamy wpływ stałych t S t W oraz t D. Ponadto w praktycznych zastosowaniach nie ma dowolnej liczby procesorów (O tym za chwilę). 18

Miary skalowalności - wykresy 100 Przyspieszenie 1.2 Wydajność 90 1.1 80 1 70 0.9 60 50 40 30 20 10 Przyspieszenie Przyspieszenie idealne 0.8 0.7 0.6 0.5 0.4 0.3 0.2 Wydajność Wydajność idealna 0 0 25 50 75 100 0.1 0 25 50 75 100 Przyspieszenie rośnie w nieskończoność, Wydajność spada. Ale ważna uwaga: wraz ze wzrostem liczby procesorów wzrasta rozmiar danych, co wynika ze specyfiki algorytmu. 19

Dodawanie liczb - koszt C p = p T p = p log p = p log p Ponieważ czas pracy wersji szeregowej jest Θ(p), algorytm nie jest optymalny ze względu na koszt. 20

Dodawanie n liczb na p procesorach Przykład dla p=4 procesorów i n=16 liczb. Każdy procesor otrzymuje 16/4=4 liczby. Najpierw każdy procesor oblicza lokalną sumę n/p liczb. Czas Θ(n/p) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 Potem postępujemy tak jak w poprzednim algorytmie wykonując dwa (ogólnie log(p)) kroki. 0 3 4 7 8 11 15 12 0 7 8 15 0 15 0 1 2 3 0 1 2 3 0 1 2 3 Czas pracy tego algorytmu: Θ(n/p)+Θ(log(p))-Θ(n/p+log(p)). Koszt tego algorytmu Θ(n+plog(p)) i w przypadku gdy n=ω(plog(p)) (czyli mamy dostatecznie dużo liczb do dodania algorytm jest optymalny ze względu na koszt). 21

Dodawanie n liczb na p - procesorach - skalowalność Tym razem przyspieszenie i wydajność są funkcjami dwóch wielkości: rozmiaru danych n i liczby procesorów p. Tym razem przeprowadzimy analizę ze stałymi, a nie asymptotyczną. Załóżmy, żę czas przesłania jednej liczby i czas dodawania są sobie równe i wynoszą jedną jednostkę. Zatem każdy krok po zsumowaniu lokalnych liczb zajmuje dwie jednostki. Zatem Tp(n,p)=n/p+2log(p). Przyspieszenie i wydajność wyrażają się jako: S n, p = n n/ p 2log p E n, p = 1 1 2plog p n Widać, że przy wzroście liczby procesorów p i stałym rozmiarze danych n wydajność spada. Z drugiej strony przy wzroście n i stałym p wydajność rośnie. Jeżeli 2plog(p)=n to wydajność jest stała. Jeżeli system (algorytm+maszyna) ma taką własność, że równocześnie zwiększając liczbę procesorów oraz rozmiar danych możemy utrzymać stałą wydajność, to nazywamy go systemem skalowalnym. 22

Przyspieszenie przy stałym rozmiarze danych Przyspieszenie 40 35 30 Przyspieszenie zbiega do pewnej granicy - tym szybciej im mniejszy rozmiar danych. 25 20 15 liniowe n=64 n=128 n=256 n=512 10 5 0 0 5 10 15 20 25 30 35 40 23

Przykład 2 (A. Grama i wsp.) : detekcja krawędzi w obrazach Obraz jest dwu wymiarową (nxn) kwadratową macierzą pikseli (a). Detekcja krawędzi polega na przemnożeniu każdego piksela przez maskę. (b) Dwie przykładowe maski o rozmiarach 3x3 24

Detekcja krawędzi - zrównoleglenie Zrównoleglenie oparte na podziale danych. Każdy z procesorów otrzymuje n/p kolumn macierzy. Każdy procesor odpowiada za swoje piksele. Aby obliczyć wartość pikseli w dwóch swoich skrajnych kolumnach procesor 1 potrzebuje dwóch kolumn: skrajnie lewej z jednego sąsiada i skrajnie prawej z lewego sąsiada. Trzeba mu przesłać dwa komunikaty po n pikseli. Skrajne procesory 0 i 3 otrzymują tylko jeden komunikat. Na maszynie z przesłaniem komunikatów algorytm wykonuje się w dwóch krokach przesłanie sąsiednich kolumn obliczenie wartości pikseli lokalnego podobrazu. 25

Detekcja krawędzi - skalowalność Zakładamy maszynę z przesyłaniem komunikatów. Pierwszy krok - transmisja dwóch sąsiednich kolumn danych, z których każda składa się z n pikseli zajmuje, zgodnie z modelem komunikacji, 2*(t S +t W *n) czasu, gdzie t S jest czasem inicjalizacji połączenia, a t W czasem transmisji jednego słowa (piksela). W drugim kroku każdy procesor aplikuje maskę 3x3 do każdego ze swoich n*n/p pikseli. Aplikacja maski o wymiarze 3x3 zajmuje 9 kroków. Czas tego kroku jest równy 9t c n*n/p. Stąd otrzymujemy: T p n, p =9t c n 2 p 2 t S t W n T S n =9t c n 2 S p = T n S T p n, p = 9t c n 2 n 2 9 t c p 2 t S t W n 26

Zakończenie Takiej analizy jak w ostatnim przykładzie oczekuję w Państwa projektach. Ze wzoru na T p widać że pierwszy krok jest przyspieszany p-krotnie a drugi nie jest przyspieszany w ogóle, co oznacza że spełnione jest prawo Amdahla. Jako ćwiczenie proponuję wybranie przykładowych wartości t c, t w, t s i zrobienie wykresów przyspieszenia dla różnych wartości n. Aby symulacja była realistyczna powinno być t c t w t s. 27