Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
60 Hoofdstuk 5. <strong>Parallelle</strong> sorteeralgoritm<strong>en</strong><br />
5.2 Sorter<strong>en</strong> op interconnecti<strong>en</strong>etwerk<strong>en</strong><br />
In deze paragraaf besprek<strong>en</strong> we mogelijke sorteeralgoritm<strong>en</strong> op netwerktopologieën, zoals de rij,<br />
het rooster <strong>en</strong> de hyperkubus.<br />
5.2.1 Odd-ev<strong>en</strong>-transpositionsorter<strong>en</strong> op e<strong>en</strong> rij van processor<strong>en</strong><br />
Op e<strong>en</strong> rij processor<strong>en</strong> kunn<strong>en</strong> we het odd-ev<strong>en</strong>-transposition sorteeralgoritme dat we eerder<br />
zag<strong>en</strong>, implem<strong>en</strong>ter<strong>en</strong>. Elke processor houdt e<strong>en</strong> teller bij om te wet<strong>en</strong> of het system zich<br />
mom<strong>en</strong>teel in e<strong>en</strong> ev<strong>en</strong> of onev<strong>en</strong> fase bevindt. Om e<strong>en</strong> vergelijk<strong>en</strong>de poort te implem<strong>en</strong>ter<strong>en</strong><br />
moet<strong>en</strong> twee processor<strong>en</strong> sam<strong>en</strong>werk<strong>en</strong> <strong>en</strong> mogelijks hun elem<strong>en</strong>t<strong>en</strong> uitwissel<strong>en</strong>. In e<strong>en</strong> ev<strong>en</strong><br />
fase werk<strong>en</strong> de ev<strong>en</strong> processor<strong>en</strong> sam<strong>en</strong> met hun rechterbur<strong>en</strong>, m.a.w. de par<strong>en</strong> (0,1), (2,3), (4,5)<br />
<strong>en</strong>zovoort, <strong>en</strong> de ev<strong>en</strong> processor<strong>en</strong> ontvang<strong>en</strong> het kleinste elem<strong>en</strong>t. In e<strong>en</strong> onev<strong>en</strong> fase werk<strong>en</strong><br />
de ev<strong>en</strong> processor<strong>en</strong> sam<strong>en</strong> met hun linkerbur<strong>en</strong>, m.a.w. de par<strong>en</strong> (1,2), (3,4), (5,6), <strong>en</strong>zovoort.<br />
Na n stapp<strong>en</strong> stopp<strong>en</strong> alle processor<strong>en</strong>. Op dat mom<strong>en</strong>t hebb<strong>en</strong> ze de n fas<strong>en</strong> van het odd-ev<strong>en</strong>transposition<br />
netwerk gesimuleerd.<br />
De correctheid van dit algoritme volgt onmiddellijk uit de correctheid van het odd-ev<strong>en</strong>-transposition<br />
netwerk, bewez<strong>en</strong> in Stelling 5.1.3.<br />
Stelling 5.2.1. We kunn<strong>en</strong> n getall<strong>en</strong> op e<strong>en</strong> rij van n processor<strong>en</strong> sorter<strong>en</strong> in lineaire tijd m.b.v.<br />
het odd-ev<strong>en</strong>-transposition sorteeralgoritme.<br />
5.2.2 Bitonisch sorter<strong>en</strong> op de hyperkubus<br />
Wanneer we de inputlijn<strong>en</strong> van e<strong>en</strong> bitonisch sorteernetwerk met n = 2 d inputlijn<strong>en</strong> label<strong>en</strong> met<br />
de d-bitstrings 0...0 t.e.m. 1...1, dan bekom<strong>en</strong> we e<strong>en</strong> rechtstreekse mapping tuss<strong>en</strong> de inputlijn<strong>en</strong><br />
van het sorteernetwerk <strong>en</strong> de processor<strong>en</strong> in e<strong>en</strong> hyperkubus van dim<strong>en</strong>sie d. Merk op dat<br />
de vergelijking<strong>en</strong> tuss<strong>en</strong> elem<strong>en</strong>t<strong>en</strong> die het bitonisch sorteernetwerk uitvoert, telk<strong>en</strong>s gebeur<strong>en</strong><br />
tuss<strong>en</strong> inputlijn<strong>en</strong> waarvan het label in slechts één bitpositie verschilt. M.a.w. deze vergelijking<strong>en</strong><br />
gebeur<strong>en</strong> tuss<strong>en</strong> processor<strong>en</strong> die in de hyperkubus rechtstreeks verbond<strong>en</strong> zijn, <strong>en</strong> er is ge<strong>en</strong><br />
extra communicatie-overhead voor routing nodig.<br />
5.2.3 Shearsort op e<strong>en</strong> rooster van processor<strong>en</strong><br />
Vervolg<strong>en</strong>s bekijk<strong>en</strong> we e<strong>en</strong> sorteeralgoritme op het rooster. Het algoritme wordt shearsort g<strong>en</strong>oemd<br />
<strong>en</strong> het sorteert in twee fas<strong>en</strong> die ⌈log 2 n⌉+1 keer herhaald word<strong>en</strong>. In de rijsorteerfase<br />
word<strong>en</strong> alle rij<strong>en</strong> van het rooster gesorteerd met behulp van het odd-ev<strong>en</strong>-transposition sorteeralgoritme<br />
voor rij<strong>en</strong> van processor<strong>en</strong>. De rij<strong>en</strong> word<strong>en</strong> afwissel<strong>en</strong>d in stijg<strong>en</strong>de <strong>en</strong> dal<strong>en</strong>de volgorde<br />
gesorteerd. In de kolomsorteerfase sorter<strong>en</strong> we alle kolomm<strong>en</strong> in stijg<strong>en</strong>de volgorde. Na<br />
hoogst<strong>en</strong>s ⌈log 2 n⌉+1 herhaling<strong>en</strong> van deze fas<strong>en</strong> zijn de elem<strong>en</strong>t<strong>en</strong> in het rooster gesorteerd,<br />
<strong>Algoritm<strong>en</strong></strong> <strong>en</strong> Datastructur<strong>en</strong> <strong>III</strong> Veerle.Fack@UG<strong>en</strong>t.be