13
Paralelní programování Inspirace

Paralelní programování

  • 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

Page 1: Paralelní programování

Paralelní programování

Inspirace

Page 2: Paralelní programování

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

Page 3: Paralelní programování

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:•

Page 4: Paralelní programování

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

Page 5: Paralelní programování

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é

Page 6: Paralelní programování

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í

Page 7: Paralelní programová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á

Page 8: Paralelní programování

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

Page 9: Paralelní programování

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

Page 10: Paralelní programování

Příklad 2

• kroky 1 a 3• Časová složitost – • Komunikační složitost – • Celková časová složitost –

Page 11: Paralelní programování

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)

Page 12: Paralelní programování

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

Page 13: Paralelní programování

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