Upload
jela
View
44
Download
0
Embed Size (px)
DESCRIPTION
Paralelní programování. Inspirace. Bucket -sort. Algoritmus přirozeně paralelní – přirozené rozdělování, segmentace, rozkládání Předpoklady: čísla jsou ve známém intervalu nap ř. čísla jsou v cílovém intervalu rovnoměrně distribuovaná Interval se rozdělí do m stejně velkých intervalů - PowerPoint PPT Presentation
Citation preview
Paralelní programování
Inspirace
Bucket-sort
• Algoritmus přirozeně paralelní – přirozené rozdělování, segmentace, rozkládání
• Předpoklady:• čísla jsou ve známém intervalu • např.
• čísla jsou v cílovém intervalu rovnoměrně distribuovaná
• Interval se rozdělí do m stejně velkých intervalů
• každé číslo je umístěno do správného kyblíku
Bucket-sort sekvenčně
• Velikost kyblíku je při rovnoměrném rozdělení• Umístění čísla do kyblíku – jedna operace
• Co s kyblíkem?• třeba quicksort –
• Optimistický odhad:•
Bucket-sort paralelně
• Pro každý kyblík použijeme jeden procesor• dobře škálovatelné
• Varianty• Jeden procesor rozdělí na začátku práci• zpoždění n
• Každý procesor si vybere svá čísla• nadbytečná porovnávání
• Každý procesor si vybere svá čísla a vymaže je ze seznamu – blokují se
• Partitioning
Quicksort
• Podobný• seznam se dělí podle jednoho prvku• pro druhý seznam se použije další procesor• je třeba se rozhodnout jestli ještě má smysl posílat
zprávu dalšímu procesoru• seznamy nejsou stejně velké• špatná škálovatelnost• není moc vhodné
Rozděl a panuj
• rozdělení úlohy na pod-úlohy, které jsou řešeny nezávisle
• split a merge• počet úloh je závislý na způsobu dělení a
slučování• rozdělení děláme jen pokud je to účelné• úlohy jsou přibližně stejně velké• úloh je dostatek pro procesory• rozdělení nezabere více času než přímé zpracování
Vyplatí se to?
• Čas zaslání zprávy:
• n – počet datových jednotek• – latence, zaslání prázdné zprávy
• Předpokládáme stejně výkonné prvky, stejné cesty, …
• BigO notace je zrádná
Příklad
• Startup time zaslané zprávy je 1s • Výkon procesoru je 100 GFLOPS (Intel i7)• Jedná zpráva musí generovat alespoň 100 000
FP operací!
• n ≈ 23 000• latency hiding:• nb send• parallel slackness
Příklad 2
• Suma n čísel a dva procesory, jeden procesor má všechny čísla.
• Postup1. procesor 1 zašle n/2 čísel procesoru 22. oba procesory spočítají sumu souběžně3. procesor 2 zašle výsledky procesoru 14. procesor 1 sečte částečné sumy do celkového
výsledku
• kroky 2 a 4
Příklad 2
• kroky 1 a 3• Časová složitost – • Komunikační složitost – • Celková časová složitost –
Výsledek
• Pokud je komunikační a výpočetní časová složitost stejná• algoritmus bude neefektivní• zvyšování n asi vůbec nepomůže
• Časová složitost výpočtu musí být vyšší než časová složitost komunikace
• Optimální rozložení• PC * NP = ST• rozdělené na n procesorů s • rozdělené na procesorů s O(1)
Zasílání zpráv
• Synchronní (blokující):• send(data, dest)• vrátí se až v okamžiku, kdy je zpráva celá doručena
• recv(data, source)• vrátí se až v okamžiku, kdy je zpráva celá přijata
• kroky:• požadavek na zaslání dat• potvrzení• zaslání dat
• rendez-vous
Zasílání zpráv
• Asynchronní (neblokující):• send(data, dest) / post()• vrátí se až v okamžiku, kdy je zpráva uložena do bufferu
• recv(data, source)• vrátí se až v okamžiku, kdy je v bufferu zpráva
• kroky:• zaslání dat• počkání na data• příjem dat
• producent-konzument