44 - Distribuované a paralelní algoritmy - algoritmy řazení, select Flashcards

1
Q

Analýza algoritmů (cena, efektivnost, ..)

A

Počet procesorů p - závisí na velikosti dat n

  • p(n) = 1 - sekvenční, c - konstantní, log n, n, n log n -> v pohodě,
  • n^2, n^r, n^n -> už není v pohodě
• Čas řešení úlohy t(n)
• Cena paralelního řešení - c(n)=p(n)∗t(n)
• Zrychlení a efektivnost
	○ Zrychlení - (t_seq (n))/(t(n)) - čas
	○ Efektivnost - (t_seq (n))/(c(n)) - čas vs cena
		§ <1 neoptiomální (přidá se režie)
		§ +−1 optimální
		§ >1 :-) 

Řazení
Optimální sekvenční algoritmus
• p(n)=1, máme jen 1 procesor
• t(n)=O(n∗log⁡n ), toto je rychlost quick-sortu
• c(n)=O(n∗log⁡n ), čas*počet procesorů je stejný jako rychlost

! ještě tu je podmínka, že u řazení nejsou žádné dva prvky rovny.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Řazení - Enumeration sort - mřížka

A

mřížka nxn, n^2 procesorů, data pošleme všude, všude porovnáme zdali je větší či menší, poté seřadíme podle počtu menších prvků

Ideální algoritmus pro paralelní zpracování (ale drahý) - Žádný paralelní algoritmus pro rozumný výpočetní model není rychlejší, bez ohledu na počet procesorů (kvantový počítač by byl rychlejší)

• Výsledná pozice prvku je dána počtem prvků, které jsou menší.
• Každý procesor může:
○ Uložit dva prvky do svých registrů A a B.
○ Porovnat obsah registrů A a B a výsledek uložit do registru RANK - K registru RANK se mohou přičítat čísla.
○ Pomocí stromového propojení předat obsah kteréhokoli registru do jiného procesoru.

Výpočet - data pošleme všude, všude porovnáme zdali je větší či menší, poté seřadíme podle počtu menších prvků:

  1. krok - distribuce hodnot na procesory (v řádcích i sloupcích). Složitost kroku O(log n)
  2. krok - porovnání hodnot a sčítání ve stromové struktuře. Složitost O(log⁡n ) - Správná pozice prvku je RANK(xi) = 1 + počet menších prvků
  3. krok - předání hodnot na správné pozice (procesory)

Topologie
• n^2 procesorů v mřížce n×n.
• Procesory jsou v každém sloupci a řádku propojeny do binárního stromu

Vlastnosti
• Počet procesorů - p(n)=O(n^2 )
• Časová složitost - t(n)=O(log⁡(n) )
• Cena - c(n)=O(n^2∗log⁡(n)), není to ideální cena

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Řazení - Odd-even transposition sort (paralelní Bubble sort) - lineární

A

Nejrychlejší algoritmus pro seřazení již seřazené posloupnosti !

Výpočet: Paralelní bubble-sort, porovnávají se jen sousedé a mohou se přehodit.

1. V prvním kroku se každý lichý procesor p_i  spojí se svým sousedem p_(i+1)   a porovnají své hodnoty je-li y i >y i+1, pak vymění své hodnoty.
2. V druhém kroku se každý sudý procesor ...totéž...
3. Po n krocích (maximálně) jsou hodnoty seřazeny.

Topologie
• Lineární pole n procesorů.

Vlastnosti
• Počet procesorů - p(n)=O(n)
• Časová složitost - t(n)=O(n)
• Cena - c(n)=O(n^2), není to ideální cena

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Řazení - Odd-even merge sort - síť topologie

A

Řadí dvě seřazené posloupnosti do jedné seřazené!!!

  • Řadí se speciální sítí procesorů (každý procesor má dva vstupní a dva výstupní kanály).
  • Každý procesor umí porovnat hodnoty na svých vstupech, menší dá na výstup L(low), a větší dá výstup H (high).

Topologie
• Sítě procesorů 1×1, 2×2, 4×4, 8×8, … (procesory propojeny tak, aby složením jednotlivých porovnání byla seřazená posloupnost)
• Seřazené posloupnosti {a1, a2}, {b1, b2} jsou spojeny do seřazené posloupnosti {c1, c2, c3, c4}

Vlastnosti
• Počet procesorů - p(n)=O(n∗log^2⁡n )
• Časová složitost - t(n)=O(log^2⁡n )
• Cena - c(n)=O(n∗log^4⁡n ), není to ideální cena

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Řazení - Merge-splitting sort - lineární pole - OPTIMÁLNÍ - pro správný počet procesorů

A

Každý procesor seřadí svou posloupnost, potom seřadí dvě, a to se opakuje, postupně lichý a sudý

  • Varianta odd-even transposition sortu, každý procesor řadí krátkou posloupnost.
  • Místo porovnání sousedů se provede spojení posloupností (O(n)) a pak rozdělení na půl.
  • Každý procesor obsahuje n/p čísel. - Po p/2 iteracích je posloupnost seřazena.

Topologie
• Lineární pole procesorů p(n) < n

Vlastnosti
• Počet procesorů - p(n) < n
• Časová složitost - t(n)=O(n∗log⁡n/p)+O(n)
• Cena - c(n)=O(n∗log(n)) + O(n∗p), je optimální pro p≤log⁡n

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Řazení - Pipeline Merge sort - lineární pole procesorů - OPTIMÁLNÍ

A
  • Rozděleno na několik kroků, první spojuje posloupnosti délky 1, pak 2, 4, 8 atd.
    • Data nejsou uložena v procesorech, ale postupně do nich vstupují.
    • Každý procesor spojuje dvě seřazené posloupnosti délky 2^(i−2)

Topologie
• Lineární pole procesorů.

Vlastnosti
• Počet procesorů - p(n)=log⁡〖(n〗)+1
• Časová složitost - t(n)=O(n)
• Cena - c(n)=O(n∗log(n)), je optimální

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Řazení - Enumeration sort - lineární pole + sběrnice

A
Legenda
		○ C_i  - počet prvků menších než x_i  (tj. kolikát bylo Y_i≤X_i)
		○ X_i  - prvek x_i
		○ Y_i  - postupně prvky x_1…x_n
		○ Z_i  - seřazený prvek Y_i
  1. Všechny registry C se nastaví na hodnotu 1.
    • Pokud vstup není vyčerpán, vstupní prvek x_i se vloží do X_i (sběrnicí) a do Y_1 (lineárním spojením) a obsah všech registrů Y se posune doprava.
    • Každý procesor s neprázdnými registry X a Y je porovná, a je-li X > Y inkrementuje C.
  2. potom to vybublá

Topologie
• Lineární pole procesorů a sběrnice, která muže přenést jednu hodnotu v každém kroku

Vlastnosti
• Počet procesorů - p(n)=n
• Časová složitost - t(n)=O(n)
• Cena - c(n)=O(n^2), není optimální

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Řazení - Minimum Extraction sort - strom

A

Stromem vždycky probublá ten nejmenší z listů nahoru do kořene

• Stromem se odebírá vždy nejmenší prvek.
	○ Každý listový procesor obsahuje jeden řazený prvek.
	○ Každý nelistový procesor umí porovnat dva prvky.

Topologie
• Strom

Vlastnosti
	• Počet procesorů - p(n)=2n−1
	• Časová složitost - t(n)=O(n)
		○ První prvek to sice zmákne v logaritmickém čase, ale potom musíme po jednom dobrat ten zbytek n−1
	• Cena - c(n)=O(n^2), není optimální
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Řazení - Bucket sort - strom - OPTIMÁLNÍ

A

data v listech, spojujeme do kořene

• Stromem spojené procesory, které řadí menší posloupnosti a pak spojení.
○ Každý listový procesor obsahuje n/m řazených prvků a umí je seřadit optimálním sekvenčním algoritmem (např. heapsort).
○ Každý nelistový procesor umí spojit dvě seřazené posloupnosti optimálním sekvenčním algoritmem.

Topologie
	• Strom
Vlastnosti
	• Počet procesorů - p(n)=〖2∗log〗⁡〖(n)−1〗
	• Časová složitost - t(n)=O(n)
	• Cena - c(n)=O(n∗log⁡n), optimální

Bucket sort se dá využít pro řazení obrovských dat, která by nemohl načíst klasický O(n∗log⁡n) algoritmus najednou. Algoritmus rozdělí vstupní data do dostatečně malých přihrádek a tyto postupně řadí v paměti, zatímco neaktivní přihrádky nechává uložené ve vnější paměti (např. pevný disk). Dalším scénářem využití bucket sortu je distribuované řazení, při kterém je každá přihrádka řazena v jiném vlákně, připadně dokonce na jiném stroji.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Řazení - Median Finding and Splitting (paralel Quick sort) - strom - OPTIMÁLNÍ

A

Máme posloupnost v kořeni, postupně dělíme podle mediánu na poloviční posloupnosti, než máme v listech seřazenou posloupnost

• Dělí posloupnost mediánem až na dvojice, které porovná.
• Každý list umí optimální sekvenční sort.
• Každý nelistový procesor umí nalézt medián v optimálním čase (např. algoritmus Select s O(n) složitostí).
• Ekvivalent Quick Sortu - liší se tím, že se jednotlivé stupně provádí paralelně.
-> QUICK SORT: vybereme medián, poté určíme pro všechny zdali je větší či menší než medián, proházíme, a to samé poté na poloviny
- - - Zvolme v zadaném poli libovolný prvek a říkejme mu pivot.
- - - Nyní můžeme pole přeházet tak, aby na jedné straně byly prvky větší než pivot, na druhé menší než pivot a pivot samotný byl umístěn přesně mezi těmito částmi.
- - - Tento postup můžeme zopakovat pro obě rozdělené části (bez pivota, ten je již umístěn na správném místě).
- - - Proceduru opakujeme tak dlouho, dokud nenarazíme na všechny triviálně řešitelné podproblémy (pole velikosti 1).
- - - V tento okamžik je celé pole seřazeno od nejvyššího prvku.

  • Má problémy, pokud jsou tam některé řazené prvky stejné
Topologie
	• Strom
Vlastnosti
	• Počet procesorů - p(n)=log⁡(n)
	• Časová složitost - t(n)=O(n)
		○ To platí ale pouze pro paralelní nalezeni medianu. 
	• Cena - c(n)=O(n∗log⁡n), optimální
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Select - sequential select (median)

A

Hledáme medián - rozzdělíme na posloupnosti, v každé najdeme medián, poté najdeme medián mediánů a rozdělíme vstupní posloupnost podle tohoto mediánu
- poté hledáme dále pro menší či větší posloupnost, podle délky posloupností

• Hledá k-tý nejmenší prvek v posloupnosti S.
○ Je-li k=|S|/2, jde o medián.
• Rozdělíme vstupní posloupnost na několik pod posloupností, ty seřadíme, najdeme v každé medián a ten vrátíme.
• Dostaneme posloupnost mediánu, tu seřadíme a najdeme v ní medián.
• Původní vstupní posloupnost rozdělíme na tři části podle nalezeného “mediánu mediánů” (L - mensi, E - rovno, G - vetší)
○ (k je délka vstupní posloupnosti dělena 2)
○ Pokud |L| > k - medián musí být v L - Zavolej algoritmus znovu tentokrát pro posloupnost L
○ Pokud |L| + |E| > k - medián musí být v E - Vrať nalezený medián
○ Jinak - medián musí být v G - Zavolej algoritmus znovu tentokrát pro posloupnost G

Vlastnosti
• Časová složitost - t(n)=O(n)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Select - Parallel select - OPTIMÁLNÍ

A

Princip algoritmu
• k-tý nejmenší prvek v posloupnosti S; EREW PRAM s N procesory P1..Pn; používá sdílené pole M o N prvcích.
Vlastnosti
• Počet procesorů - p(n)=N
• Časová složitost - t(n)=O(n/N) pro n > 4 && N < n/log⁡n
• Cena - c(n)=O(n), optimální

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Select - Parallel splitting - OPTIMÁLNÍ

A

Parallel splitting je krok 4 algoritmu Parallel select.
Princip algoritmu
• Je dána posloupnost S a číslo m; Mají se vytvořit tři posloupnosti:
○ L = {si ε S: si < m}
○ E = {si ε S: si = m}
○ G = {si ε S: si > m}

• Po tom co se vytvoří se vypočítá, kam mají procesory ukládat své výsledné posloupnosti (suma prefixů), aby mohly ukládat současně a nemuseli čekat, než budou uloženy všechny předchozí hodnoty.

Vlastnosti
• Složitost sekvenčního algoritmu je O(n)
• Paralelní řešení - máme N procesorů, které si sekvenci S rozdělí na podposloupnosti Si o délce n/N
• Počet procesorů - p(n)=〖2∗log〗⁡〖(n)−1〗
• Časová složitost - t(n)=O(n/N), pro dostatečně malé N.
• Cena - c(n)=O(n), optimální

How well did you know this?
1
Not at all
2
3
4
5
Perfectly