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.

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

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

Saved successfully!

Ooh no, something went wrong!