03.07.2013 Views

Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt

Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt

Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!