Obliczenia równoległe

Podobne dokumenty
Programowanie równoległe

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

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

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

EFEKTYWNOŚĆ MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

ANALIZA EFEKTYWNOŚCI MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

Macierzowe algorytmy równoległe

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

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

16. Taksonomia Flynn'a.

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Algorytmy dla maszyny PRAM

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

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Operacje grupowego przesyłania komunikatów

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

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

Programowanie Współbieżne. Algorytmy

EGZAMIN MATURALNY Z INFORMATYKI

Przetwarzanie równoległe Zadanie domowe III

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Strategia "dziel i zwyciężaj"

Analiza algorytmów zadania podstawowe

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

Architektura komputerów

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

Algorytmy numeryczne 1

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

MATERIAŁY POMOCNICZE DO LABORATORIUM Z PRZETWARZANIA RÓWNOLEGŁEGO KWIECIEŃ 2018

Programowanie równoległe

Podstawy Informatyki Systemy sterowane przepływem argumentów

Analiza numeryczna Kurs INP002009W. Wykłady 6 i 7 Rozwiązywanie układów równań liniowych. Karol Tarnowski A-1 p.

Algorytmy sortujące 1

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

Przetwarzanie równoległesprzęt. Rafał Walkowiak Wybór

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Modelowanie procesów współbieżnych

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Analiza ilościowa w przetwarzaniu równoległym

Programowanie współbieżne i rozproszone

Wykład z Technologii Informacyjnych. Piotr Mika

Programowanie Współbieżne. Wstęp

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

Wydajność komunikacji grupowej w obliczeniach równoległych. Krzysztof Banaś Obliczenia wysokiej wydajności 1

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

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

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

Projektowanie i analiza algorytmów

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

Numeryczna algebra liniowa

Informatyka A. Algorytmy

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Mnożenie macierzy. Systemy z pamięcią współdzieloną Systemy z pamięcią rozproszoną Efektywność

5. Rozwiązywanie układów równań liniowych

Algorytmy i struktury danych. Wykład 4

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia i ich zastosowań w przemyśle" POKL

Podstawy Informatyki. Inżynieria Ciepła, I rok. Iteracja warunkowadopóki(while) Blok instrukcji. Pascal: begin instrukcja1; C: { end;

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

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2013 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

TEORETYCZNE PODSTAWY INFORMATYKI

Wyk lad 4 Dzia lania na macierzach. Określenie wyznacznika

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

UKŁADY RÓWNAŃ LINIOWYCH - Metody dokładne

Zadania na zaliczenie przedmiotu Przetwarzanie równoległe Zebrał dla roku.ak. 2015/2016 Rafał Walkowiak,

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Elementy projektowania inzynierskiego Przypomnienie systemu Mathcad

Zasady analizy algorytmów

Przykładem jest komputer z procesorem 4 rdzeniowym dostępny w laboratorium W skład projektu wchodzi:

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4

PROGRAMOWANIE W PYTHONIE ALGORYTMY TABLICOWE A LISTY

Algorytmy i Struktury Danych

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

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

TEORETYCZNE PODSTAWY INFORMATYKI

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

EGZAMIN MATURALNY Z INFORMATYKI 11 MAJA 2018 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Podstawy Programowania C++

Luty 2001 Algorytmy (7) 2000/2001

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Podstawy OpenCL część 2

Programowanie dynamiczne

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Algorytmy i Struktury Danych

EGZAMIN MATURALNY Z INFORMATYKI. 10 maja 2017 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I

Rozdział 1 PROGRAMOWANIE LINIOWE

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

Sortowanie przez wstawianie

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Transkrypt:

Instytut Informatyki Politechnika Śląska Obliczenia równoległe Opracował: Zbigniew J. Czech materiały dydaktyczne Gliwice, luty 1

Spis treści 1 Procesy współbieżne Podstawowe modele obliczeń równoległych 4 Elementarne algorytmy równoległe 4.1 Miara Karpa i Flatta.............................................. 4. Algorytmy dla modelu PRAM...........................................1 Sortowanie przez przestawianie nieparzysto-parzyste.......................... Znajdowanie minimum w czasie O(log n), n = r............................ Znajdowanie sumy elementów w czasie O(log n), n dowolne.................... 9..4 Znajdowanie sumy elementów za pomocą p procesorów... 1.. Problem sum prefiksowych...................................... 1.. Znajdowanie minimum w czasie O(1)................................. 11..7 Sortowanie w czasie O(log n)..................................... 1..8 Mnożenie macierzy........................................... 1. Algorytmy dla modelu sieciowego....................................... 1..1 Mnożenie macierzy przez wektor w jednowymiarowym torusie................... 1.. Mnożenie macierzy przez macierz w dwuwymiarowym torusie................... 14.. Problem redukcji w kostce....................................... 14..4 Znajdowaniesumprefiksowychwkostce... 1.. Problem redukcji w sieci doskonale przetasowanej.......................... 17.. Problem redukcji w siatce dwuwymiarowej.............................. 17.4 Algorytm dla komputera CREW MIMD................................... 4 Komputery równoległe klasy architektur oraz sieci połączeń Literatura

1 Procesy współbieżne R s 1 s s s 4 Rysunek 1: Algorytm równoległy R złożony z algorytmów składowych s 1, s, s i s 4 rozwiązujących poszczególne zadania (podproblemy); strzałki oznaczają współpracę algorytmów składowych, tj. przesłania danych lub synchronizację działania P 1 P o 1 o o o 4 o i o i+1 o 1 o o o 4 o i o i+1 Rysunek : Procesy sekwencyjne P 1 i P równoważne pod względem wyników obliczeń; t oznacza oś czasu t P 1 P o 1 o o 1 o o 1 o o 1 o P 1 P t t Rysunek : Dwie możliwe realizacje procesów P 1 i P P i P j P k o i1 o i o i o i4 o i o j1 o j o j o j4 o k1 o k o k o k4 t Rysunek 4: Jednoczesne wykonywanie operacji procesów P i, P j oraz P k

P i o i1 o i P j o j1 o j P k o k1 o k Rysunek : Przeplatanie operacji procesów jeden procesor rzeczywisty implementuje trzy procesory wirtualne t Pamięć Procesor Rysunek : Model obliczeń sekwencyjnych RAM Podstawowe modele obliczeń równoległych 1. M 4 := M 1 +{zapisanie w komórce M 4 sumy zawartości komórki M 1 istałej}. M := M M4 {adresowanie pośrednie: zapamiętanie w komórce M zawartości} {komórki, której adres jest w komórce M 4 }. M := M 1 1 {obliczenie numeru iteracji; M = n 1} 4. M := M M {zapisanie w komórce M iloczynu zawartości komórek M i M }. M 4 := M +{obliczenie indeksu współczynnika wielomianu}. M := M + M M4 7. M := M 1 8. goto 4 if M {wykonanie instrukcji 4, jeśli zawartość komórki M jest nieujemna} 9. halt {koniec obliczeń} Pamiȩć wspólna P 1 P P p Pamiȩć Pamiȩć Pamiȩć lokalna lokalna lokalna Rysunek 7: Model obliczeń równoległych PRAM Elementarne algorytmy równoległe.1 Miara Karpa i Flatta Patrz rys. 1, rys. 17 oraz tab.. 4

Sieć po l aczeń P 1 P P p Pamiȩć Pamiȩć Pamiȩć lokalna lokalna lokalna Rysunek 8: Model sieciowy obliczeń równoległych Pamięć Procesor Rysunek 9: Sieć pełna a) b) Rysunek 1: a) Jednowymiarowa siatka oraz b) jednowymiarowy torus (pierścień). Algorytmy dla modelu PRAM..1 Sortowanie przez przestawianie nieparzysto-parzyste 1. procedure sort nieparzyste parzyste;. begin. for i := 1 to n do 4. parfor P j, j = 1,,..., n 1 do. if A[j] >A[j +1]then. A[j] A[j +1] 7. end if; 8. end for; 9. parfor P j, j =, 4,..., n 1 do 1. if A[j] >A[j +1]then 11. A[j] A[j +1] 1. end if; 1. end for; 14. end for; 1. end;

(a) (b) (c) Rysunek 11: Dwuwymiarowa siatka 4 4 (a); dwuwymiarowy torus 4 4 (b) oraz trójwymiarowy torus (c) (a) (b) (c) (d) 11 111 1 1 11 1 11 1 11 1 1 (e) 11 111 111 1111 1 11 11 111 1 11 11 111 1 1 11 Rysunek 1: Kostka zerowymiarowa (a); jednowymiarowa (b); dwuwymiarowa (c); trójwymiarowa (d); czterowymiarowa (e).. Znajdowanie minimum w czasie O(log n), n = r 1 m := a[1];

14 1 1 1 4 7 1 1 11 8 9 Rysunek 1: Kostka czterowymiarowa (wariant ) 1 11 1 1 11 111 11 11 111 1111 111 1 11 111 11 Rysunek 14: Kostka czterowymiarowa (wariant ) 1 1 11 1 11 11 111 Rysunek 1: Sieć doskonale przetasowana (m =) S 1 9 8 7 4 1 n =1 7 n =1 n =1 1 4 7 8 9 1 Liczba procesów E 1.8..4. n =1 n =1 n =1 7 1 4 7 8 9 1 Liczba procesów Rysunek 1: Przyspieszenia S oraz efektywności E w funkcji liczby procesów dla programu MPI wyznaczania liczb pierwszych; linią kreskowaną przedstawiono maksymalne przyspieszenie równe liczbie procesów 7

Tabela 1: Wybrane parametry charakteryzujące topologie połączeń procesorów Rodzaj Maks. Szerokość Spójność sieci Średnica stopień połowienia krawędz. Koszt Sieć pełna 1 p 1 p /4 p 1 p(p 1)/ Siatka jednowym. p 1 1 1 p 1 Pierścień p/ p Siatka dwuwym. ( p 1) 4 p (p p) Torus dwuwym. p/ 4 p 4 p Kostka log p log p p/ logp (p log p)/ Sieć id. przetas. logp 1 p/ 1 p/ S 8 7 4 1 n =1 7 n =1 n =1 1 4 7 8 Liczba w atków E 1.8..4. n =1 n =1 n =1 7 1 4 7 8 Liczba w atków Rysunek 17: Przyspieszenia S oraz efektywności E w funkcji liczby procesów dla programu OpenMP wyznaczania liczb pierwszych; linią kreskowaną przedstawiono maksymalne przyspieszenie równe liczbie wątków Tabela : Części sekwencyjne f programów wyznaczania liczb pierwszych obliczone na podstawie przyspieszeń z rys. 1 oraz 17 Program MPI Program OpenMP n =1 n =1 7 n =1 n =1 7 p S f S f S f S f 1.9. 1.9. 1.7.14 1.9..91.1.99...17.. 4.4..94..8.7.89.9 4..7 4.4..7. 4.7.1.18....8.48..1 7...7..4.1..4 8.44.7.7.7.14.91..47 9..74 7.47. 1..97 8..7 for i := to n do if a[i] < m then m := a[i]; 4 end for; Dane wejściowe: Tablica a[1..n] umieszczona w pamięci wspólnej modelu PRAM o n procesorach. Zmienne lokalne (w pamięci lokalnej każdego procesora) przechowujące rozmiar n oraz numer procesora i. Dane pomocnicze: Tablica b[1..n] umieszczona w pamięci wspólnej. Zmienne lokalne j i k Dane wyjściowe: Wartość min{a[i]}, dlai = 1,,..., n, umieszczona w zmiennej m pamięci wspólnej. 8

1. begin. parfor P i,1 i ndo. b[i] := a[i]; {kopiowanie tablicy a do tablicy pomocniczej b} 4. k := n;. end for;. for j := 1 to log n do 7. parfor P i,1 i k/ do 8. if b[i] >b[i + k/] then 9. b[i] :=b[i + k/]; 1. end if; 11. end for; 1. k := k/; 1. end for; 14. if i =1then m := b[1]; end if; 1. end; m min min min min min min min b[1] b[] b[] b[4] b[] b[] b[7] b[8] a[1] a[] a[] a[4] a[] a[] a[7] a[8] P 1 P P P 4 P P P 7 P 8 Rysunek 18: Ilustracja działania algorytmu wyznaczania elementu minimalnego (n = 8).. Znajdowanie sumy elementów w czasie O(log n), n dowolne Dane wejściowe: Tablica a[1..n] umieszczona w pamięci wspólnej modelu PRAM o n procesorach. Zmienne lokalne przechowujące rozmiar n oraz numer procesora i. Dane pomocnicze: Tablica b[1..n] umieszczona w pamięci wspólnej. Zmienne lokalne j i k. Dane wyjściowe: Wartość n i=1 a[i] umieszczona w zmiennej s pamięci wspólnej. 1. begin. parfor P i,1 i ndo. b[i] := a[i]; {kopiowanie tablicy a do tablicy pomocniczej b} 4. k := n;. end for;. for j := 1 to log n do 7. parfor P i,1 i k/ do 8. b[i] :=b[i]+b[k +1 i]; 9. end for; 1. k := k/ ; 11. end for; 1. if i =1then s := b[1]; end if; 1. end; 9

s + + + + + + b[1] b[] b[] b[4] b[] b[] b[7] a[1] a[] a[] a[4] a[] a[] a[7] P 1 P P P 4 P P P 7 Rysunek : Ilustracja działania algorytmu wyznaczania sumy elementów (n = 7)..4 Znajdowanie sumy elementów za pomocą p procesorów Dane wejściowe: Tablica a[1..n] umieszczona w pamięci wspólnej modelu PRAM o p, 1<p n, procesorach. Zmienne lokalne przechowujące rozmiar n, liczbę procesorów p oraz numer procesora i. Dane pomocnicze: Tablica b[1..p] umieszczona w pamięci wspólnej. Zmienne lokalne g oraz j. Dane wyjściowe: Wartość n i=1 a[i] umieszczona w zmiennej s pamięci wspólnej. 1. begin. parfor P i,1 i pdo. g := n p (i 1) + 1; 4. b[i] :=a[g];. for j := 1 to n p 1 do {sumowanie w grupach}. if g + j n then {ostatnia grupa może być niepełna} 7. b[i] :=b[i] +a[g + j]; 8. end if; 9. end for; 1. end for; 11. Sumowanie b[1], b[],..., b[p] w czasie O(log p) za pomocą poprzedniego algorytmu; 1. end; Złożoność czasową, osiągane przyspieszenia oraz efektywności przedstawiają rys. a, b i c... Problem sum prefiksowych Dane wejściowe: Tablica x[1..n] umieszczona w pamięci wspólnej modelu PRAM o n procesorach. Zmienne lokalne przechowujące rozmiar n oraz numer procesora i. Dane pomocnicze: Zmienna lokalna j. Dane wyjściowe: Sumy prefiksowe umieszone w tablicy s[1..n] w pamięci wspólnej. 1. begin. parfor P i,1 i ndo {inicjalizacja}. s[i] :=x[i]; 4. end for;. for j := to log n 1 do. parfor P i, j <i n do 7. s[i] :=s[i j ]+s[i]; 8. end for; 9. end for; 1. end; 1

a) b) 1 n = 1 1 1 n = 1 T (p, n) c 1 n/p + c log p c log p S(p, n) n = c 1 n/p 1 1 4 p opt = c 1 n ln /c p 1 1 4 p c) 1.7 E(p, n). n = n = 1. n = 1 1 4 p Rysunek : a) Złożoność czasowa algorytmu znjdowania sumy elementów za pomocą p procesorów, przyjęto c 1 =1., c = 1, n = ; b) osiągane przyspieszenia dla różnych wartości n; c) osiągane efektywności dla różnych wartości n Tabela : Ilustracja działania algorytmu wyznaczania sum prefiksowych Inic. j = j =1 j = s[1] s[] () + s[] 1 ()+1 ()++1 s[4] (1)+ (+)+1+ s[] 4 ()+4 (+1)++4 ()++1++4 s[] 7 (4)+7 (1+)+4+7 (+)+1++4+7.. Znajdowanie minimum w czasie O(1) Dane wejściowe: Tablica a[1..n] umieszczona w pamięci wspólnej modelu CRCW PRAM o n procesorach. Zmienne lokalne przechowujące rozmiar n oraz numer procesora w postaci pary zmiennych i oraz j. Dane pomocnicze: Tablica t[1..n] umieszczona w pamięci wspólnej. Dane wyjściowe: Wartość min{a[i]}, dlai = 1,,..., n, zwracana przez instrukcję return. Jeśli wartości minimalnych jest więcej, to zwracana jest wartość minimalna a[i] położona najbliżej początku tablicy a. 1. begin. parfor P i,j, i =1,1 j n do {pracują procesory w pierwszym wierszu}. t[j] := ;{inicjalizacja tablicy t} 4. end for;. parfor P i,j,1 i, j n do {pracują wszystkie procesory}. if a[i] <a[j] then {a[j] nie jest elementem minimalnym} 7. t[j] :=1; 8. end if; {t[j] = oznacza, że a[j] =min{a[i]}, dlai =1,,..., n} 11

9. if (t[i] =)and (i <j) then 1. t[j] :=1; 11. end if; {tylko dla jednego j zachodzi t[j] =} 1. end for; 1. parfor P i,j, i =1,1 j n do {pracują procesory w pierwszym wierszu} 14. if t[j] =then 1. return a[j]; {zwrócenie elementu minimalnego} 1. end if; 17. end for; 18. end; Załóżmy, że algorytm przetwarza tablicę o postaci a[1..4] = [, 1,, 1]. P i,j 1 4 1 a[1] <a[1] a[1] <a[] a[1] <a[] a[1] <a[4] a[] <a[1] a[] <a[] a[] <a[] a[] <a[4] a[] <a[1] a[] <a[] a[] <a[] a[] <a[4] 4 a[4] <a[1] a[4] <a[] a[4] <a[] a[4] <a[4] t 1 1 (po wyk. kroku 8.) t 1 1 1 (po wyk. kroku 1.) Rysunek 1: Ilustracja działania algorytmu..7 Sortowanie w czasie O(log n) { 1, gdy a[i] >a[j], lub gdy a[i] =a[j] orazi>j, w[i, j] = (1), w przeciwnym razie. Dane wejściowe: Tablica a[1..n] umieszczona w pamięci wspólnej modelu CREW PRAM o n procesorach. Zmienne lokalne przechowujące rozmiar n oraz numer procesora w postaci pary zmiennych i oraz j. Dane pomocnicze: Tablica w[1..n, 1..n] umieszczona w pamięci wspólnej. Zmienne lokalne k oraz r. Dane wyjściowe: Tablica b[1..n] umieszczona w pamięci wspólnej zawierająca wartości elementów tablicy a[1..n] w porządku niemalejącym. 1. begin. parfor P i,j,1 i, j n do. if (a[i] >a[j]) or ((a[i] =a[j]) and (i >j)) then 4. w[i, j] :=1;. else. w[i, j] :=; 7. end if; 8. end for; 9. k := n; 1. for r := 1 to log n do {zliczanie jedynek w wierszach tablicy w} 11. parfor P i,j,1 i n, 1 j k/ do 1. w[i, j] :=w[i, j]+w[i, k +1 j]; 1. end for; 14. k := k/ ; 1. end for; {wartości w[i, 1] wyznaczają pozycje elementów a[i] w tablicy b} 1. parfor P i,j,1 i n, j =1do 17. b[w[i, 1] + 1] := a[i]; 18. end for;. end; 1

P i,j 1 4 1 a[1] a[1] a[1] a[] a[1] a[] a[1] a[4] a[] a[1] a[] a[] a[] a[] a[] a[4] a[] a[1] a[] a[] a[] a[] a[] a[4] 4 a[4] a[1] a[4] a[] a[4] a[] a[4] a[4] w 1 4 1 1 1 1 1 1 4 1 1 Rysunek : Relacje sprawdzane przez procesory oraz postać tablicy w..8 Mnożenie macierzy Dane wejściowe: Macierze a[1..n, 1..n] ib[1..n, 1..n] umieszczone w pamięci wspólnej modelu CREW PRAM o n procesorach. Zmienne lokalne przechowujące rozmiar n (n = r dla pewnego całkowitego r>) oraz numer procesora w postaci zmiennych i, j oraz k. Dane pomocnicze: Macierz t[1..n, 1..n, 1..n] umieszczona w pamięci wspólnej. Zmienna lokalna l. Dane wyjściowe: Iloczyn macierzy c = a b umieszczony w pamięci wspólnej. 1. begin. parfor P i,j,k,1 i, j, k n do. t[i, j, k] :=a[i, k] b[k, j]; {obliczanie składowych iloczynów skalarnych} 4. end for;. for l := 1 to log n do {sumowanie składowych iloczynów skalarnych}. parfor P i,j,k,1 i, j n, 1 k n/ l do 7. t[i, j, k] :=t[i, j, k 1] + t[i, j, k]; 8. end for; 9. end for; 1. parfor P i,j,k,1 i, j n, k =1do 11. c[i, j] :=t[i, j, 1]; 1. end for; 1. end;. Algorytmy dla modelu sieciowego..1 Mnożenie macierzy przez wektor w jednowymiarowym torusie Dane wejściowe: Podmacierze b = a[(i 1)r +1..ir, 1..n], r = n/p, orazwektorx[1..n], umieszczone w procesorach P i pracujących asynchronicznie, 1 i p, połączonych w pierścień. Zmienne lokalne w każdym procesorze P i przechowujące rozmiar n oraz numer procesora w postaci zmiennej i. Dane pomocnicze: Wektory y[1..n/p] iz[1..n] umieszczone w pamięci lokalnej. Zmienne lokalne j i k. Dane wyjściowe: Iloczyn z = ax umieszczony w procesorze P 1. 1. begin. {Obliczenie wektora y = bx przez procesory P i,1 i p.}. for k := 1 to n/p do 4. y[k] :=b[k, 1] x[1];. for j := to n do. y[k] :=y[k]+b[k, j] x[j]; 7. end for; 8. end for; 9. if i =1then {procesor P 1 przesyła wektor y wprawo} 1. send(y, prawy); 11. else {pozostałe procesory odbierają dane z procesora położonego po lewej stronie} 1. receive(z[1..(i 1)r],lewy); 1. z[1..ir] := z[1..(i 1)r] y; {dopisanie obliczonego wektora y} 14. send(z[1..ir],prawy); 1. end if; 1. if i =1then 1

17. receive(z[1..n],lewy); {odebranie przez procesor P 1 końcowego wyniku} 18. end if;. end;.. Mnożenie macierzy przez macierz w dwuwymiarowym torusie Dane wejściowe: Macierze a[1..n, 1..n] ib[1..n, 1..n], których elementy a[i, j] ib[i, j] umieszczone są w pamięciach lokalnych procesorów P i,j. Zmienne lokalne w każdym procesorze przechowujące rozmiar n oraz numer procesora w postaci zmiennych i oraz j. Dane pomocnicze: Zmienna lokalna k w każdym procesorze P i,j. Dane wyjściowe: Iloczyn macierzy c = ab. Elementy macierzy c[i, j] umieszczone są w zmiennych lokalnych c procesorów P i,j. 1. begin. {Faza 1: Zmodyfikowanie dystrybucji elementów macierzy a i b wtorusie.}. for k := to n do 4. parfor P i,j,1 i, j n do. if i k then {przemieszczenie wierszy macierzy a cyklicznie w lewo}. a prawy(a); 7. end if; 8. if j k then {przemieszczenie kolumn macierzy b cyklicznie w górę} 9. b dół(b); 1. end if; 11. end for; 1. end for; 1. {Faza : Obliczanie iloczynu macierzy a i b.} 14. for k := 1 to n do 1. parfor P i,j,1 i, j n do 1. if k =1then 17. c := a b ; 18. else. a prawy(a);. b dół(b); 1. c := c + a b ;. end if;. end for; 4. end for;. end;.. Problem redukcji w kostce Dane wejściowe: Podtablice a[1.. n/p ] zawierające fragmenty tablicy a[1..n] umieszczone w pamięciach lokalnych p procesorów kostki. Zmienne lokalne przechowujące rozmiar n, liczbę procesorów p oraz numer procesora i, i<p. Dane pomocnicze: Zmienna lokalna rozmiar przechowująca rozmiar podtablicy a danego procesora oraz zmienne lokalne d, j i pom. Dane wyjściowe: Wartość n i=1 a[i] umieszczona w zmiennej sum procesora P. 1. begin. parfor P i, i<pdo. sum := a[1]; 4. if i<(n mod p) then. rozmiar := n/p ;. else 7. rozmiar := n/p ; 8. end if; 14

a) a 1,1 a 1, a 1, b 1,1 b, b, a, a, a,1 b,1 b, b 1, a, a,1 a, b,1 b 1, b, b) a 1, a 1, a 1,1 b,1 b, b 1, a, a,1 a, b,1 b 1, b, a,1 a, a, b 1,1 b, b, c) a 1, a 1,1 a 1, b,1 b 1, b, a,1 a, a, b 1,1 b, b, a, a, a,1 b,1 b, b 1, Rysunek : Dystrybucja elementów macierzy a oraz b pomiędzy procesorami po a) pierwszej, b) drugiej i c) trzeciej iteracji instrukcji for w krokach 14 4 9. for j := to n/p do {sumowanie w grupach} 1. if j rozmiar then {niektóre procesory mają mniejsze grupy} 11. sum := sum + a[j]; 1. end if; 1. end for; 14. end for; 1. for j := log p 1 downto do {sumowanie sum obliczonych w grupach} 1. d := j ; 17. parfor P i, i<ddo 18. pom [i + d]sum;. sum := sum + pom;. end for; 1. end for;. end; 1

Rozgłaszanie 1. for j := to log p 1 do. d := j ;. parfor P i, i<ddo 4. [i + d]sum sum;. end for;. end for; (a) (b) P 1 1 P 1 P 7 P 7 P 1 P P P 7 P 14 P 4 P 7 P P 14 P 4 P P (c) (d) P P 7 P P 7 P 1 11 P P 1 P P 4 P P 4 P P P P P Rysunek 4: Ilustracja rozwiązywania problemu redukcji w kostce trójwymiarowej: przykładowe wartości podlegające sumowaniu (wyznaczone w wierszach 14) (a) oraz wartości po pierwszej (b), drugiej (c) i trzeciej (d) iteracji w wierszach 1 1 algorytmu na s. 14..4 Znajdowanie sum prefiksowych w kostce Dane wejściowe: Zmienne lokalne b w każdym procesorze kostki zainicjalizowane w taki sposób, że wartością tej zmiennej w procesorze P jest element x 1, w procesorze P 1 element x itd. Zmienne lokalne przechowujące liczbę procesorów p oraz numer procesora i, i<p. Dane pomocnicze: Zmienna lokalna j oraz m. Dane wyjściowe: Wartości zmiennych s w procesorach P i, i<p, będące sumami prefiksowymi s i,1 i p. 1. begin. parfor P i, i<pdo. s := b; {inicjalizacja wartości sum prefiksowych} 4. end for;. m := i;. for j := to log p 1 do 7. parfor P i, m mod = do {j-ty bit numeru procesora i jest równy } 8. [i + j ]pom b; 9. end for; 1. parfor P i, m mod do 11. s := s + pom; 1. b := b + pom; 1. [i j ]b b; 14. end for; 1

1. m := m div ; 1. end for; 17. end; a) b) x x x 8 x 8 x x x 78 x 78 11 111 11 111 x x 1 11 x 1 x 1 1 11 x 4 x 4 x 4 x 4 1 x x 11 x 7 x 7 1 x x 11 x 7 x 78 x 1 x 1 1 x x x 1 x 1 1 x x 4 c) d) x x 8 x 8 x 8 x 1 x 18 x 18 x 18 11 111 11 111 x 1 x 14 1 11 x 1 x 18 1 11 x 14 x 14 x 14 x 18 1 x x 8 11 x 7 x 8 1 x 1 x 18 11 x 17 x 18 x 1 x 14 1 x 1 x 14 x 1 x 18 1 x 1 x 18 Rysunek : Wartości zmiennych s i b w procesorach kostki a) przed wykonaniem iteracji for w wierszach 1, a następnie po wykonaniu b) pierwszego, c) drugiego i d) trzeciego przebiegu tej iteracji.. Problem redukcji w sieci doskonale przetasowanej Dane wejściowe: Tablica a[1..n], której poszczególne elementy zostały umieszczone w zmiennych lokalnych a procesorów P i, i<p, p = n. Zmienne lokalne przechowujące liczbę procesorów p oraz numer procesora i, i<p. Dane pomocnicze: Zmienne lokalne b oraz j. Dane wyjściowe: Wartość p i=1 a[i] umieszczona w zmiennych a procesorów P i, i<p. 1. begin. for j := 1 to log p do. parfor P i, i<pdo 4. tasuj (a);. b := a;. wymień(b); 7. a := a + b; 8. end for; 9. end for; 1. end;.. Problem redukcji w siatce dwuwymiarowej 1. begin. for i := m 1 downto 1 do. parfor P j,i,gdzie1 j m do {aktywna kolumna i} 17

a a a a 1 1 4 4 4 4 4 4 7 7 przed tasuj(a) po przed wymień(a) po Rysunek : Operacje tasuj i wymień a) 1 4 7 b) 4 4 8 8 1 1 c) 1 1 1 1 1 1 1 1 d) 8 8 8 8 8 8 8 8 Rysunek 7: Wartości zmiennych a w procesorach sieci doskonale przetasowanej a) przed wykonaniem iteracji for w wierszach 9, a następnie po wykonaniu b) pierwszego, c) drugiego i d) trzeciego przebiegu tej iteracji (p =8) 4. t[j, i] a[j, i +1];. a[j, i] :=a[j, i] +t[j, i];. end for ; 7. end for ; 8. for i := m 1 downto 1 do 9. parfor P i,1 do 1. t[i, 1] a[i +1, 1] ; 11. a[i, 1] := a[i, 1] + t[i, 1] ; 1. end for ; 1. end for ; 14. end ; 18

ind a tasuj a wymień b a tasuj a wymień b a tasuj a wymień b a 9 1 1 4 9 1 4 4 1 4 4 1 4 9 4 1 4 1 4 1 7 4 1 Rysunek 8: Redukcja w sieci doskonale przetasowanej

4 9 1 8 1 7 4 Rysunek 9: Redukowane (dodawane) wartości w siatce dwuwymiarowej.4 Algorytm dla komputera CREW MIMD 1. begin. parfor P i,gdziei =do wykonuje procesor P. suma globalna := ; 4. end for;. parfor P i,gdzie i p 1 do Równoległa praca p procesorów.. suma lokalna := ; 7. for j := i to n 1 step p do 8. suma lokalna := suma lokalna + a[j]; 9. end for ; 1. lock(suma globalna); 11. suma globalna := suma globalna + suma lokalna ; 1. unlock(suma globalna); 1. end for ; 14. end ; 4 Komputery równoległe klasy architektur oraz sieci połączeń Literatura [1] Ben-Ari, M., Podstawy programowania współbieżnego i rozproszonego, WNT, Warszawa 9. [] Czech, Z.J., Wprowadzenie do obliczeń równoległych, PWN, Warszawa 1, wyd. II. [] Herlichy, M., Shavit, N., Sztuka programowania wieloprocesorowego, PWN, Warszawa, 1. [4] Huzar, Z., i in., Ada 9, Helion, Gliwice 98. [] Neapolitan, R., Naimipour, K., Podstawy algorytmów z przykładami w C++, Helion, Gliwice 4 (rozdział 11 Wprowadzenie do algorytmów równoległych).

a) b) 4 1 17 9 9 1 1 1 7 9 c) d) 7 7 11 11 14 14 e) f) Rysunek : Redukcja w siatce dwuwymiarowej. Po a) pierwszym, b) drugim, c) trzecim, d) czwartym, e) piątym i f) szóstym dodawaniu 1

J J J 4 J J J 1 i 1 i i i 1 i i i 4 i 1 i i i 4 i i 1 i i i 4 i i i 1 i i i 4 i i i 7 i 1 i i i 4 i i i 7 i 8 czas 1 4 7 8 (w cyklach) Rysunek 1: Potokowe wykonywanie strumienia instrukcji we/wy Centralna jednostka steruj aca Pamiȩć z programem E 1 Pamiȩć lokalna E Pamiȩć lokalna Sieć po l aczeń E p Pamiȩć lokalna Rysunek : Struktura komputera macierzowego (SIMD)

Pamiȩć wspólna we/wy M 1 M M m Sieć po l aczeń P 1 P P p Pamiȩć Pamiȩć Pamiȩć lokalna lokalna lokalna Rysunek : Struktura komputera wieloprocesorowego (MIMD) z pamięcią wspólną P 1 Pamiȩć lokalna P Pamiȩć Sieć po l aczeń lokalna P p Pamiȩć lokalna we/wy Rysunek 4: Struktura komputera wieloprocesorowego (MIMD) z pamięcią rozproszoną a) b) Komputer dostȩpowy Komputery (wȩz ly) Komputer dostȩpowy Komputery (wȩz ly) Rysunek : Klaster stacji roboczych a) połączonych pojedynczym przewodem, b) w postaci pierścienia

Sieć po l aczeń M M M P P P P P P P P P SMP 1 SMP SMP n Rysunek : Klaster multiprocesorów symetrycznych (SMP); przez M i P oznaczono odpowiednio pamięci wspólne oraz procesory a) b) Rysunek 7: Sieć połączeń a) statyczna oraz b) dynamiczna. Węzły sieci (procesory lub bloki pamięci) oznaczono kółkami bez zacieniowania, a przełączniki kółkami zacieniowanymi magistrala M M U linie adresowe linie danych linie steruj ace K K K P P P Rysunek 8: Struktura komputera z siecią połączeń opartą na magistrali (oznaczenia: P procesory, M bloki pamięci wspólnej, K pamięci podręczne, U urządzenia wej/wyj) 4

M 1 M M M m P 1 P P P p Rysunek 9: Struktura sieci z przełącznicą krzyżową P 1 M 1 P S 1 S S k M P p M m Rysunek 4: Sieć wielostopniowa: S 1, S,..., S k są stopniami sieci

P M P 1 M 1 P 1 M 1 P 11 M 11 P 1 M 1 P 11 M 11 P 11 M 11 P 111 M 111 Rysunek 41: Sieć omega dla p =8 P M P 1 M 1 P 1 B M 1 P 11 M 11 P 1 f A M 1 P 11 M 11 P 11 A g M 11 P 111 M 111 Rysunek 4: Stan przełączników sieci omega podczas transmisji danych pomiędzy procesorem P 1 a blokiem pamięci M 11