PARALELNÍ PROCESY A PROGRAMOVÁNÍ

Podobné dokumenty
Datové struktury 2: Rozptylovací tabulky

Základní datové struktury III: Stromy, haldy

PARALELNÍ PROCESY A PROGRAMOVÁNÍ

Operace ALU. INP 2008 FIT VUT v Brně

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Algoritmizace prostorových úloh

IB109 Návrh a implementace paralelních systémů. Analytický model paralelních programů. RNDr. Jiří Barnat, Ph.D.

Příklady paralelních algoritmů

Stromy, haldy, prioritní fronty

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Algoritmy I, složitost

Paralelní a distribuované výpočty (B4B36PDV)

Princip funkce počítače

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3

Dynamické programování

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Architektura počítačů Logické obvody

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

IB109 Návrh a implementace paralelních systémů. Kolektivní komunikační primitava. RNDr. Jiří Barnat, Ph.D.

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

Základní komunikační operace

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Pokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010

NPRG030 Programování I, 2018/19 1 / :03:07

Zavedení a vlastnosti reálných čísel

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Architektura počítačů Logické obvody

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

Algoritmizace a programování

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Algoritmizace řazení Bubble Sort

Paralelní algoritmy v lineární algebře. Násobení matic

Rekurzivní algoritmy

Časová a prostorová složitost algoritmů

0.1 Úvod do lineární algebry

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Paralelní programování

Zimní semestr akademického roku 2014/ prosince 2014

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Operace s maticemi. 19. února 2018

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

0.1 Úvod do lineární algebry

Návrh Designu: Radek Mařík

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

Strojový kód. Instrukce počítače

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

MĚŘENÍ A ANALÝZA ELEKTROAKUSTICKÝCH SOUSTAV NA MODELECH. Petr Kopecký ČVUT, Fakulta elektrotechnická, Katedra Radioelektroniky

ALGEBRA. Téma 5: Vektorové prostory

1. Databázové systémy (MP leden 2010)

SČÍTAČKA, LOGICKÉ OBVODY ÚVOD TEORIE

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni

Lineární algebra Operace s vektory a maticemi

Základní pojmy teorie množin Vektorové prostory

4. Úvod do paralelismu, metody paralelizace

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

1 Vektorové prostory.

Systém adresace paměti

Binární vyhledávací stromy pokročilé partie

[1] samoopravné kódy: terminologie, princip

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Paralelní a distribuované výpočty (B4B36PDV)

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Báze a dimenze vektorových prostorů

5. Sekvenční logické obvody

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

Michal Krátký. Úvod do programování. Cíl kurzu. Podmínky získání zápočtu III/III

Pohled do nitra mikroprocesoru Josef Horálek

5 Orientované grafy, Toky v sítích

(Cramerovo pravidlo, determinanty, inverzní matice)

Cílem této kapitoly je uvedení pojmu matice a jejich speciálních typů. Čtenář se seznámí se základními vlastnostmi matic a s operacemi s maticemi

Paralelní grafové algoritmy

KOMBINAČNÍ LOGICKÉ OBVODY

Základy algoritmizace a programování

5. Paralelní sčítání, bitonické třídění(zapsal: Petr Jankovský)

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

Časová složitost algoritmů

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Operace s maticemi

Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno

13. Třídící algoritmy a násobení matic

Matice. a m1 a m2... a mn

Arnoldiho a Lanczosova metoda

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Základní operace. Prefix sum. Segmentovaný prefix-sum

V kompletním grafu nenastává problém. Každý uzel je soused se zbytkem vrcholů a může s nimi kdykoliv komunikovat.

IB111 Úvod do programování skrze Python

II. Úlohy na vložené cykly a podprogramy

Digitální učební materiál

Testování prvočíselnosti

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Zadání semestrálního projektu Algoritmy II. letní semestr 2017/2018

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

Algoritmizace a programování

Anotace. Informace o praktiku z programování!!! Direktivy překladače Soubory (textové) Quicksort Metoda rozděl a panuj

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Transkript:

PARALELNÍ PROCESY A PROGRAMOVÁNÍ 12 Paralelní algoritmy - paralelní prefixové součty Ing Michal Bližňák, PhD Zlín 2013 Tento studijní materiál vznikl za finanční podpory Evropského sociálního fondu (ESF) a rozpočtu české republiky v rámci řešení projektu: CZ 107/2200/150463, MOD- ERNIZACE VÝUKOVÝCH MATERIÁLŮ A DIDAKTICKÝCH METOD

OBSAH 1 Obsah 1 Motivace pro paralelizaci redukce 3 2 Sekvenční a paralelní redukce 3 3 Sekvenční a paralelní prefixová redukce 3 31 Sekvenční prefixový součet 4 32 Paralelní prefixový součet na CdT n 5 33 Paralelní prefixový součet na Q n 6 34 Paralelní prefixový součet na EREW PRAM 6 341 Neškálovaný paralelní prefixový součet na EREW PRAM 6 342 Škálovaný paralelní prefixový součet na EREW PRAM 6 35 Segmentový paralelní prefixový součet 9 4 Aplikace paralelní prefixové redukce 9 41 Zhušt ovací problém a paralelní PrefixSort 9 42 Binární sčítačka 10 43 Paralelní QuickSort 11 5 Kontrolní otázky 13

OBSAH 2 STRUČNÝ OBSAH PŘEDNÁŠKY Motivace pro paralelizaci redukce Sekvenční a paralelní redukce Sekvenční a paralelní prefixová redukce Aplikace paralelní prefixové redukce MOTIVACE Redukce a prefixové redukce jsou jedněmi z nejčastěji používaných (a implementovaných) paralelních algoritmů sloužících jako základ dalších, složitějších algoritmů V této přednášce se seznámíme se základními vlastnostmi a implementacemi redukčních algoritmů na různých paralelních systémech CÍL Seznámit se se základními vlastnostmi a implementačními aspekty některých paralelních redukčních algoritmů

Motivace pro paralelizaci redukce 3 1 Motivace pro paralelizaci redukce Obecná redukce prvků množiny/pole je velmi častým algoritmickým problémem Operátorem redukce můžeme chápat téměř jakoukoliv (matematickou) operaci schopnou zredukovat 2 operandy do jedné výsledkové hodnoty Typicky se může jednat o součet nebo násobení, obecně však lze redukční operátor nadefinovat libovolným způsobem (např sloučení bitmap, součet prvků vícerozměrných polí, atd) Je zřejmé že časová složitost redukce se bude úzce odvíjet o od časové složitosti samotného redukčního operátoru Je-li časová složitost redukčního operátoru dostatečně vysoká, bývá výhodné redukci více prvků paralelizovat, čímž lze dosáhnout zajímavého (ideálně lineárního) zrychlení Samozřejmě je nutné brát v úvahu vhodnou granularitu a škálovatelnost problému 2 Sekvenční a paralelní redukce Obecnou redukci více operandů lze definovat následovně: Necht je dáno vstupní pole X = {x 0, x 1,, x n 1 } prvků množiny D a binární operace nad D Pak cílem redukce je vypočítat hodnotu například tak, je je uvedeno v algoritmu 1 Algoritmus 1 Triviální sekvenční redukce S 0 for i = 0 to n 1 do S = S X[i] S = x 0 x 1 x n 1 (1) Dolní i horní mez tohoto problému je SL(n) = SU(n) = Θ(n), je-li problém řešen sekvenčně Vhodnou paralelizací redukce však lze celou operaci provést v čase O(log n) při zachování cenové optimality, jak bylo diskutováno v kapitole zabývající se analýzou časové složitosti paralelních algoritmů Příklady implementace paralelní redukce na různých paralelních systémech jsou uvedeny na obrázku 1 Jak je patrné, všechny systémy byly schopny z redukovat 8 hodnot, ve 3 krocích, čili v logaritmickém čase Pseudokód paralelní redukce implementované na EREW PRAM je uveden v algoritmu 2 Algoritmus 2 Triviální paralelní redukce for j = 1,, log n do sequentially for all i = 0 to n 1 step 2 j do in parallel P i : X[i] = X[i] X[i + 2 j 1 ] S X[0] 3 Sekvenční a paralelní prefixová redukce Prefixová redukce (prefixový součet) je zobecněním redukce diskutované v kapitole 2 a má stejné časové charakteristiky Zatímco u klasické redukce je výsledkem operace pouze jedna hodnota, u prefixové redukce n hodnot dostaneme po ukončení výpočtu n výsledků

Sekvenční a paralelní prefixová redukce 4 Obrázek 1: Implementace paralelní redukce na různých typech paralelních systémů [1] Mějme vstupní pole X = x 0, x 1,, x n 1 z množiny D a asociativní binární operaci nad D Výstupem výpočtu je stejně velké pole Y, kde y i je rovno redukci počátečních i hodnot z X Čili úkolem je vypočítat pole Y = y 0, y 1,, y n 1 všech prefixů pole X tak, že y i = x 0 x 1 x i, jak je naznačeno no obrázku 2 Obrázek 2: Vstup a výstup prefixové redukce [1] Pro jednoduchost budeme v dalších kapitolách jako redukční operátor uvažovat součet, nebude-li řečeno jinak 31 Sekvenční prefixový součet Sekvenční prefixový součet je velmi triviálním algoritmem a nepotřebuje bližšího zkoumání Časová složitost je opět Θ(n) a jeho pseudokód je uveden v algoritmu 3 Algoritmus 3 Sekvenční prefixová redukce Require: i: int; sum, X[n], Y[n] : D sum X[0]; Y [0] sum for i = 1 to n 1 do sum = sum X[i] Y [i] sum

Sekvenční a paralelní prefixová redukce 5 32 Paralelní prefixový součet na CdT n Implementace paralelního prefixového součtu (PPS) na topologii d-árního stromu CdT n je již daleko zajímavější Předpokládejme ICNW nepřímého stromu kde koncové listové uzly obsahují hodnoty, z nichž má být spočten PPS Pak PPS N vstupních hodnot v listech binárního stromu CBT výšky h(cbt ) lze vypočítat ve 2h(CBT ) krocích Je-li CBT úplný, pak PPS potřebuje O(log N) kroků Celá operace PPS se na CBT rozloží do několika vzestupných a sestupných vln Každá vzestupná vlna vygeneruje další vzestupnou vlnu (pokud jsme již nedosáhli kořene stromu) a h(cbt ) sestupných vln Obrázek 3: Vzestupné a sestupné vlny na CdT [1] Při vzestupné vlně se rodičovskému listu odesílá součet hodnot přicházejících od synů Zároveň je generována sestupná vlna tak, jak je patrné z obrázku 3 Hodnoty, které v rámci sestupných vln dorazí až ke konečným listům jsou přičteny k jejich aktuální hodnotě Po doznění všech vln obsahují koncové listové uzly kompletní PPS Celý algoritmus je ilustrován na obrázku 4 Obrázek 4: Paralelní prefixový součet na CBT [1]

Sekvenční a paralelní prefixová redukce 6 33 Paralelní prefixový součet na Q n Paralelní prefixový součet na hyperkrychli je implementován jako jednoduché rozšíření algoritmu vysílání všichni-ke-všem Předpokládejme že PPS bude sčítat N hodnot Dále předpokládejme binární hyperkrychli Q n kde n = log N PPS pak bude pomocí algoritmu 4 spočítán v čase O(log N) Princip výpočtu je jednoduchý Každý procesor P i bude obsahovat dva pomocné registry: zelený a žlutý Nejprve budou oba registry v daném procesoru inicializovány stejnou vstupní hodnotou Poté následuje n paralelních fází, ve kterých si procesory vzájemně vymění obsahy zelených registrů a přičtou je k obsahům svých vlastních zelených registrů Procesor, který má v rámci dimenze, po které data putovala, vyšší adresu, přičte příchozí hodnotu také ke svému žlutému registru Po vykonání všech n fází, při kterých byla data zasílána postupně přes všechny dimenze, budou žluté registry procesorů obsahovat kompletní hodnoty PPS Adresy konkrétních procesorů představují indexy výsledků v pomyslném výstupním poli Algoritmus 4 Paralelní prefixový součet na Q n Require: i: int; zeleny, zluty, X[N] : D for all P i, i = 0,, 2 n 1 do in parallel zeleny zluty X[i] for j = 0 to n 1 do sequentially send zeleny i P i XOR 2 j receive novyzeleny P i XOR 2 j zeleny i = zeleny i + novyzeleny if i XOR 2 j < i then zluty i = zluty i + novyzeleny end if Celý postup je ilustrován na obrázku 5 34 Paralelní prefixový součet na EREW PRAM V případě paralelního prefixového součtu na EREW PRAM si budeme demonstrovat dva typy vhodných algoritmů V prvním případě se bude jednat o neškálovaný PPS kde předpokládáme, že paralelní systém disponuje stejným množstvím procesorů, jako je počet sčítaných hodnot Je zřejmé, že takový algoritmus bude cenově neoptimální a tudíž neefektivní a proto si zde uvedeme také optimální škálovaný PPS 341 Neškálovaný paralelní prefixový součet na EREW PRAM Mějme n procesorů P 0,, P n 1 a pole X = x 0,, x n 1 uložené ve sdílené paměti M[0],, M[n 1] Každý P i má pomocný registr y i Neškálovaný výpočet PPS na EREW PRAM s časovou složitostí O(log n) je uveden v algoritmu 5 a jeho průběh je ilustrován na obrázku 6 342 Škálovaný paralelní prefixový součet na EREW PRAM Jak je patrné z obrázku 6, velké množství procesorů nemá v průběhu neškálovaného EREW PRAM PPS dostatek užitečné práce, čímž za předpokladu malé časové složitosti redukční operace narůstá podíl paralelní režie ve výpočtu a tím i paralelní cena Abychom dosáhli efektivní paralelizace, bude zapotřebí zvolit lepší granularitu a tím zajistit dostatek práce pro všechny procesory v průběhu celého výpočtu O to se snaží škálovaná varianta EREW PRAM PPS

Sekvenční a paralelní prefixová redukce 7 Obrázek 5: Paralelní prefixový součet na Q n [1] Obrázek 6: Neškálovaný paralelní prefixový součet na EREW P RAM [1] Uvažujme vstupní pole X = {x 0, x 1,, x n 1 } a p procesorů P 0,, P p 1 Necht q = n p Rozdělíme X do p subpolí X 0,, X p 1 po q prvcích a přidělíme každé X i příslušnému P i V první fázi každý P i vypočte prefixový součet nad X i sekvenčně Tato fáze zabere O( n p ) kroků Ve druhé fázi bude vypočten prefixový součet nad pravými krajními hodnotami všech p subpolí X i Jelikož je počet subpolí stejný jako počet procesorů, lze tuto fázi implementovat pomocí neškálovaného EREW PRAM PPS a provést ji v O(log p) krocích V závěrečné třetí fázi bude ke všem hodnotám subpolí X i, i = 1,, p 1 s výjimkou nejpravějšího prvku přičtena hodnota nejpravějšího prvku subpole X i 1 Tato operace bude trvat opět O( n p ) kroků Po této operaci bude pole X obsahoval kompletní PPS všech vstupních hodnot Celková časová složitost výpočtu bude T (n, p) = O( n p + log p), což za předpokladu n p zaručuje cenovou opti-

Sekvenční a paralelní prefixová redukce 8 Algoritmus 5 Neškálovaný paralelní prefixový součet na EREW P RAM Require: i, j : int; y i, M[n] : D for all P i, i = 0 to n 1 do in parallel y i M[i] for j = 0 to log n 1 do sequentially for all P i, i = 2 j to n 1 do in parallel y i = y i + M[i 2 j ] for all P i, i = 2 j to n 1 do in parallel M[i] = y i malitu výpočtu i při nízké časové složitosti redukční operace Pseudokód škálovaného PPS na EREW PRAM je uveden v algoritmu 6 Algoritmus 6 Škálovaný paralelní prefixový součet na EREW P RAM Require: i, j : int; S i [q], X[n], Z[p] : D for all P i, i = 0 to p 1 do in parallel P i sekvenčně výpočte pole S i = prefixový součet nad X i Z[i] S i [q 1] všechny P i vypočtou paralelně PPS nad Z pomocí algoritmu 5 for all P i, i = 1 to p 1 do in parallel for j = 0 to j < q 1 do S i [j] = S i [j] + Z[i 1] S i X i Průběh algoritmu 6 je ilustrován na obrázku 7 Obrázek 7: Škálovaný paralelní prefixový součet na EREW P RAM [1]

Aplikace paralelní prefixové redukce 9 35 Segmentový paralelní prefixový součet Segmentový paralelní prefixový součet (SPPS) je takovou modifikací základního algoritmu, kdy je vstupní pole o velikosti n rozděleno na s nestejně velkých segmentů S i a prefixové součty jsou spočteny pro segmenty Tabulka 1: Vstupní a výstupní pole segmentového PS Vstup 2 1 3 5 2 7 3 9 4 5 6 2 8 4 3 1 Výstup 2 3 6 11 2 9 12 9 13 18 24 2 10 14 17 18 Znaménko u operandů v tabulce 1 představuje krajní hodnoty u hranic segmentů Řešení tohoto problému je několik Uvažujme p jako počet procesorů P i Je-li s = p pak lze jednotlivé segmenty S i přidělit procesorům P i, které nad nimi spočtou prefixový součet v čase Θ(q i ) kde q i je počet prvků v segmentu S i Jelikož mají segmenty obecně různou velikost (a v extrémním případě budou všechny prvky obsaženy v jednom segmentu), bude celkový čas výpočtu T (n, p) = Θ(max{q i }) = O(n) Je-li n = p pak lze SPPS vypočíst v celkovém čase T (n, p) = O(log n) pomocí algoritmu 5 a modifikovaného operátoru jehož chování je popsáno v tabulce 2 Tabulka 2: Modifikovaný redukční operátor b b a a b b a (a b) b 4 Aplikace paralelní prefixové redukce Význam prefixového součtu (PS) není ani tak v implementaci samotného algoritmu ale v tom, že PS slouží jako základ dalších, složitějších algoritmů V následujících kapitolách si představíme některé z nich 41 Zhušt ovací problém a paralelní RadixSort Jednou z typických aplikací PS je implementace zhušt ovacího problému zmíněného v kapitole pojednávající o směrování v ICNW Uvažujme, že jistá podmnožina z p procesorů připojených ke vstupům nepřímé vícestupňové sítě typu n-rozměrný motýlek obf n má paket, který je nutno dopravit na druhou výstupní stranu sítě tak, aby i-tý paket, počítáno na vstupech odshora, skončil na i-tém výstupním vodiči shora Díky aplikaci PPS lze u zhušt ovacího problému rychle (v čase O(log p)) spočíst indexy cílových uzlů, tak jak je naznačeno na obrázku 8 Každý uzel, který drží paket bude obsahovat také hodnotu 1 ve vstupním poli PPS, uzel bez paketu bude obsahovat hodnotu 0 Z těchto hodnot bude spočten PS (např pomocí PPS implementovaného na stromě vnořeného do motýlka) čímž bude po závěrečné normalizaci indexů každý uzel vědět, kam má poslat svůj paket, aby byly na konci permutace zhuštěny do horní poloviny sítě Samotný zhušt ovací problém je pak základem dalšího algoritmu určeného pro paralelní třídění binárních hodnot nazvaného RadixSort Principem algoritmu je postupné třídění na základě zkoumání hodnot bitů jednotlivých řádů Necht X je posloupnost n k-bitových čísel, nultý bit je vpravo RadixSort je třídicí algoritmus, který není založen na porovnávání dvojice čísel, ale na permutaci, kterou značíme Split(X,i): čísla s

Aplikace paralelní prefixové redukce 10 Obrázek 8: Zhušt ovací problém na obf n a) počáteční hodnoty příznaků a jeden možný nepřímý strom, b) pole příznaků po PPS, c) konečné hodnoty indexů cílových řádků [1] nulovým i-tým bitem jsou zhuštěna doleva, čísla s jedničkovým i-tým bitem jsou zhuštěna doprava tak, jak je ilustrováno na obrázku 9 Algoritmus 7 Implementace paralelního třídění RadixSort Require: i: int; X[0,, 2 k 1] : D for i = 0 to k 1 do sequentially Split(X,i) Obrázek 9: Implementace paralelního RadixSortu pomocí zhušt ovacího problému [1] 42 Binární sčítačka Další z možných aplikací PS je rychlá binární sčítačka Mějme 2 n-bitová binární slova která chceme sečíst po bitech a p = n procesorů Díky existenci přenosu mezi vyššími řády při sčítání bitů binárních slov je dolní i horní sekvenční mez tohoto

Aplikace paralelní prefixové redukce 11 problému SL(n) = SU(n) = Θ(n) Paralelizací jsme schopni tento problém vyřešit v čase T (n, p) = O(1) + O(log n) Princip algoritmu je následující: Mějme dvě binární slova o velikosti n organizovaná jako bitová pole X = {x 0,, x n 1 } a Y = {y 0,, y n 1 } Výstupem bude součet těchto slov uložený v n-bitovém slovu Z = {z 0,, z n 1 } Postup výpočtu bude následující: 1 Všechny procesory P i vypočtou paralelně obsah slova B = {b 0,, b n 1 } tak, že porovnají bity x i a y i pomocí níže uvedeného předpisu: { (g)enerate ifxi = y i = 1 b i =, (s)top if x i = y i = 0, (p)ropagate jinak Doba trvání této operace bude T (n, p) = O(1) 2 Pomocí PPS a operátoru z tabulky 3 nad polem B vypočti pole B v čase T (n, p) = O(log n) Tabulka 3: Modifikovaný redukční operátor pro binární sčítačku s p g s s s s p s p g g g g g 3 Všechny procesory P i vypočtou přenosové slovo C = {c 0,, c n 1 } tak, že c 0 = 0 a c i = 1 b i 1 = g v čase T (n, p) = O(1) 4 Všechny procesory P i vypočtou výsledné slovo Z = {z 0,, z n 1 } tak, že z i = x i y i c i kde operátor představuje binární součet bez přenosu Doba této operace bude T (n, p) = O(1) Celý algoritmus je ilustrován na obrázku 10 Obrázek 10: Implementace paralelní binární sčítačky [1] 43 Paralelní QuickSort Využití SPPS si ukážeme na příkladu jedné z možných implementací paralelního třídicího algoritmu QuickSort Předpokládejme nesetříděné pole A[n] a p = n procesorů Princip činnosti algoritmu je pak následující:

Aplikace paralelní prefixové redukce 12 Algoritmus 8 Implementace paralelního třídicího algoritmu QuickSort pomocí SPPS Require: i: int; e: bool; A[n], S n [n], F [n], b s : D start: for all i = 0 to n 2 do in parallel f i = (a + i a i+1 ) Proved paralelní redukci hodnot f i pomocí operace AND a výsledek ulož do e if e = T RUE then EXIT end if for all aktuální segmenty S v A do in parallel vyber pivot b s S i [0] pošli b s všem procesorům uvnitř segmentu for all a i S do in parallel g i = (a i <> b s ), kde g i { <, =, > } /* každý S rozdělíme na 3 podsegmenty S <, S = a S > */ pomocí SPPS vypočti nové indexy prvků a i : g i = < uvnitř všech S pošli hodnoty maximálního indexu (= S < ) uvnitř všech S /* S < je rovno indexu začátku S = */ pomocí SPPS vypočti nové indexy prvků a i : g i = = uvnitř všech S pošli hodnoty maximálního indexu (= S = ) uvnitř všech S /* S < + S = je rovno indexu začátku S > */ pomocí SPPS vypočti nové indexy prvků a i : g i = > uvnitř všech S permutací segmentu S vytvoř 3 nové segmenty S = {S < S = S > } goto start

Kontrolní otázky 13 5 Kontrolní otázky Jaký je rozdíl mezi redukcí a prefixovou redukcí? Uved te alespoň 3 příklady implementace paralelní redukce na různých typech paralelních systému Uved te alespoň 3 příklady implementace paralelní prefixové redukce na různých typech paralelních systému Jaký je princip segmentové paralelní prefixové redukce? Uved te některé možné aplikace paralelní prefixové redukce

REFERENCE 14 Reference [1] Pavel Tvrdík Paralelní systémy a algoritmy Vydavatelství ČVUT, Praha, 2005