´ ´I PARALELN´I PROCESY A PROGRAMOVAN 12 Paraleln´ı algoritmy - paraleln´ı prefixov´ e souˇ cty Ing. Michal Bliˇ zn ˇ´ ak, Ph.D.
Zl´ın 2013
Tento studijn´ı materi´ al vznikl za finanˇcn´ı podpory Evropsk´eho soci´aln´ıho fondu (ESF) a rozpoˇctu ˇcesk´e republiky v r´amci ˇreˇsen´ı projektu: CZ 1.07/2.2.00/15.0463, MOD´ ´ ´ ˚ ´ ERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD
OBSAH
1
Obsah 1 Motivace pro paralelizaci redukce
3
2 Sekvenˇ cn´ı a paraleln´ı redukce
3
3 Sekvenˇ cn´ı a paraleln´ı prefixov´ a redukce 3.1 Sekvenˇcn´ı prefixov´ y souˇcet . . . . . . . . . . . . . . . . . . . . . . 3.2 Paraleln´ı prefixov´ y souˇcet na CdTn . . . . . . . . . . . . . . . . . 3.3 Paraleln´ı prefixov´ y souˇcet na Qn . . . . . . . . . . . . . . . . . . 3.4 Paraleln´ı prefixov´ y souˇcet na EREW PRAM . . . . . . . . . . . 3.4.1 Neˇsk´ alovan´ y paraleln´ı prefixov´ y souˇcet na EREW PRAM ˇ alovan´ 3.4.2 Sk´ y paraleln´ı prefixov´ y souˇcet na EREW PRAM . 3.5 Segmentov´ y paraleln´ı prefixov´ y souˇcet . . . . . . . . . . . . . . .
3 4 5 6 6 6 6 9
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
4 Aplikace paraleln´ı prefixov´ e redukce 9 4.1 Zhuˇst’ovac´ı probl´em a paraleln´ı PrefixSort . . . . . . . . . . . . . . . . . . . . . . . . 9 4.2 Bin´arn´ı sˇc´ıtaˇcka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.3 Paraleln´ı QuickSort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5 Kontroln´ı ot´ azky
´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
13
OBSAH
ˇ Y ´ OBSAH PREDN ˇ ´ SKY ˇ STRUCN A Motivace pro paralelizaci redukce Sekvenˇcn´ı a paraleln´ı redukce Sekvenˇcn´ı a paraleln´ı prefixov´ a redukce Aplikace paraleln´ı prefixov´e redukce
MOTIVACE Redukce a prefixov´e redukce jsou jednˇemi z nejˇcastˇeji pouˇz´ıvan´ ych (a implementovan´ ych) paraleln´ıch algoritm˚ u slouˇz´ıc´ıch jako z´aklad dalˇs´ıch, sloˇzitˇejˇs´ıch algoritm˚ u. V t´eto pˇredn´aˇsce se sezn´am´ıme se z´ akladn´ımi vlastnostmi a implementacemi redukˇcn´ıch algoritm˚ u na r˚ uzn´ ych paraleln´ıch syst´emech.
C´IL Sezn´amit se se z´ akladn´ımi vlastnostmi a implementaˇcn´ımi aspekty nˇekter´ ych paraleln´ıch redukˇcn´ıch algoritm˚ u.
´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
2
Motivace pro paralelizaci redukce
1
3
Motivace pro paralelizaci redukce
Obecn´a redukce prvk˚ u mnoˇziny/pole je velmi ˇcast´ ym algoritmick´ ym probl´emem. Oper´atorem redukce m˚ uˇzeme ch´ apat t´emˇeˇr jakoukoliv (matematickou) operaci schopnou zredukovat 2 operandy do jedn´e v´ ysledkov´e hodnoty. Typicky se m˚ uˇze jednat o souˇcet nebo n´asoben´ı, obecnˇe vˇsak lze redukˇcn´ı oper´ator nadefinovat libovoln´ ym zp˚ usobem (napˇr. slouˇcen´ı bitmap, souˇcet prvk˚ u v´ıcerozmˇern´ ych pol´ı, atd.). Je zˇrejm´e ˇze ˇcasov´ a sloˇzitost redukce se bude u ´zce odv´ıjet o od ˇcasov´e sloˇzitosti samotn´eho redukˇcn´ıho oper´ atoru. Je-li ˇcasov´a sloˇzitost redukˇcn´ıho oper´atoru dostateˇcnˇe vysok´ a, b´ yv´a v´ yhodn´e redukci v´ıce prvk˚ u paralelizovat, ˇc´ımˇz lze dos´ahnout zaj´ımav´eho (ide´alnˇe line´arn´ıho) zrychlen´ı. Samozˇrejmˇe je nutn´e br´ at v u ´vahu vhodnou granularitu a ˇsk´alovatelnost probl´emu.
2
Sekvenˇ cn´ı a paraleln´ı redukce
Obecnou redukci v´ıce operand˚ u lze definovat n´asledovnˇe: ’ Necht je d´ ano vstupn´ı pole X = {x0 , x1 , ..., xn−1 } prvk˚ u mnoˇziny D a bin´arn´ı operace ⊕ nad D. Pak c´ılem redukce je vypoˇc´ıtat hodnotu S = x0 ⊕ x1 ⊕ ... ⊕ xn−1
(1)
napˇr´ıklad tak, je je uvedeno v algoritmu 1. Algoritmus 1 Trivi´ aln´ı sekvenˇcn´ı redukce S←0 for i = 0 to n − 1 do S = S ⊕ X[i] end for Doln´ı i horn´ı mez tohoto probl´emu je SL(n) = SU (n) = Θ(n), je-li probl´em ˇreˇsen sekvenˇcnˇe. Vhodnou paralelizac´ı redukce vˇsak lze celou operaci prov´est v ˇcase O(log n) pˇri zachov´an´ı cenov´e optimality, jak bylo diskutov´ ano v kapitole zab´ yvaj´ıc´ı se anal´ yzou ˇcasov´e sloˇzitosti paraleln´ıch algoritm˚ u. Pˇr´ıklady implementace paraleln´ı redukce na r˚ uzn´ ych paraleln´ıch syst´emech jsou uvedeny na obr´azku 1. Jak je patrn´e, vˇsechny syst´emy byly schopny z redukovat 8 hodnot, ve 3 kroc´ıch, ˇcili v logaritmick´em ˇcase. Pseudok´ od paraleln´ı redukce implementovan´e na EREW PRAM je uveden v algoritmu 2. Algoritmus 2 Trivi´ aln´ı paraleln´ı redukce for j = 1, ..., dlog ne do sequentially for all i = 0 to n − 1 step 2j do in parallel Pi : X[i] = X[i] ⊕ X[i + 2j−1 ] end for end for S ← X[0]
3
Sekvenˇ cn´ı a paraleln´ı prefixov´ a redukce
Prefixov´a redukce (prefixov´ y souˇcet) je zobecnˇen´ım redukce diskutovan´e v kapitole 2 a m´a stejn´e ˇcasov´e charakteristiky. Zat´ımco u klasick´e redukce je v´ ysledkem operace pouze jedna hodnota, u prefixov´e redukce n hodnot dostaneme po ukonˇcen´ı v´ ypoˇctu n v´ ysledk˚ u. ´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
Sekvenˇcn´ı a paraleln´ı prefixov´a redukce
4
Obr´azek 1: Implementace paraleln´ı redukce na r˚ uzn´ ych typech paraleln´ıch syst´em˚ u [1] . Mˇejme vstupn´ı pole X = x0 , x1 , ..., xn−1 z mnoˇziny D a asociativn´ı bin´arn´ı operaci ⊕ nad D. V´ ystupem v´ ypoˇctu je stejnˇe velk´e pole Y , kde yi je rovno redukci poˇc´ateˇcn´ıch i hodnot z X. ˇ u Cili ´kolem je vypoˇc´ıtat pole Y = y0 , y1 , ..., yn−1 vˇsech prefix˚ u pole X tak, ˇze yi = x0 ⊕ x1 ⊕ ... ⊕ xi , jak je naznaˇceno no obr´ azku 2.
Obr´ azek 2: Vstup a v´ ystup prefixov´e redukce [1] . Pro jednoduchost budeme v dalˇs´ıch kapitol´ach jako redukˇcn´ı oper´ator uvaˇzovat souˇcet, nebude-li ˇreˇceno jinak.
3.1
Sekvenˇ cn´ı prefixov´ y souˇ cet
ˇ Sekvenˇcn´ı prefixov´ y souˇcet je velmi trivi´aln´ım algoritmem a nepotˇrebuje bliˇzˇs´ıho zkoum´an´ı. Casov´ a sloˇzitost je opˇet Θ(n) a jeho pseudok´ od je uveden v algoritmu 3. Algoritmus 3 Sekvenˇcn´ı prefixov´ a 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 end for
´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
Sekvenˇcn´ı a paraleln´ı prefixov´a redukce
3.2
5
Paraleln´ı prefixov´ y souˇ cet na CdTn
Implementace paraleln´ıho prefixov´eho souˇctu (PPS) na topologii d-´ arn´ıho stromu CdTn je jiˇz daleko zaj´ımavˇejˇs´ı. Pˇredpokl´ adejme ICNW nepˇr´ım´eho stromu kde koncov´e listov´e uzly obsahuj´ı hodnoty, z nichˇz m´a b´ yt spoˇcten PPS. Pak PPS N vstupn´ıch hodnot v listech bin´arn´ıho stromu CBT v´ yˇsky h(CBT ) lze vypoˇc´ıtat ve 2h(CBT ) kroc´ıch. Je-li CBT u ´pln´ y, pak PPS potˇrebuje O(log N ) krok˚ u. Cel´a operace PPS se na CBT rozloˇz´ı do nˇekolika vzestupn´ych a sestupn´ych vln. Kaˇzd´a vzestupn´a vlna vygeneruje dalˇs´ı vzestupnou vlnu (pokud jsme jiˇz nedos´ahli koˇrene stromu) a h(CBT ) sestupn´ ych vln.
Obr´ azek 3: Vzestupn´e a sestupn´e vlny na CdT [1] . Pˇri vzestupn´e vlnˇe se rodiˇcovsk´emu listu odes´ıl´a souˇcet hodnot pˇrich´azej´ıc´ıch od syn˚ u. Z´aroveˇ n je generov´ana sestupn´ a vlna tak, jak je patrn´e z obr´azku 3. Hodnoty, kter´e v r´amci sestupn´ ych vln doraz´ı aˇz ke koneˇcn´ ym list˚ um jsou pˇriˇcteny k jejich aktu´aln´ı hodnotˇe. Po doznˇen´ı vˇsech vln obsahuj´ı koncov´e listov´e uzly kompletn´ı PPS. Cel´ y algoritmus je ilustrov´an na obr´azku 4.
Obr´ azek 4: Paraleln´ı prefixov´ y souˇcet na CBT [1] .
´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
Sekvenˇcn´ı a paraleln´ı prefixov´a redukce
3.3
6
Paraleln´ı prefixov´ y souˇ cet na Qn
Paraleln´ı prefixov´ y souˇcet na hyperkrychli je implementov´an jako jednoduch´e rozˇs´ıˇren´ı algoritmu vys´ıl´an´ı vˇsichni-ke-vˇsem. Pˇredpokl´ adejme ˇze PPS bude sˇc´ıtat N hodnot. D´ale pˇredpokl´adejme bin´arn´ı hyperkrychli Qn kde n = dlog N e. PPS pak bude pomoc´ı algoritmu 4 spoˇc´ıt´an v ˇcase O(log N ). Princip v´ ypoˇctu je jednoduch´ y. Kaˇzd´ y procesor Pi bude obsahovat dva pomocn´e registry: zelen´y a ˇzlut´y. Nejprve budou oba registry v dan´em procesoru inicializov´any stejnou vstupn´ı hodnotou. Pot´e n´asleduje n paraleln´ıch f´ az´ı, ve kter´ ych si procesory vz´ajemnˇe vymˇen´ı obsahy zelen´ ych registr˚ u a pˇriˇctou je k obsah˚ um sv´ ych vlastn´ıch zelen´ ych registr˚ u. Procesor, kter´ y m´a v r´amci dimenze, po kter´e data putovala, vyˇsˇs´ı adresu, pˇriˇcte pˇr´ıchoz´ı hodnotu tak´e ke sv´emu ˇzlut´emu registru. Po vykon´an´ı vˇsech n f´ az´ı, pˇri kter´ ych byla data zas´ıl´ana postupnˇe pˇres vˇsechny dimenze, budou ˇzlut´e registry procesor˚ u obsahovat kompletn´ı hodnoty PPS. Adresy konkr´etn´ıch procesor˚ u pˇredstavuj´ı indexy v´ ysledk˚ u v pomysln´em v´ ystupn´ım poli. Algoritmus 4 Paraleln´ı prefixov´ y souˇcet na Qn Require: i : int; zeleny, zluty, X[N] : D for all Pi , i = 0, ..., 2n − 1 do in parallel zeleny ← zluty ← X[i] for j = 0 to n − 1 do sequentially send zelenyi → Pi XOR 2j receive novyzeleny ← Pi XOR 2j zelenyi = zelenyi + novyzeleny if i XOR 2j < i then zlutyi = zlutyi + novyzeleny end if end for end for Cel´ y postup je ilustrov´ an na obr´ azku 5.
3.4
Paraleln´ı prefixov´ y souˇ cet na EREW PRAM
V pˇr´ıpadˇe paraleln´ıho prefixov´eho souˇctu na EREW PRAM si budeme demonstrovat dva typy vhodn´ ych algoritm˚ u. V prvn´ım pˇr´ıpadˇe se bude jednat o neˇ sk´ alovan´ y PPS kde pˇredpokl´ad´ ame, ˇze paraleln´ı syst´em disponuje stejn´ ym mnoˇzstv´ım procesor˚ u, jako je poˇcet sˇc´ıtan´ ych hodnot. Je zˇrejm´e, ˇze takov´ y algoritmus bude cenovˇe neoptim´aln´ı a tud´ıˇz neefektivn´ı a proto si zde uvedeme tak´e optim´aln´ı ˇ sk´ alovan´ y PPS. 3.4.1
Neˇ sk´ alovan´ y paraleln´ı prefixov´ y souˇ cet na EREW PRAM
Mˇejme n procesor˚ u P0 , ..., Pn−1 a pole X = x0 , ..., xn−1 uloˇzen´e ve sd´ılen´e pamˇeti M [0], ..., M [n−1]. Kaˇzd´ y Pi m´a pomocn´ y registr yi . Neˇsk´ alovan´ y v´ ypoˇcet PPS na EREW PRAM s ˇcasovou sloˇzitost´ı O(log n) je uveden v algoritmu 5 a jeho pr˚ ubˇeh je ilustrov´an na obr´azku 6. 3.4.2
ˇ alovan´ Sk´ y paraleln´ı prefixov´ y souˇ cet na EREW PRAM
Jak je patrn´e z obr´ azku 6, velk´e mnoˇzstv´ı procesor˚ u nem´a v pr˚ ubˇehu neˇsk´alovan´eho EREW PRAM PPS dostatek uˇziteˇcn´e pr´ ace, ˇc´ımˇz za pˇredpokladu mal´e ˇcasov´e sloˇzitosti redukˇcn´ı operace nar˚ ust´ a pod´ıl paraleln´ı reˇzie ve v´ ypoˇctu a t´ım i paraleln´ı cena. Abychom dos´ahli efektivn´ı paralelizace, bude zapotˇreb´ı zvolit lepˇs´ı granularitu a t´ım zajistit dostatek pr´ace pro vˇsechny procesory v pr˚ ubˇehu cel´eho v´ ypoˇctu. O to se snaˇz´ı ˇsk´ alovan´ a varianta EREW PRAM PPS. ´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
Sekvenˇcn´ı a paraleln´ı prefixov´a redukce
7
Obr´ azek 5: Paraleln´ı prefixov´ y souˇcet na Qn [1] .
Obr´ azek 6: Neˇsk´ alovan´ y paraleln´ı prefixov´ y souˇcet na EREW P RAM [1] . Uvaˇzujme vstupn´ı pole X = {x0 , x1 , ..., xn−1 } a p procesor˚ u P0 , ..., Pp−1 . Necht’ q = np . Rozdˇel´ıme X do p subpol´ı X0 , ..., Xp−1 po q prvc´ıch a pˇridˇel´ıme kaˇzd´e Xi pˇr´ısluˇsn´emu Pi . V prvn´ı f´ azi kaˇzd´ y Pi vypoˇcte prefixov´ y souˇcet nad Xi sekvenˇcnˇe. Tato f´aze zabere O( np ) krok˚ u. Ve druh´e f´ azi bude vypoˇcten prefixov´ y souˇcet nad prav´ ymi krajn´ımi hodnotami vˇsech p subpol´ı Xi . Jelikoˇz je poˇcet subpol´ı stejn´ y jako poˇcet procesor˚ u, lze tuto f´azi implementovat pomoc´ı neˇsk´alovan´eho EREW PRAM PPS a prov´est ji v O(log p) kroc´ıch. V z´avˇereˇcn´e tˇret´ı f´ azi bude ke vˇsem hodnot´am subpol´ı Xi , i = 1, ..., p−1 s v´ yjimkou nejpravˇejˇs´ıho prvku pˇriˇctena hodnota nejpravˇejˇs´ıho prvku subpole Xi−1 . Tato operace bude trvat opˇet O( np ) krok˚ u. Po t´eto operaci bude pole X obsahoval kompletn´ı PPS vˇsech vstupn´ıch hodnot. Celkov´a ˇcasov´ a n sloˇzitost v´ ypoˇctu bude T (n, p) = O( p + log p), coˇz za pˇredpokladu n p zaruˇcuje cenovou opti´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
Sekvenˇcn´ı a paraleln´ı prefixov´a redukce
Algoritmus 5 Neˇsk´ alovan´ y paraleln´ı prefixov´ y souˇcet na EREW P RAM Require: i, j : int; yi , M[n] : D for all Pi , i = 0 to n − 1 do in parallel yi ← M [i] end for for j = 0 to dlog ne − 1 do sequentially for all Pi , i = 2j to n − 1 do in parallel yi = yi + M [i − 2j ] end for for all Pi , i = 2j to n − 1 do in parallel M [i] = yi end for end for malitu v´ ypoˇctu i pˇri n´ızk´e ˇcasov´e sloˇzitosti redukˇcn´ı operace. Pseudok´od ˇsk´ alovan´eho PPS na EREW PRAM je uveden v algoritmu 6. ˇ alovan´ Algoritmus 6 Sk´ y paraleln´ı prefixov´ y souˇcet na EREW P RAM Require: i, j : int; Si [q], X[n], Z[p] : D for all Pi , i = 0 to p − 1 do in parallel Pi sekvenˇcnˇe v´ ypoˇcte pole Si = prefixov´ y souˇcet nad Xi Z[i] ← Si [q − 1] end for vˇsechny Pi vypoˇctou paralelnˇe PPS nad Z pomoc´ı algoritmu 5. for all Pi , i = 1 to p − 1 do in parallel for j = 0 to j < q − 1 do Si [j] = Si [j] + Z[i − 1] end for Si → Xi end for Pr˚ ubˇeh algoritmu 6 je ilustrov´ an na obr´azku 7.
ˇ alovan´ Obr´ azek 7: Sk´ y paraleln´ı prefixov´ y souˇcet na EREW P RAM [1] .
´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
8
Aplikace paraleln´ı prefixov´e redukce
3.5
9
Segmentov´ y paraleln´ı prefixov´ y souˇ cet
Segmentov´ y paraleln´ı prefixov´ y souˇcet (SPPS) je takovou modifikac´ı z´akladn´ıho algoritmu, kdy je vstupn´ı pole o velikosti n rozdˇeleno na s nestejnˇ e velk´ ych segment˚ u Si a prefixov´e souˇcty jsou spoˇcteny pro segmenty. Tabulka 1: Vstupn´ı a v´ ystupn´ı pole segmentov´eho PS Vstup V´ystup
|2 |2
1 3
3 6
5 11
|2 |2
7 9
3 12
|9 |9
4 13
5 18
6 24
|2 |2
8 10
4 14
3 17
1| 18 |
Znam´enko | u operand˚ u v tabulce 1 pˇredstavuje krajn´ı hodnoty u hranic segment˚ u. ˇ sen´ı tohoto probl´emu je nˇekolik. Uvaˇzujme p jako poˇcet procesor˚ Reˇ u Pi . Je-li s = p pak lze jednotliv´e segmenty Si pˇridˇelit procesor˚ um Pi , kter´e nad nimi spoˇctou prefixov´ y souˇcet v ˇcase Θ(qi ) kde qi je poˇcet prvk˚ u v segmentu Si . Jelikoˇz maj´ı segmenty obecnˇe r˚ uznou velikost (a v extr´emn´ım pˇr´ıpadˇe budou vˇsechny prvky obsaˇzeny v jednom segmentu), bude celkov´ y ˇcas v´ ypoˇctu T (n, p) = Θ(max{qi }) = O(n). Je-li n = p pak lze SPPS vypoˇc´ıst v celkov´em ˇcase T (n, p) = O(log n) pomoc´ı algoritmu 5 a modifikovan´eho oper´ atoru ⊕ jehoˇz chov´an´ı je pops´ano v tabulce 2. Tabulka 2: Modifikovan´ y redukˇcn´ı oper´ator ⊕ a a
4
b a⊕b |(a ⊕ b)
b |b b
Aplikace paraleln´ı prefixov´ e redukce
V´ yznam prefixov´eho souˇctu (PS) nen´ı ani tak v implementaci samotn´eho algoritmu ale v tom, ˇze PS slouˇz´ı jako z´ aklad dalˇs´ıch, sloˇzitˇejˇs´ıch algoritm˚ u. V n´asleduj´ıc´ıch kapitol´ach si pˇredstav´ıme nˇekter´e z nich.
4.1
Zhuˇ st’ovac´ı probl´ em a paraleln´ı RadixSort
Jednou z typick´ ych aplikac´ı PS je implementace zhuˇst’ovac´ıho probl´emu zm´ınˇen´eho v kapitole pojedn´avaj´ıc´ı o smˇerov´ an´ı v ICNW. Uvaˇzujme, ˇze jist´ a podmnoˇzina z p procesor˚ u pˇripojen´ ych ke vstup˚ um nepˇr´ım´e v´ıcestupˇ nov´e s´ıtˇe typu n-rozmˇern´ y mot´ ylek oBFn m´ a paket, kter´ y je nutno dopravit na druhou v´ ystupn´ı stranu s´ıtˇe tak, aby i-t´ y paket, poˇc´ıt´ ano na vstupech odshora, skonˇcil na i-t´em v´ ystupn´ım vodiˇci shora. D´ıky aplikaci PPS lze u zhuˇst’ovac´ıho probl´emu rychle (v ˇcase O(log p)) spoˇc´ıst indexy c´ılov´ ych uzl˚ u, tak jak je naznaˇceno na obr´ azku 8. Kaˇzd´ y uzel, kter´ y drˇz´ı paket bude obsahovat tak´e hodnotu 1 ve vstupn´ım poli PPS, uzel bez paketu bude obsahovat hodnotu 0. Z tˇechto hodnot bude spoˇcten PS (napˇr. pomoc´ı PPS implementovan´eho na stromˇe vnoˇren´eho do mot´ ylka) ˇc´ımˇz bude po z´avˇereˇcn´e normalizaci index˚ u kaˇzd´ y uzel vˇedˇet, kam m´a poslat sv˚ uj paket, aby byly na konci permutace zhuˇstˇeny do horn´ı poloviny s´ıtˇe. Samotn´ y zhuˇst’ovac´ı probl´em je pak z´akladem dalˇs´ıho algoritmu urˇcen´eho pro paraleln´ı tˇr´ıdˇen´ı bin´arn´ıch hodnot nazvan´eho RadixSort. Principem algoritmu je postupn´e tˇr´ıdˇen´ı na z´akladˇe zkoum´an´ı hodnot bit˚ u jednotliv´ ych ˇr´ ad˚ u. Necht’ X je posloupnost n k-bitov´ ych ˇc´ısel, nult´ y bit je vpravo. RadixSort je tˇr´ıdic´ı algoritmus, kter´ y nen´ı zaloˇzen na porovn´ av´ an´ı dvojice ˇc´ısel, ale na permutaci, kterou znaˇc´ıme Split(X,i): ˇc´ısla s ´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
Aplikace paraleln´ı prefixov´e redukce
10
Obr´azek 8: Zhuˇst’ovac´ı probl´em na oBFn . a) poˇc´ateˇcn´ı hodnoty pˇr´ıznak˚ u a jeden moˇzn´ y nepˇr´ım´ y strom, b) pole pˇr´ıznak˚ u po PPS, c) koneˇcn´e hodnoty index˚ u c´ılov´ ych ˇr´adk˚ u [1] . nulov´ ym i-t´ ym bitem jsou zhuˇstˇena doleva, ˇc´ısla s jedniˇckov´ ym i-t´ ym bitem jsou zhuˇstˇena doprava tak, jak je ilustrov´ ano na obr´ azku 9. Algoritmus 7 Implementace paraleln´ıho tˇr´ıdˇen´ı RadixSort Require: i : int; X[0, ..., 2k − 1] : D for i = 0 to k − 1 do sequentially Split(X,i) end for
Obr´azek 9: Implementace paraleln´ıho RadixSortu pomoc´ı zhuˇst’ovac´ıho probl´emu [1] .
4.2
Bin´ arn´ı sˇ c´ıtaˇ cka
Dalˇs´ı z moˇzn´ ych aplikac´ı PS je rychl´ a bin´arn´ı sˇc´ıtaˇcka. Mˇejme 2 n-bitov´ a bin´ arn´ı slova kter´ a chceme seˇc´ıst po bitech a p = n procesor˚ u. D´ıky existenci pˇrenosu mezi vyˇsˇs´ımi ˇr´ ady pˇri sˇc´ıt´ an´ı bit˚ u bin´arn´ıch slov je doln´ı i horn´ı sekvenˇcn´ı mez tohoto ´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
Aplikace paraleln´ı prefixov´e redukce
11
probl´emu SL(n) = SU (n) = Θ(n). Paralelizac´ı jsme schopni tento probl´em vyˇreˇsit v ˇcase T (n, p) = O(1) + O(log n). Princip algoritmu je n´asleduj´ıc´ı: Mˇejme dvˇe bin´ arn´ı slova o velikosti n organizovan´a jako bitov´a pole X = {x0 , ..., xn−1 } a Y = {y0 , ..., yn−1 }. V´ ystupem bude souˇcet tˇechto slov uloˇzen´ y v n-bitov´em slovu Z = {z0 , ..., zn−1 }. Postup v´ ypoˇctu bude n´ asleduj´ıc´ı: 1. Vˇsechny procesory Pi vypoˇctou paralelnˇe obsah slova B = {b0 , ..., bn−1 } tak, ˇze porovnaj´ı bity xi a yi pomoc´ı n´ıˇze uveden´eho pˇredpisu: (
bi =
(g)enerate , (s)top
if xi = yi = 1
if xi = yi = 0, (p)ropagate
jinak.
Doba trv´ an´ı t´eto operace bude T (n, p) = O(1). 2. Pomoc´ı PPS a oper´ atoru ⊕ z tabulky 3 nad polem B vypoˇcti pole B 0 v ˇcase T (n, p) = O(log n). Tabulka 3: Modifikovan´ y redukˇcn´ı oper´ator pro bin´arn´ı sˇc´ıtaˇcku ⊕ s p g
s s s g
p s p g
g s g g
3. Vˇsechny procesory Pi vypoˇctou pˇrenosov´e slovo C = {c0 , ..., cn−1 } tak, ˇze c0 = 0 a ci = 1 ⇐⇒ b0i−1 = g v ˇcase T (n, p) = O(1). 4. Vˇsechny procesory Pi vypoˇctou v´ ysledn´e slovo Z = {z0 , ..., zn−1 } tak, ˇze zi = xi ⊕ yi ⊕ ci kde oper´ator ⊕ pˇredstavuje bin´ arn´ı souˇcet bez pˇrenosu. Doba t´eto operace bude T (n, p) = O(1). Cel´ y algoritmus je ilustrov´ an na obr´azku 10.
Obr´ azek 10: Implementace paraleln´ı bin´arn´ı sˇc´ıtaˇcky [1] .
4.3
Paraleln´ı QuickSort
Vyuˇzit´ı SPPS si uk´ aˇzeme na pˇr´ıkladu jedn´e z moˇzn´ ych implementac´ı paraleln´ıho tˇr´ıdic´ıho algoritmu QuickSort. Pˇredpokl´ adejme nesetˇr´ıdˇen´e pole A[n] a p = n procesor˚ u. Princip ˇcinnosti algoritmu je pak n´asleduj´ıc´ı: ´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
Aplikace paraleln´ı prefixov´e redukce
Algoritmus 8 Implementace paraleln´ıho tˇr´ıdic´ıho algoritmu QuickSort pomoc´ı SPPS Require: i : int; e: bool; A[n], Sn [n], F [n], bs : D start: for all i = 0 to n − 2 do in parallel fi = (a + i ≤ ai+1 ) end for Proved’ paraleln´ı redukci hodnot fi pomoc´ı operace AND a v´ ysledek uloˇz do e. if e = T RU E then EXIT end if for all aktu´ aln´ı segmenty S v A do in parallel vyber pivot bs ← Si [0] poˇsli bs vˇsem procesor˚ um uvnitˇr segmentu. for all ai ∈ S do in parallel gi = (ai <> bs ), kde gi ∈ {0 <0 ,0 =0 ,0 >0 } /* kaˇzd´y S rozdˇel´ıme na 3 podsegmenty S< , S= a S> */ pomoc´ı SPPS vypoˇcti nov´e indexy prvk˚ u ai : gi =0 <0 uvnitˇr vˇsech S poˇsli hodnoty maxim´ aln´ıho indexu (= S< ) uvnitˇr vˇsech S. /* |S< je rovno indexu zaˇc´ atku S= */ pomoc´ı SPPS vypoˇcti nov´e indexy prvk˚ u ai : gi =0 =0 uvnitˇr vˇsech S poˇsli hodnoty maxim´ aln´ıho indexu (= S= ) uvnitˇr vˇsech S. /* |S< + |S= je rovno indexu zaˇc´ atku S> */ pomoc´ı SPPS vypoˇcti nov´e indexy prvk˚ u ai : gi =0 >0 uvnitˇr vˇsech S permutac´ı segmentu S vytvoˇr 3 nov´e segmenty S = {S< |S= |S> } end for end for goto start
´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
12
Kontroln´ı ot´azky
5
13
Kontroln´ı ot´ azky • Jak´ y je rozd´ıl mezi redukc´ı a prefixovou redukc´ı? • Uved’te alespoˇ n 3 pˇr´ıklady implementace paraleln´ı redukce na r˚ uzn´ ych typech paraleln´ıch syst´emu. • Uved’te alespoˇ n 3 pˇr´ıklady implementace paraleln´ı prefixov´e redukce na r˚ uzn´ ych typech paraleln´ıch syst´emu. • Jak´ y je princip segmentov´e paraleln´ı prefixov´e redukce? • Uved’te nˇekter´e moˇzn´e aplikace paraleln´ı prefixov´e redukce.
´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
REFERENCE
Reference ˇ [1] Pavel Tvrd´ık. Paraleln´ı syst´emy a algoritmy. Vydavatelstv´ı CVUT, Praha, 2005.
´ ´ ´ ˚ ´ MODERNIZACE VYUKOV YCH MATERIAL U A DIDAKTICKYCH METOD CZ.1.07/2.2.00/15.0463
14