Algorytmy równoległe

6
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW - jednoczesny odczyt i wyłączny zapis; ERCW - wyłączny odczyt i jednoczesny zapis; CRCW - jednoczesny odczyt i jednoczesny zapis Oszacowywać można: czas działania algorytmu; pracę, wykonywaną przez algorytm: sumaryczny czas działania wszystkich procesorów.

description

Algorytmy równoległe. Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW - jednoczesny odczyt i wyłączny zapis; ERCW - wyłączny odczyt i jednoczesny zapis; CRCW - jednoczesny odczyt i jednoczesny zapis - PowerPoint PPT Presentation

Transcript of Algorytmy równoległe

Page 1: Algorytmy równoległe

Algorytmy równoległe

Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji.

• EREW - wyłączny odczyt i wyłączny zapis;

• CREW - jednoczesny odczyt i wyłączny zapis;

• ERCW - wyłączny odczyt i jednoczesny zapis;

• CRCW - jednoczesny odczyt i jednoczesny zapis

Oszacowywać można:

• czas działania algorytmu;

• pracę, wykonywaną przez algorytm: sumaryczny czas działania wszystkich procesorów.

Page 2: Algorytmy równoległe

Ustalanie porządku obiektów na liście

Jest dana n-obiektowa lista L, chcemy dla każdego obiektu obliczyć jego odległość od końca listy. Algorytm sekwencyjny potrzebuje czasu (n)

LIST-RANK(L)

1 for każdy procesor i in parallel {równolegle wykonaj}

2 do if next[i] = NIL

3 then d[i] := 0

4 else d[i] := 1

5 while istnieje obiekt i taki, że next[i] NIL

6 do for każdy procesor i in parallel

7 do if next[i] NIL

8 then d[i] := d[i]+d[next[i]]

9 next[i] := next[next[i]]

Page 3: Algorytmy równoległe

Ustalanie porządku obiektów na liście

1 1 1 1 1 0 /a)

2 2 2 2 1 0 /b)

4 4 3 2 1 0 /c)

/

///

5 4 3 2 1 0 /d) /////

Page 4: Algorytmy równoległe

Analiza algorytmu ustalania porządku

W algorytmie jest zachowywany następujący niezmiennik: dla każdego obiektu i na początku każdej iteracji pętli while suma wartości d w podliście o początku w i jest równa odległości obiektu i od końca pierwotnej listy L.

W każdej iteracji przeskoki wskaźników powodują przekształcenie każdej listy na dwie: z obiektów na pozycjach parzystych i nieparzystych. Każdy krok podwaja liczbę list i zmniejsza o połowę ich długości. Dlatego po wykonaniu lg n iteracji wszystkie listy zawierają po jednym obiekcie.

Czas działania procedury wynosi (lg n), a liczba zastosowanych procesorów wynosi (n), więc procedura wykonuje pracę (n lg n).

Page 5: Algorytmy równoległe

Algorytm typu CREW

Niech jest dany las drzew binarnych, w którym każdy węzeł ma wskaźnik do swojego ojca, i chcemy znaleźć dla każdego węzła identyfikator korzenia drzewa, do którego ten węzeł należy.

FIND-ROOTS(F)

1 for każdy procesor i in parallel

2 do if parent[i] = NIL

3 then root[i] := i

4 while istnieje węzeł i taki, że parent[i] NIL

5 do for każdy procesor i in parallel

6 do if parent[i] NIL

7 then root[i] := root[parent[i]]

8 parent[i] := parent[parent[i]]

Page 6: Algorytmy równoległe

Znajdowanie korzeni w lesie drzew binarnych

6 8

12

6 8

12

6 6 8 8

12

6 8

12

6 6 8 8

12

886

12 12

12