Projekt struktury sieci neuronowej - Politechnika Wrocławskakwiatkow/prog_row_roz/wyk9.pdf ·...

28
1 1 Projekt struktury sieci neuronowej Sieci neuronowe stosowane między innymi jako narzędzie klasyfikacyjne, poprawne określenie struktury sieci pozwala na uzyskanie struktury sprawnie i w miarę bezbłędnie oceniającej podobieństwa pomiędzy wzorcami przedstawianymi jej w procesie uczenia oraz nowymi zadanymi do rozpoznawania. Zwykle najwięcej problemów nastręcza proces uczenia sieci. Zbyt duża liczba neuronów wydłuża proces uczenia sieci oraz zmniejsza jej zdolności klasyfikacyjne. Z kolei niedobór neuronów sprawia, że wyuczenie sieci na podstawie wzorców uczących staje się wręcz niemożliwe, co pociąga za sobą niepoprawną klasyfikację nowych przypadków. W rozwiązaniu powyższego problemu pomocnym okazuje się wykorzystanie algorytmu genetycznego. Algorytmy genetyczne, niejako z definicji mają wbudowaną równoległość. Jeżeli dodatkowo przyjmiemy, że jednocześnie rozpatrywać będziemy grupę populacji zamiast jednej, to zbiór takich populacji można potraktować jako zbiór procesów. Dodatkowo wprowadzenie wymiany informacji genetycznej pomiędzy populacjami może wpłynąć na szybsze znalezienie poszukiwanego rozwiązania.

Transcript of Projekt struktury sieci neuronowej - Politechnika Wrocławskakwiatkow/prog_row_roz/wyk9.pdf ·...

1 1

Projekt struktury sieci neuronowej

Sieci neuronowe są stosowane między innymi jako narzędzie klasyfikacyjne, poprawne określenie struktury sieci pozwala na uzyskanie struktury sprawnie i w miarę bezbłędnie oceniającej podobieństwa pomiędzy wzorcami przedstawianymi jej w procesie uczenia oraz nowymi zadanymi do rozpoznawania.

Zwykle najwięcej problemów nastręcza proces uczenia sieci.

Zbyt duża liczba neuronów wydłuża proces uczenia sieci oraz zmniejsza jej zdolności klasyfikacyjne.

Z kolei niedobór neuronów sprawia, że wyuczenie sieci na podstawie wzorców uczących staje się wręcz niemożliwe, co pociąga za sobą niepoprawną klasyfikację nowych przypadków.

W rozwiązaniu powyższego problemu pomocnym okazuje się wykorzystanie algorytmu genetycznego. Algorytmy genetyczne, niejako z definicji mają wbudowaną równoległość. Jeżeli dodatkowo przyjmiemy, że jednocześnie rozpatrywać będziemy grupę populacji zamiast jednej, to zbiór takich populacji można potraktować jako zbiór procesów.

Dodatkowo wprowadzenie wymiany informacji genetycznej pomiędzy populacjami może wpłynąć na szybsze znalezienie poszukiwanego rozwiązania.

2 2

Algorytm genetyczny

1. Przetworzenie danych wejściowych (dane wejściowe obejmują parametry populacji początkowej, wzorce uczące oraz testujące dla projektowanej sieci neuronowej, warunki wstrzymania pracy algorytmu)

2. Utworzenie populacji początkowej i jej ocena

3. Generacja nowej populacji i jej ocena

operacje genetyczne (operacje krzyżowania oraz mutacji)

ocena otrzymanych osobników - dla każdego osobnika w populacji: odwzorowanie osobnika w sieć neuronową, usunięcie zbędnych połączeń lub nadmiarowych neuronów, wyuczenie sieci neuronowej, testowanie sieci, ocena sieci (błąd średniokwadratowy, czas uczenia sieci, itp.), przypisanie osobnikowi wartości określającej jego przystosowanie

4. Klasyfikacja osobników pod względem wartości przystosowania na podstawie oceny przeprowadzonej w poprzednim punkcie (operacja selekcji) i zestawienie nowej populacji

5. Jeżeli nowa populacja nie spełnia założeń (nie zachodzi warunek końca algorytmu) powrót do punktu 3

6. Koniec algorytmu, wyprowadzenie wyników

3 3

Dekompozycja 1

Proces zrównoleglania rozpoczynamy od podziału zadania na podzadania. Możemy zastosować zarówno podział dziedzinowy jak i funkcjonalny.

Przy dekompozycji dziedzinowej podział początkowej populacji umożliwi nam proste zrównoleglenie algorytmu poprzez przeszukiwanie tej samej przestrzeni jednocześnie przez większą liczbę współpracujących (wymieniających dane) procesów.

Możemy tego dokonać w dwojaki sposób. Po pierwsze możemy podzielić początkową populację na rozłączne zbiory. Wymagać to będzie określenia funkcji podobieństwa sieci neuronowych. Funkcja taka pozwoli na określenie zbiorów, a co za tym idzie, na taki podział przestrzeni początkowej, że każdy z procesów przeszukiwał będzie inny fragment tej przestrzeni.

Przestrzeń poszukiwań

Wylosowane osobniki

Podzbiory osobników

4 4

Dekompozycja 2

Przy takim podziale zrównoleglenie algorytmu będzie polegać na:

podziale przestrzeni poszukiwań

powieleniu wzorców uczących (każda populacja wykorzystuje te same wzorce)

utworzeniu wielu procesów realizujących ten sam algorytm genetyczny

rozesłaniu danych do procesów.

Po takiej dekompozycji problemu nie są wymagane praktycznie żadne zmiany w przedstawionym algorytmie, jedynie w przedostatnim kroku niezbędna będzie pewna modyfikacja gdyż może mieć miejsce wymiana informacji pomiędzy procesami.

5 5

Dekompozycja 3

Drugim sposobem podziału populacji wejściowej jest jej podział na mniejsze populacje w całkowicie losowy sposób. Początkowo utworzoną populację dzielimy na mniejsze, równe populacje nie zakładając żadnych dodatkowych warunków, co do samego przebiegu podziału. Podział ten można zobrazować za pomocą prostej której każdy odcinek przypisany zostaje do jednego z procesorów.

P1 P5P4P3P2 P6

Podział powyższy posiada niestety pewne wady. Populacja

początkowa może zostać podzielona tak, że wszystkie procesy

przetwarzają dokładnie takie same podobne dane. Może to

doprowadzić do tego, że proces poszukiwania rozwiązania będzie

mało efektywny. Niemniej jednak nie można arbitralnie stwierdzić, że

podział taki jest niekorzystny, a to ze względu na to, iż algorytmy

genetyczne charakteryzuje pewna losowość.

6 6

Dekompozycja 4

Innym sposobem dekompozycji jest wprowadzenie dodatkowego elementu pośredniczącego w komunikacji pomiędzy procesami. Taki dodatkowy proces komunikacyjny obsługiwałyby przykładowo cztery procesy obliczeniowe. Dodatkowo procesy te posiadałyby możliwość komunikacji z innymi tego typu procesami. Rozwiązanie takie pozwalałoby na dryft genetyczny pomiędzy oddalonymi populacjami.

Procesy komunikacyjne

Procesy obliczeniowe

7 7

Dekompozycja 5

Dostępność materiału genetycznego z odległej populacji, czyli należącej do innego węzła komunikacyjnego, byłaby ograniczona, ale nie niemożliwa. Rozwiązanie takie pozwala na lepsze zrównoleglenie procesu wymiany osobników, oraz przerzuca ciężar oceny przydatności osobników w populacji na procesy pośredniczące. W rozwiązaniu tym utworzone zostałyby dwa rodzaje procesów, z których każdy miałby diametralnie różne zadania do wykonania.

W powyższym podziale, który jest podziałem funkcjonalnym przedstawiony algorytm zostałoby zmodyfikowany ze względu na istnienie pośredników w komunikacji pomiędzy procesami obliczeniowymi. Z podziałem tym związany jest również współistniejący podział dziedzinowy populacji przydzielanej do procesów obliczeniowych.

8 8

Ocena dekompozycji

Podział 1,2 (podziały dziedzinowe) – praktycznie nie została określona większa liczba procesów niż dostępna liczba procesorów. Na każdym z procesorów analizowana jest mniejsza liczba sieci neuronowych (mniejsza populacja). Każde z zadań realizowanych na różnych procesorach ma podobny rozmiar (na każdym z procesorów wykorzystywany jest ten sam algorytm sekwencyjny). Zwiększenie liczby przetwarzanych danych wejściowych pociąga za sobą zwiększenie wymaganej liczby procesów, co przy takiej samej liczbie procesorów zwiększy ich obciążenie.

Podział 3 (podział funkcjonalny) - jeżeli przyjmiemy, że procesy pośredniczące w komunikacji uruchamiane są na osobnym procesorze to liczba procesów jest równa liczbie procesorów, jeśli nie to otrzymujemy większą liczbę procesów niż procesorów, pewne procesory będą obsługiwać procesy obliczeniowe i komunikacyjne. Procesy różnią się zasadniczo, zarówno pod względem pełnionych funkcji jak i metod komunikacji (dwa rodzaje procesów). Liczba procesów rośnie wraz ze wzrostem ilości danych wejściowych.

Rozważając dwie przedstawione dekompozycje dziedzinowe można zauważyć, że praktycznie charakteryzują się one taką samą strukturą komunikacyjną, zasadnicza różnica między nimi leży w samym podziale dziedziny. Biorąc pod uwagę, że kontrolowany podział pierwotnej populacji pozwoli najprawdopodobniej na osiągnięcie lepszej wydajności algorytmu genetycznego, podział drugi zostaje wyeliminowany z dalszych rozważań. Tak więc do dalszych rozważań pozostawiamy podział pierwszy, dziedzinowy oraz drugi funkcjonalny.

9 9

Komunikacja 1

Przyjmijmy następujące oznaczenia:

p - liczba procesów

S - liczba sąsiadów danego procesu. Pod pojęciem sąsiada rozumieć będziemy proces oddalony od aktualnie rozpatrywanego dokładnie o jedną jednostkę odległości. Logiczna architektura procesorów tworzy sieć typu krata z połączonymi skrajnymi procesorami w wierszach i kolumnach (ang. mesh-wraparound)

PPs = Ps/p - rozmiar populacji przetwarzanej przez proces (po podziale populacji początkowej), Ps jest rozmiarem populacji początkowej (praktycznie wyrażany jest przez liczbę osobników w populacji)

w - rozmiar komunikatu

10 10

Komunikacja 2

Komunikacja pomiędzy procesami w podziale dziedzinowym ma następujące cechy:

1. Każdy proces posiada skończoną liczbę sąsiadów

2. Każdy proces posiada dwa porty komunikacyjne: wejściowy i wyjściowy oraz odpowiednią liczbę kanałów komunikacyjnych.

3. Długość komunikatu zależna jest od rozmiaru populacji (dla naszych rozważań dokładny jego rozmiar nie jest istotny).

4. Dla każdego cyklu komunikacyjnego można określić ilość informacji, jaka zostanie przesłana, i tak K = S * p określa łączną liczbę komunikatów natomiast I = w * K łączną ilość informacji.

5. Komunikacja jest równoległa, wiele procesów jednocześnie przesyła komunikaty.

6. Dla każdego procesu algorytm wymiany danych wygląda identycznie i można go przedstawić w następujący sposób: k oznacza numer kolumny, r numer wiersza (para <r, k> jest identyfikatorem procesu)

11 11

Komunikacja 3

Rozesłanie w wierszach faza 1 (wysłanie w lewo)

if(k%2 == 0)

{ wyślij w lewo

odbierz z prawej }

else

{ odbierz z prawej

wyślij w lewo }

Krok 2

Krok 1

0

1

2

0 1 2

12 12

Komunikacja 4

Rozesłanie w wierszach faza 2 (wysłanie w prawo)

if(k%2 == 0)

{ wyślij w prawo

odbierz z lewej }

else

{ odbierz z lewej

wyślij w prawo }

0 1 2

0

1

2

13 13

Komunikacja 5

Rozesłanie w kolumnach faza 3 (wysyłanie w górę)

if(r%2 == 0)

{ wysłanie w górę

odbiór z dołu }

else

{ odbiór z dołu

wysłanie w górę }

0 1 2

0

1

2

14 14

Komunikacja 6

Rozesłanie w kolumnach faza 4 (wysłanie w dół)

if(r%2 == 0)

{ wysłanie w dół

obiór z góry }

else

{ odbiór z góry

wysłanie w dół }

0 1 2

0

1

2

15 15

Komunikacja 7

• Struktura kanałów komunikacyjnych przy podziale dziedzinowym

Proces rozpatrywany

Proces sąsiedni

Kanał komunikacyjny

Granica sąsiedztwa

16 16

Komunikacja 8

Dla podziału funkcjonalnego, przyjmijmy, że podział danych początkowych będzie taki sam jak przy podziale dziedzinowym.

Inny natomiast, będzie ich przydział do zadań. Wynika to z faktu, że procesy będą podzielone na dwie grupy funkcjonalne. Pierwsza z nich, procesy obliczeniowe, zajmować się będzie przetwarzaniem populacji.

Druga grupa, procesy pośredniczące, zajmować się będzie wymianą osobników pomiędzy procesami grupy pierwszej, oraz ogólną oceną sytuacji całej populacji globalnej.

Procesy pośredniczące w wymianie komunikatów będą dalej traktowane jako procesy serwerów, natomiast procesy wykonujące obliczenia to procesy klientów.

Klienci do poprawnej pracy potrzebują wymiany informacji z innymi procesami i takie właśnie żądania realizują procesy serwerów.

Wprowadźmy następujące oznaczenia;

• · Cp – liczba procesów klientów

• · Sv - liczba procesów serwerów (zwykle spełniony jest warunek p= Sv * 4 + Sv).

17 17

Komunikacja 9

1. Każdy proces serwera obsługuje skończoną liczbę klientów

2. Każdy proces posiada dwa porty komunikacyjne: wejściowy oraz wyjściowy.

3. Każdy proces klienta posiada jeden kanał komunikacyjny. Każdy proces serwera posiada do ośmiu kanałów komunikacyjnych.

4. Długość komunikatu zależy od początkowego rozmiaru populacji. Ilość osobników przekazywanych do serwera jest większa w porównaniu z podziałem dziedzinowym, gdyż to on tak naprawdę zdecyduje co z nimi zrobić (komu przekazać). Dodatkowo rośnie rozmiar każdego komunikatu, gdyż należy dodatkowo przesłać parametry opisujące populację: rozmiar, średnie przystosowanie, minimalne przystosowanie, maksymalne przystosowanie, itp.

5. Ze względu na brak synchronizacji podczas komunikacji nie można jednoznacznie określić ilości informacji przepływającej przez kanały komunikacyjne. Można jedynie określić, ile informacji wymienianej będzie w jednym cyklu komunikacji z serwerem:

Łączna liczba komunikatów: K = Sv * Cp

Łączna ilość informacji: I = w * K

Dodatkowo można określić ilość komunikacji pomiędzy serwerami. Będzie ona dokładnie taka jak w przypadku pierwszym, a to ze względu na logiczne rzutowanie struktury połączeń między serwerami na strukturę sieci typu krata. Komunikacja między serwerami występować będzie w pewnych z góry określonych cyklach, przy dodatkowym założeniu komunikacji nieblokującej.

18 18

Komunikacja 10

6. Komunikacja klientów z serwerem jest sekwencyjna, równoległość komunikacji występuje na poziomie wymiany informacji pomiędzy serwerami oraz grup procesów związanych z poszczególnymi serwerami.

7. Dla każdego procesu klienta proces wymiany danych wygląda następująco:

Przejęto dodatkowo następujące oznaczenia: my_sv – proces serwer, do którego przypisany jest klient, CL – zbiór procesów klientów, do których przypisany jest serwer, SL – zbiór serwerów z którymi połączony jest dany serwer, dla każdego serwera ważny jest jego identyfikator w strukturze połączeń między serwerami: k - numer kolumny, r - numer rzędu, (para <r, k> jest identyfikatorem procesu).

do {

do{

oblicz przystosowanie kolejnego osobnika

}while(istnieją nieocenione osobniki)

przygotuj osobniki do wysłania

przygotuj parametry populacji do wysłania

send(my_sv,parametry)

send(my_sv,osobniki)

przygotowanie nowej populacji

recv(my_sv,osobniki)

dodaj nowe osobniki do populacji

}while(!stop)

19 19

Komunikacja 11

Komunikacja po stronie serwera jest komunikacją opartą o skanowanie portów. Pozwoli to na nieskrępowaną pracę klientów w przypadku „opieszałości” jednego z nich.

do { NewCL = CL

do

{ dla każdego c z NewCL

{ if(jest komunikat od c)

{ recv(c,parametry)

recv(c,osobniki)

NewCL = NewCL - c }}}

while(NewCL 0)

opracowanie informacji dla każdego c z CL

{ if(c przygotowany do odbioru)

send(c,osobniki) }

NewSL = SL

dla każdego s należącego do SL

{ if(jest komunikat od s)

{ recv(s,osobniki)

send(s,osobniki) NewSL = NewSL – s }}}

20 20

Ocena komunikacji

Możemy łatwo zauważyć, że przy obu podziałach komunikacja jest typu lokalnego, to znaczy procesy komunikują się bezpośrednio ze swoimi najbliższymi sąsiadami.

Przy podziale dziedzinowym obciążenie komunikacją każdego z procesów jest identyczne a przy podziale funkcjonalnym nie jest równomierne.

W obu przypadkach obliczenia przebiegają równolegle, natomiast dla podziału dziedzinowego komunikacja odbywa się równolegle, gdy przy podziale funkcjonalnym może mieć miejsce komunikacja sekwencyjna.

Wynika z tego, że struktura komunikacyjne dla podziału dziedzinowego jest korzystniejsza niż dla podziału funkcjonalnego.

21 21

Aglomeracja 1

Aglomeracja - ma ona na celu między innymi zmniejszenie liczby komunikatów przesyłanych pomiędzy zadaniami. Proces aglomeracji dotyczy głównie zadań, które nie mogą wykonywać się równolegle.

Jednak aglomeracja może być również przydatna w przypadku zadań równoległych. Dotyczy to zadań o intensywnej komunikacji lokalnej, gdzie zmniejszenie ilości komunikatów kompensuje zwiększenie czasu przetwarzania.

Aglomeracja może być także korzystna dla tych zadań, których komunikacja jest sekwencyjna.

W naszym przypadku dla zaproponowanych rozwiązań nie występuje problem sekwencyjności zadań.

Możemy jednak spróbować dokonać aglomeracji zadań równoległych dla pierwszego, jak i drugiego modelu komunikacji

W pierwszym modelu łączone będą dane, tak aby każdy z procesorów przetwarzał większe porcje informacji, natomiast w modelu drugim łączyć będziemy funkcjonalności procesów.

22 22

Aglomeracja 2

Cechy powyższej aglomeracji są następujące:

dane znajdujące się w kolumnach są przetwarzane przez jeden procesor (dla każdej kolumny), powoduje to zwiększenie czasu obliczeń Tobl=Tobl*n

ze względu na aglomerację danych zmniejsza się liczba wymaganych komunikatów, łączna liczba komunikatów przed aglomeracją wynosiła K = n2*4, a po aglomeracji K = n*2,

zwiększenie długości komunikatu, przed aglomeracją długość komunikatu równa była w, a po aglomeracji wynosi w*n,

występuje również zwiększenie rozmiaru populacji, a co za tym idzie: zmniejszenie odległości między różnorodnym materiałem genetycznym, szybsza unifikacja materiału genetycznego oraz zmniejszenie różnorodności populacji

Proces po

aglomeracji

Proces obliczeniowy przed

aglomeracją

23 23

Aglomeracja 3

Dla drugiego sposobu aglomeracji możemy sformułować następujące wnioski:

zwiększenie czasu obliczeń Tobl=Tobl*4

zmniejszenie liczby komunikatów, przed aglomeracją K=n2*4, a po aglomeracji odpowiednio dla różnej liczby procesorów: p=4 => K=0, p=8 => K=2, p=16 =>K=8

zwiększenie długości komunikatu, przed aglomeracją długość komunikatu równa była w a po aglomeracji długość komunikatu równa jest 4*w

dodatkowo występuje zwiększenie rozmiaru populacji jak dla pierwszego sposobu aglomeracji.

Proces po

aglomeracji

Proces obliczeniowy przed

aglomeracją

24 24

Ocena aglomeracji

• Dla podziału funkcjonalnego aglomeracja może być wykonana poprzez połączenie funkcjonalności klientów połączonych z serwerem z funkcjonalnością serwerów. Otrzymamy w ten sposób model identyczny z drugim zaproponowanym dla podziału dziedzinowego, dlatego rozważania te pominiemy.

• Dla pierwszego sposobu aglomeracji (aglomeracja paskowa) otrzymujemy: zmniejszenie kosztu komunikacji (mniejsza liczba komunikatów - ts), paczki komunikatów znacznie większe, brak replikacji obliczeń oraz danych. Przy założeniu, że powielane w celu rozesłania fragmenty populacji to replikacja danych, możemy wprowadzić termin częściowej replikacji. Rozmiar danych pozostaje stały w czasie wykonania programu. Identyczny rozmiar zadań (procesów), ale tylko zbliżone czasy przetwarzania. Ponieważ postać osobnika determinuje czas wyznaczania dla niego wartości funkcji przystosowania (uczenie sieci neuronowej) czasy przetwarzania poszczególnych zadań mogą się różnić. Nie ma zatem pełnej synchronizacji, ale ze względu na przetwarzanie takiej samej ilości danych, różnice te nie powinny być znaczące. Możliwe jest także zastosowanie w algorytmie genetycznym pewnych mechanizmów zmniejszających ryzyko dużych opóźnień. Liczba zadań wzrasta wraz z rozmiarem danych. Równoległość pozostaje na tym samym poziomie. Możliwe jest dalsze redukowanie liczby przetwarzanych zadań aż do pojedynczego procesu. Trzeba jednak wziąć pod uwagę proporcjonalne zmniejszanie rozmiaru problemu, tak aby nie przeciążać pojedynczych procesorów. Dla drugiego sposobu aglomeracji (aglomeracja blokowa) uzyskujemy podobne wnioski. Oba sposoby aglomeracji powinny być dalej rozpatrywane.

25 25

Przydział procesorów

• Pierwszy ze sposobów to indeksowanie z alokacją pakietową. Budując ten model zakładamy, że dane wejściowe podlegają wcześniejszemu uporządkowaniu. Polega to na takiej klasyfikacji osobników, że osobniki o zbliżonym materiale genetycznym znajdują się blisko siebie. Dane te dzielimy następnie na tyle równych pakietów, ile mamy do dyspozycji procesorów. Każdemu pakietowi przypisana zostanie konkretna wartość określająca jego położenie w przestrzeni procesów. Każdy z procesorów posiadał będzie unikalny identyfikator, nie tylko wyróżniający go w strukturze, ale również określający jego sąsiedztwo. W początkowej fazie wszystkie dane (podzielone i przygotowane do rozesłania) znajdują się w procesorze zerowym. Następuje faza grupowego przesłania komunikatów – każdy z procesorów otrzymuje inny komunikat (ang. one-to-all-personalized), w której dane rozsyłane są do odpowiednich procesorów. W ten sposób każdy z procesorów przetwarza takie dane, że sąsiednie procesory posiadają dane o zbliżonym materiale genetycznym (obszary sąsiednie w przestrzeni poszukiwań).

• Drugie podejście do przydziału zadań do procesorów związane jest z wyrównywaniem obciążeń. W modelu tym, wszystkie kroki byłyby identyczne jak poprzednio. Różnica pojawiałaby się w ilości danych biorących udział w obliczeniach, posiadanych przez każdy z procesorów. W modelu tym założylibyśmy, że ilość danych adekwatna jest do obciążenia procesora. Ze względu na różnice czasowe w trakcie uczenia sieci neuronowej należy rozważyć możliwość różnorodnego rozmieszczenia danych początkowych. W modelu tym należałoby określić średni czas obliczeń dla kilku rodzajów sieci i na tej podstawie decydować jaka ilość danych ma być przetwarzana przez każdy z procesorów.

• Takie rozwiązanie napotyka jednak duże trudności. Konieczne byłyby negocjacje, albo dodatkowy proces zarządzający rozkładem danych. Najprawdopodobniej skutkowałoby to znacznym obniżeniem wydajności całego procesu obliczeniowego. Z tego też względu końcowe rozwiązanie powinno wykorzystywać pierwszą z propozycji przydziału zadań do procesorów.

26 26

Ocena efektywności

Przyjmijmy następujące oznaczenia:

TS - czas potrzebny na wykonanie programu uruchomionego na jednym procesorze (czas sekwencyjny)

TP - czas potrzebny na wykonanie programu na maszynie wieloprocesorowej (czas równoległy)

Tkom, Tobl, Tbezcz – odpowiednio czasy komunikacji, obliczeń oraz bezczynności

N - liczba procesorów w kolumnach jak i wierszach (N*N = p – łączna liczba procesorów)

PPs - liczba osobników w każdej z populacji

tc - czas przetwarzania pojedynczego osobnika

w – rozmiar przesyłanego komunikatu (zależy od rozmiaru pojedynczego osobnika)

Wyznaczmy czas przetwarzania sekwencyjnego, będzie on iloczynem liczby osobników w każdej populacji, całkowitej liczby procesorów oraz czasu przetwarzania pojedynczego osobnika, wyraża się on następującym wzorem:

PPsNtT cs ** 2

27 27

Ocena efektywności

Załóżmy, równomierny rozdział zadań pomiędzy dostępne procesory (na podstawie rozważań z poprzednich punktów jest ono uzasadnione). Pomijając dodatkowo czas bezczynności możemy przyjąć, że czas wykonania równoległego będzie sumą czasów komunikacji oraz obliczeń każdego z procesorów podzieloną przez liczbę procesorów.

Łączna liczba komunikatów wynosi N2 * 4 (gdzie N2 = p), więc czas komunikacji wyraża się wzorem Tkom = 2 * (ts + tw * w) * p * 4 , natomiast czas wynosi obliczeń Tobl = tc * p *PPs. Stąd czas przetwarzania równoległego wyraża się wzorem:

p

PPsptpwttT cws

p

***4*)*(*2

28 28

Ocena efektywności 3

Powyższe rozważania należy dodatkowo rozszerzyć o analizę spadku efektywności podczas stopniowego zwiększania liczby procesorów dla różnych rozmiarów problemu. Pozwoli to na późniejsze określenie możliwości skalowalności algorytmu. W tym celu konieczne jest dokładne wyznaczenie czasów: ts, tc, oraz tw dla konkretnego komputera.

Otrzymany w wyniku powyższych rozważań szkielet rozwiązania nosi w literaturze nazwę wyspowego równoległego algorytmu genetycznego.

PPsptpwtt

PPsptE

cws

c

***4*)*(*2

**

Po podstawieniu powyższych zależności do wzoru na efektywność i wykonaniu prostych przekształceń otrzymujemy następujące wyrażenie określające efektywność naszej aplikacji: