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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2.2. De Parallel Random-Access Machine (PRAM) 13<br />

Algoritme 2.5 Probleem van cache-coher<strong>en</strong>tie<br />

Stel x ← 0<br />

for i from 1 to n pardo<br />

if i = n th<strong>en</strong><br />

Stel x ← 1<br />

else<br />

Stel ai ← x<br />

Voorbeeld 2.2.5. Merk op dat Algoritme 2.3 e<strong>en</strong> algoritme met “CW in overe<strong>en</strong>stemming” is,<br />

aangezi<strong>en</strong> elke processor dezelfde waarde naar de variabele probeert te schrijv<strong>en</strong>. Algoritme 2.4<br />

daar<strong>en</strong>teg<strong>en</strong> werkt alle<strong>en</strong> in het model “CW in prioriteit” of “willekeurig CW”, aangezi<strong>en</strong> het<br />

verschill<strong>en</strong>de waard<strong>en</strong> naar dezelfde variabele kan prober<strong>en</strong> schrijv<strong>en</strong>; het werkt in het EWmodel<br />

wanneer alle elem<strong>en</strong>t<strong>en</strong> in de array verschill<strong>en</strong>d zijn.<br />

Merk op dat, zelfs wanneer we ons beperk<strong>en</strong> tot het EW-model, er problem<strong>en</strong> kunn<strong>en</strong> zijn met<br />

gelijktijdige leesbewerking<strong>en</strong>.<br />

Voorbeeld 2.2.6. Beschouw de code in Algoritme 2.5. Welke waard<strong>en</strong> bevat de array a na het<br />

uitvoer<strong>en</strong> van deze code? Alhoewel slechts één processor, nl. processor n, naar de variabele x<br />

schrijft, prober<strong>en</strong> alle andere processor<strong>en</strong> wel de waarde van x te lez<strong>en</strong>. Maar wat is de waarde<br />

van x? Wanneer de processor<strong>en</strong> lokale kopieën van x gebruik<strong>en</strong>, dan zal de array null<strong>en</strong> bevatt<strong>en</strong>,<br />

ook al verandert processor n de waarde van x in het globale geheug<strong>en</strong>.<br />

Dit wordt het probleem van cache-coher<strong>en</strong>tie g<strong>en</strong>oemd. Wanneer alle processor<strong>en</strong> de waarde<br />

van e<strong>en</strong> variabele x in het globale geheug<strong>en</strong> gebruik<strong>en</strong>, dan zal het resultaat afhang<strong>en</strong> van de<br />

willekeurige volgorde waarin de processor<strong>en</strong> toegang krijg<strong>en</strong> tot x. Met dergelijke problem<strong>en</strong><br />

moet in de praktijk zeker rek<strong>en</strong>ing word<strong>en</strong> gehoud<strong>en</strong>; in deze cursus vermijd<strong>en</strong> we ze door code<br />

te schrijv<strong>en</strong> die ze vermijdt.<br />

2.2.3 Semigroep-problem<strong>en</strong><br />

Voorbeeld 2.2.7 (Veralgeme<strong>en</strong>de som van e<strong>en</strong> rij getall<strong>en</strong>). Hoe snel kunn<strong>en</strong> we e<strong>en</strong> reeks<br />

getall<strong>en</strong> sommer<strong>en</strong> op e<strong>en</strong> EREW PRAM; m.a.w. gegev<strong>en</strong> e<strong>en</strong> array a van l<strong>en</strong>gte n, hoe snel<br />

kunn<strong>en</strong> we a1 + ···+an berek<strong>en</strong><strong>en</strong>? Dit probleem behoort tot e<strong>en</strong> familie van problem<strong>en</strong> die<br />

allemaal van dezelfde gedaante zijn: voor e<strong>en</strong> gegev<strong>en</strong> binaire associatieve bewerking ⊕ w<strong>en</strong>s<strong>en</strong><br />

we ∑ n i=1 ai te berek<strong>en</strong><strong>en</strong>. Dit probleem is gek<strong>en</strong>d als het semigroep-probleem, aangezi<strong>en</strong> e<strong>en</strong><br />

verzameling elem<strong>en</strong>t<strong>en</strong> sam<strong>en</strong> met e<strong>en</strong> associatieve binaire bewerking e<strong>en</strong> semigroep g<strong>en</strong>oemd<br />

wordt. Andere problem<strong>en</strong> van deze gedaante zijn het berek<strong>en</strong><strong>en</strong> van het maximum, waarbij<br />

⊕ = max, of het product, waarbij ⊕ = ×, van e<strong>en</strong> reeks van n getall<strong>en</strong>.<br />

Eerder zag<strong>en</strong> we reeds twee algoritm<strong>en</strong> voor het bepal<strong>en</strong> van het maximum, het <strong>en</strong>e sequ<strong>en</strong>tieel<br />

<strong>en</strong> het andere parallel. Het sequ<strong>en</strong>tiële algoritme had uitvoeringstijd Θ(n); het parallelle<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!