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.

20 Hoofdstuk 3. Het netwerkmodel<br />

3.1 Het netwerkmodel<br />

E<strong>en</strong> netwerk kan beschouwd word<strong>en</strong> als e<strong>en</strong> graaf G = (V,E), waarbij elke top vi ∈ V e<strong>en</strong><br />

processor Pi voorstelt, <strong>en</strong> elke boog (vi,vj) ∈ E e<strong>en</strong> communicatielink tuss<strong>en</strong> Pi <strong>en</strong> Pj voorstelt.<br />

Elke processor heeft zijn eig<strong>en</strong> lokale geheug<strong>en</strong>, <strong>en</strong> er is ge<strong>en</strong> geme<strong>en</strong>schappelijk geheug<strong>en</strong><br />

beschikbaar.<br />

Communicatie tuss<strong>en</strong> de processor<strong>en</strong> gebeurt via de beschikbare communicatielinks. In de pseudocode<br />

gebruik<strong>en</strong> we dan ook volg<strong>en</strong>de bijkom<strong>en</strong>de opdracht<strong>en</strong> voor het aangev<strong>en</strong> van communicatie:<br />

• s<strong>en</strong>d(X,i): De processor z<strong>en</strong>dt e<strong>en</strong> kopie van data X naar processor Pi <strong>en</strong> gaat daarna<br />

onmiddellijk verder met het uitvoer<strong>en</strong> van de volg<strong>en</strong>de instructie.<br />

• receive(Y , j): De processor schort de uitvoering van zijn programma op totdat data van<br />

processor Pj ontvang<strong>en</strong> is. Daarna slaat hij deze data op in e<strong>en</strong> variabele Y <strong>en</strong> gaat dan<br />

verder met de uitvoering van zijn programma.<br />

Ook in het netwerkmodel beschouw<strong>en</strong> we twee verschill<strong>en</strong>de manier<strong>en</strong> van werk<strong>en</strong>, nl. synchroon<br />

<strong>en</strong> asynchroon. Meest gebruikt is echter het asynchrone netwerkmodel.<br />

De processor<strong>en</strong> in e<strong>en</strong> asynchroon netwerk coördiner<strong>en</strong> hun activiteit<strong>en</strong> door boodschapp<strong>en</strong> uit<br />

te wissel<strong>en</strong>; dit schema wordt het message-passing model g<strong>en</strong>oemd.<br />

Merk echter op dat twee communicer<strong>en</strong>de processor<strong>en</strong> niet noodzakelijk rechtstreeks verbond<strong>en</strong><br />

zijn. Het proces van het bezorg<strong>en</strong> van e<strong>en</strong> bericht van de afz<strong>en</strong>der naar de bestemmeling wordt<br />

routing g<strong>en</strong>oemd.<br />

3.2 Circuits <strong>en</strong> systolische algoritm<strong>en</strong><br />

E<strong>en</strong> voorbeeld van parallelle algoritm<strong>en</strong> in het synchrone netwerkmodel zijn de zgn. systolische<br />

algoritm<strong>en</strong> die werk<strong>en</strong> op circuits.<br />

Circuits bestaan uit processor<strong>en</strong> met beperkte mogelijkhed<strong>en</strong>. Dergelijke processor wordt e<strong>en</strong><br />

poort g<strong>en</strong>oemd. E<strong>en</strong> poort heeft inputkanal<strong>en</strong>, waarop e<strong>en</strong> e<strong>en</strong>voudige bewerking gebeurt, waarvan<br />

het resultaat naar de outputkanal<strong>en</strong> gestuurd wordt. Voorbeeld<strong>en</strong> van circuits zijn de sorteernetwerk<strong>en</strong><br />

die we in Hoofdstuk 5 zull<strong>en</strong> besprek<strong>en</strong>, <strong>en</strong> de systolische netwerk<strong>en</strong>, waarvan we<br />

hier e<strong>en</strong> toepassing behandel<strong>en</strong>.<br />

In e<strong>en</strong> systolisch algoritme werk<strong>en</strong> de processor<strong>en</strong> volledig synchroon. Per tijdse<strong>en</strong>heid ontvangt<br />

elke processor gegev<strong>en</strong>s van bepaalde bur<strong>en</strong>, op deze gegev<strong>en</strong>s doet hij e<strong>en</strong> lokale berek<strong>en</strong>ing,<br />

<strong>en</strong> vervolg<strong>en</strong>s stuurt hij gegev<strong>en</strong>s door naar bepaalde bur<strong>en</strong>.<br />

Voorbeeld 3.2.1 (Matrixverm<strong>en</strong>igvuldiging). We beschouw<strong>en</strong> het berek<strong>en</strong><strong>en</strong> van het product<br />

C = AB van twee n×n matrices A <strong>en</strong> B. Veronderstel dat we e<strong>en</strong> tweedim<strong>en</strong>sionaal n×n rooster<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!