4. Úvod do paralelismu, metody paralelizace algoritmů Ing. Michal Bližňák, Ph.D. Ústav informatiky a umělé inteligence Fakulta aplikované informatiky UTB Zĺın Paralelní procesy a programování, Zĺın, 26. února 2014 1 / 20
Motivace pro paralelizaci algoritmů 2 / 20
Udržitelný nárust výkonu výpočetní techniky Tvrzení o trvale udržitelném nárustu výkonu výpočetní techniky se přeneseně opírá o platnost Mooroveova zákona. Mooreův zákon Počet tranzistorů, které mohou být umístěny na integrovaný obvod se při zachování stejné ceny zhruba každých 18 měsíců zdvojnásobí. Je tento trend udržitelný i do budoucna? Lze pokračovat v miniaturizaci čipů a jejich základních komponent (tranzistorů)? Lze pokračovat v navyšování pracovní frekvence procesorů a má to vůbec smysl? 3 / 20
Proč nemusí Mooreoův zákon platit i nadále Prostorová omezení díky vlastnostem současných používaných materiálů Navyšování pracovní frekvence mikročipů je energeticky i technologický náročné Navyšování pracovní frekvence mikročipů může postrádat smysl, viz. argument rychlosti světla: rychlost světla je cca 30 cm/ns - signály v mikrochipu se šíří zlomkem této rychlosti, je-li velikost mikročipu cca 3 cm, můžeme říci, že informace nesená signálem na druhou stranu čipu po přímé cestě nemůže být transportována vícekrát než 10 10 za sekundu, redukcí vzdálenosti o násobky 10, či dokonce 100 se zvýší množství provedených operací zase jenom o tyto násobky, což je vzhledem k nárokům na danou minimalizaci zanedbatelný nárůst. 4 / 20
Jak udržet Mooreův zákon v platnosti? Využitím úplně nových netradičních konceptů kvantové počítače,... Paralelizací stávajících typů výpočetních systémů víc hlav víc ví... 5 / 20
Příklad paralelizace výpočetní úlohy Zadání: Nalezněte všechna prvočísla z množiny celých čísel N {0, 1,..., n}. Sekvenční (neparalelizované) řešení: 1 Mějme pole hodnot v rozsahu < 2, n > a proměnnou označující aktuální prvočíslo v poli a tu nastavme na první prvek pole. 2 Mějme proměnnou ukazující na právě zpracovávaný prvek pole; hodnotu toho ukazatele nastavme na druhou mocninu hodnoty aktuálního prvočísla. 3 Z pole odstraníme prvek o hodnotě uložené v ukazateli. 4 Z pole odstraníme všechny prvky o hodnotě uložené v ukazateli postupně navyšované o hodnotu aktuálního prvočísla až do n. 5 Jako aktuální prvočíslo nastavme další následující hodnotu uloženou v poli. 6 Pokračujeme v bodě 3. 6 / 20
Postup sekvenčního výpočtu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 2 2 3 5 7 9 11 13 15 17 3 2 3 5 7 11 13 17 Tabulka: Iterace algoritmu Eratosthenova síta nad vstupním polem P Aktuální prvočíslo 1, 2,, n Ukazatel na prvek Obrázek: Implementace algoritmu na sekvenčním výpočetním stroji 7 / 20
Paralelizaci na systému se sdílenou pamětí (implementace) P 1 Ukazatel na prvek P 2 Ukazatel na prvek P p Ukazatel na prvek SM 1, 2,, n Aktuální prvočíslo I/O zařízení Obrázek: Implementace algoritmu na paralelním SMP systému 8 / 20
Paralelizaci na systému se sdílenou pamětí (časové charakteristiky) (a) Výpočetní čas (b) Zrychlení Obrázek: Paralelní implementace Eratosthenova síta na SMP stroji 9 / 20
Paralelizaci na systému s distribuovanou pamětí (implementace) Aktuální prvočíslo Ukazatel na prvek Aktuální prvočíslo Ukazatel na prvek P 1 P 2 1, 2,, n/p n/p + 1, 2,, 2n/p Komunikace P p Aktuální prvočíslo Ukazatel na prvek n- n/p + 1, 2,, n Obrázek: Implementace algoritmu na paralelním MIMD stroji 10 / 20
Paralelizaci na systému s distribuovanou pamětí (časové charakteristiky) (a) Výpočetní čas (b) Zrychlení Obrázek: Paralelní implementace Eratosthenova síta na MIMD stroji 11 / 20
12 / 20
Typy paralelismu: Datový paralelismus Funkcionální paralelismus Instrukční fronty (Pipelining) Při hledání vhodného způsobu paralelizace algoritmu je žádoucí vytvořit tzv. graf datové závislosti: orientovaný graf uzly představují úlohy prováděné nad datovými instancemi hrany představují závislosti mezi těmito úlohami 13 / 20
Datový paralelismus Graf datové závislosti obsahuje nezávislé úlohy provádějící totožné operace nad různými instancemi dat. A x 0 x 1 x 2 B B B C Obrázek: Datový paralelismus 14 / 20
Funkcionální paralelismus Graf datové závislosti obsahuje nezávislé úlohy provádějící různé operace nad různými instancemi dat. A x 0 x 1 x 2 B C D E Obrázek: Funkcionální paralelismus 15 / 20
Instrukční fronty (pipelining) Graf datové závislosti obsahuje jednoduchou cestu nebo větev provádějící různé závislé operace nad jednou instancí dat. A x 0 x 1 x 2 x 3 B x 0 x 1 x 2 E x 0 x 1 Obrázek: Instrukční fronta (pipeline) 16 / 20
17 / 20
Fosterova metodika návrhu paralelního algoritmu Návrh paralelního algoritmu dle Fostera spočívá ve 4 krocích: 1 Rozložení - nalezení co největšího množství výpočetních úloh a datových instancí, které mohou být zpracovány souběžně. 2 Komunikace - nalezení komunikačních kanálů mezi rozloženými subjekty. 3 Aglomerace - sloučení rozložené výpočetní úlohy do větších logických výpočetních celků (minimalizace komunikační režie). 4 Mapování - přiřazení logických výpočetních celků k fyzickým výpočetním uzlům paralelního systému. 18 / 20
Fosterova metodika návrhu paralelního algoritmu Problém rozložení komunikace mapování aglomerace Obrázek: Fosterova metodika návrhu paralelního algoritmu 19 / 20
Děkuji za pozornost A to je pro dnešek vše. Nastává čas pro vaše dotazy... 20 / 20