Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
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