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.

42 Hoofdstuk 4. Ontwerptechniek<strong>en</strong> voor parallelle algoritm<strong>en</strong><br />

4.2.5 Berek<strong>en</strong><strong>en</strong> van prefixsomm<strong>en</strong> op e<strong>en</strong> hyperkubus<br />

Zij gegev<strong>en</strong> e<strong>en</strong> rij (a0,...,an−1) met n = 2 d elem<strong>en</strong>t<strong>en</strong>, waarbij elke ak opgeslag<strong>en</strong> is in het<br />

lokale geheug<strong>en</strong> van processor Pk van e<strong>en</strong> hyperkubus Qd. Gevraagd is de prefixsom sk = ∑ k i=0 ai<br />

te berek<strong>en</strong><strong>en</strong> <strong>en</strong> op te slaan in Pk, voor alle 0 ≤ k < n.<br />

Het algoritme volgt de gebruikelijke werkwijze op de hyperkubus, nl. via communicatie in elke<br />

dim<strong>en</strong>sie, gaande van de laagste naar de hoogste dim<strong>en</strong>sie. Elke processor Pk houdt twee waard<strong>en</strong><br />

xk <strong>en</strong> yk bij. Initieel krijg<strong>en</strong> xk <strong>en</strong> yk beid<strong>en</strong> de waarde ak. Beschouw<strong>en</strong> we nu stap i uit het<br />

algoritme. Zij processor<strong>en</strong> Pk <strong>en</strong> Pℓ bur<strong>en</strong> in dim<strong>en</strong>sie i, k < ℓ. Dan wissel<strong>en</strong> Pk <strong>en</strong> Pℓ hun<br />

waard<strong>en</strong> yk <strong>en</strong> yℓ uit. Processor Pk houdt zijn oorspronkelijke waarde van xk <strong>en</strong> vervangt yk door<br />

yk ⊕yℓ. Processor Pℓ vervangt zijn waarde van xℓ door xℓ ⊕yk <strong>en</strong> vervangt ook yℓ door yk ⊕yℓ. Na<br />

d = log 2 n stapp<strong>en</strong>, e<strong>en</strong> in elke dim<strong>en</strong>sie, bevat elke xk uiteindelijk de gevraagde prefixsom sk.<br />

4.3 Partitionering / Merge<br />

4.3.1 Techniek van partitioner<strong>en</strong><br />

De techniek van partitioner<strong>en</strong> bestaat in<br />

(1) het opsplits<strong>en</strong> van het gegev<strong>en</strong> probleem in p onafhankelijke deelproblem<strong>en</strong> die ongeveer<br />

ev<strong>en</strong> groot zijn, waarbij p het aantal beschikbare processor<strong>en</strong> is, <strong>en</strong><br />

(2) het oploss<strong>en</strong> in parallel van deze deelproblem<strong>en</strong>.<br />

In zijn e<strong>en</strong>voudigste vorm bestaat deze strategie in het opsplits<strong>en</strong> van de inputgegev<strong>en</strong>s in p nietoverlapp<strong>en</strong>de<br />

stukk<strong>en</strong>, gevolgd door het in parallel oploss<strong>en</strong> van de deelproblem<strong>en</strong> geassocieerd<br />

met deze p stukk<strong>en</strong>. In de meeste gevall<strong>en</strong> zal het opsplits<strong>en</strong> van het probleem in onafhankelijke<br />

deelproblem<strong>en</strong> echter niet zo e<strong>en</strong>voudig zijn.<br />

We illustrer<strong>en</strong> deze techniek bij het merg<strong>en</strong> van twee gesorteerde rij<strong>en</strong>. Zij A = (a1,...,an)<br />

<strong>en</strong> B = (b1,...,bn) twee niet-dal<strong>en</strong>de rij<strong>en</strong> van elem<strong>en</strong>t<strong>en</strong> uit e<strong>en</strong> geord<strong>en</strong>d universum S. We<br />

beschouw<strong>en</strong> het probleem van het sam<strong>en</strong>voeg<strong>en</strong> van deze twee rij<strong>en</strong> tot één <strong>en</strong>kele gesorteerde<br />

rij C = (c1,...,c2n). Er zijn e<strong>en</strong>voudige sequ<strong>en</strong>tiële algoritm<strong>en</strong> voor dit probleem die lineaire<br />

tijd vereis<strong>en</strong>. Onze bedoeling hier is het opstell<strong>en</strong> van e<strong>en</strong> parallelle oplossing die gebaseerd is<br />

op het partitioner<strong>en</strong> van rij<strong>en</strong> A <strong>en</strong> B in meerdere par<strong>en</strong> van deelrij<strong>en</strong> op zodanige manier dat we<br />

de gesorteerde rij C kunn<strong>en</strong> bekom<strong>en</strong> door in parallel de par<strong>en</strong> van deelrij<strong>en</strong> te merg<strong>en</strong>.<br />

4.3.2 E<strong>en</strong> e<strong>en</strong>voudig merge-algoritme<br />

We beginn<strong>en</strong> met <strong>en</strong>kele definities. Zij X = (x1,...,xn) e<strong>en</strong> rij elem<strong>en</strong>t<strong>en</strong> uit het universum S.<br />

Zij x ∈ S. De rank van x in X, g<strong>en</strong>oteerd als rank(x : X) is het aantal elem<strong>en</strong>t<strong>en</strong> van X dat<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!