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.
26 Hoofdstuk 3. Het netwerkmodel<br />
dingsproces. Hieruit blijkt dat er in de tweede stap twee boodschapp<strong>en</strong> op 11010 zijn, die over<br />
dezelfde boog moet<strong>en</strong> verdergestuurd word<strong>en</strong>. Wanneer we zoals gebruikelijk veronderstell<strong>en</strong><br />
dat slechts één boodschap tegelijk over e<strong>en</strong> kanaal kan verstuurd word<strong>en</strong>, wordt e<strong>en</strong> van de boodschapp<strong>en</strong><br />
hier vertraagd. Meer geavanceerde algoritm<strong>en</strong> zijn nodig om dergelijke problem<strong>en</strong> te<br />
verhelp<strong>en</strong>.<br />
De hyperkubus is e<strong>en</strong> populaire topologie omwille van zijn regulariteit, zijn kleine diameter, zijn<br />
verscheid<strong>en</strong>e interessante graaf-theoretische eig<strong>en</strong>schapp<strong>en</strong>, <strong>en</strong> het feit dat vele berek<strong>en</strong>ing<strong>en</strong><br />
snel <strong>en</strong> e<strong>en</strong>voudig op e<strong>en</strong> hyperkubus kunn<strong>en</strong> word<strong>en</strong> uitgevoerd.<br />
E<strong>en</strong> bijkom<strong>en</strong>de red<strong>en</strong> is het feit dat andere netwerk<strong>en</strong> er e<strong>en</strong>voudig kunn<strong>en</strong> op gesimuleerd word<strong>en</strong>.<br />
Bepaalde netwerk<strong>en</strong>, zoals rij<strong>en</strong>, kunn<strong>en</strong> ingebed word<strong>en</strong> als deelgraf<strong>en</strong> van de hyperkubus.<br />
Andere netwerk<strong>en</strong>, zoals bom<strong>en</strong>, kunn<strong>en</strong> efficiënt gesimuleerd word<strong>en</strong> op de hyperkubus, als<br />
we toelat<strong>en</strong> dat bog<strong>en</strong> ‘verwijd’ word<strong>en</strong> <strong>en</strong> dat topp<strong>en</strong> van de hyperkubus meerdere topp<strong>en</strong> uit<br />
het oorspronkelijke netwerk simuler<strong>en</strong>. <strong>Algoritm<strong>en</strong></strong> voor de hyperkubus kunn<strong>en</strong> dus dikwijls<br />
aangepast word<strong>en</strong> om ook op andere architectur<strong>en</strong> te werk<strong>en</strong>.<br />
E<strong>en</strong> nadeel van het hyperkubusnetwerk is dat het duur is om het uit te breid<strong>en</strong>, omdat nieuwe<br />
connecties aan elke processor moet<strong>en</strong> word<strong>en</strong> toegevoegd wanneer we de dim<strong>en</strong>sie van de hyperkubus<br />
verhog<strong>en</strong>. Hyperkubuss<strong>en</strong> word<strong>en</strong> dus op hun beurt ingebed in netwerk<strong>en</strong> die e<strong>en</strong>voudiger<br />
in hardware te realiser<strong>en</strong> zijn.<br />
In de onderstaande voorbeeld<strong>en</strong> ontwerp<strong>en</strong> we synchrone algoritm<strong>en</strong> voor <strong>en</strong>kele e<strong>en</strong>voudige<br />
problem<strong>en</strong> op de hyperkubus.<br />
Voorbeeld 3.3.3 (Sommer<strong>en</strong> van e<strong>en</strong> rij op de hyperkubus). Zij gegev<strong>en</strong> e<strong>en</strong> rij (a0,...,an−1)<br />
met n = 2d elem<strong>en</strong>t<strong>en</strong>, waarbij elke ai opgeslag<strong>en</strong> is in het lokale geheug<strong>en</strong> van processor Pi van<br />
e<strong>en</strong> (synchrone) d-dim<strong>en</strong>sionale hyperkubus Qd. Gevraagd is de som s = ∑ n−1<br />
i=0 ai te berek<strong>en</strong><strong>en</strong><br />
<strong>en</strong> op te slaan op processor P0.<br />
Het algoritme voor de berek<strong>en</strong>ing van s is rechtlijnig. Het bestaat uit d iteraties. De eerste iteratie<br />
berek<strong>en</strong>t de somm<strong>en</strong> van par<strong>en</strong> elem<strong>en</strong>t<strong>en</strong> tuss<strong>en</strong> processor<strong>en</strong> waarvan de indices in de meest<br />
significante bitpositie verschill<strong>en</strong>. Deze somm<strong>en</strong> word<strong>en</strong> opgeslag<strong>en</strong> in de (d − 1)-dim<strong>en</strong>sionale<br />
deelhyperkubus waarvan de meest significante adresbit gelijk aan 0 is. De andere iteraties gebeur<strong>en</strong><br />
op gelijkaardige wijze.<br />
Algoritme 3.2 geeft de pseudocode voor processor Pi. Daarbij noter<strong>en</strong> we door i (ℓ) de index<br />
i waarbij van bit ℓ het complem<strong>en</strong>t g<strong>en</strong>om<strong>en</strong> werd. De instructie ai ← ai + a i (ℓ) vereist twee<br />
deelstapp<strong>en</strong>. In de eerste deelstap kopieert processor Pi de waarde a i (ℓ) van processor P i (ℓ) via de<br />
link tuss<strong>en</strong> Pi <strong>en</strong> P i (ℓ). In de tweede deelstap berek<strong>en</strong>t processor Pi de waarde ai + a i (ℓ) <strong>en</strong> slaat<br />
het resultaat op in ai.<br />
Dit algoritme vereist d = log 2 n parallelle stapp<strong>en</strong>.<br />
Voorbeeld 3.3.4 (Broadcast op de hyperkubus). Beschouw het probleem van het doorstur<strong>en</strong><br />
van e<strong>en</strong> item x van processor P0 naar alle andere processor<strong>en</strong> Pi van e<strong>en</strong> hyperkubus met p processor<strong>en</strong>,<br />
waarbij p = 2 d .<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