Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
3.4. Communicatie-algoritm<strong>en</strong> 27<br />
Algoritme 3.2 Sommer<strong>en</strong> van e<strong>en</strong> rij op e<strong>en</strong> synchrone hyperkubus<br />
Input: rij (a0,...,an−1; n = 2d ; elke ai is opgesplag<strong>en</strong> op processor Pi van e<strong>en</strong> synchrone hyperkubus<br />
Qd<br />
Output: som s = ∑ n−1<br />
i=0 ai op P0<br />
1: for ℓ from d − 1 to 0 do<br />
2: if 0 ≤ i ≤ 2ℓ − 1 th<strong>en</strong><br />
3: Stel ai ← ai + ai (ℓ)<br />
Algoritme 3.3 Broadcast op e<strong>en</strong> synchrone hyperkubus<br />
Input: synchrone hyperkubus Qd met p = 2 d processor<strong>en</strong>; processor P0 heeft e<strong>en</strong> item x in zijn<br />
register d0<br />
Output: elke processor Pi heeft e<strong>en</strong> kopie van item x in zijn register di<br />
1: for ℓ from 0 to d − 1 do<br />
2: if 0 ≤ i ≤ 2 ℓ − 1 th<strong>en</strong><br />
3: Stel d i (ℓ) ← di<br />
E<strong>en</strong> e<strong>en</strong>voudige strategie kan gevolgd word<strong>en</strong> om dit probleem op te loss<strong>en</strong>. We werk<strong>en</strong> opwaarts<br />
vanaf de laagste dim<strong>en</strong>sie naar de hoogste dim<strong>en</strong>sie in de hyperkubus, in d iteraties, als volgt.<br />
Tijd<strong>en</strong>s de eerste iteratie z<strong>en</strong>dt P0 e<strong>en</strong> kopie van x naar P1. Tijd<strong>en</strong>s de tweede iteratie z<strong>en</strong>d<strong>en</strong> P0<br />
<strong>en</strong> P1 kopies van x naar P2 <strong>en</strong> P3 respectievelijk, gebruik mak<strong>en</strong>d van de links tuss<strong>en</strong> P0 <strong>en</strong> P2 <strong>en</strong><br />
tuss<strong>en</strong> P1 <strong>en</strong> P3.<br />
Algoritme 3.3 geeft de pseudocode voor dit algoritme. Net zoals in Algoritme 3.2 heeft de<br />
instructie d i (ℓ) ← di twee deelstapp<strong>en</strong>. In de eerste deelstap wordt e<strong>en</strong> kopie van het register di<br />
van processor Pi naar processor P i (ℓ) gekopieerd via de link tuss<strong>en</strong> Pi <strong>en</strong> P i (ℓ). In de tweede<br />
deelstap ontvangt processor P i (ℓ) de kopie <strong>en</strong> slaat ze op in zijn register d i (ℓ).<br />
Ook dit algoritme vereist d = log 2 p parallelle stapp<strong>en</strong>.<br />
Bov<strong>en</strong>staande algoritm<strong>en</strong> voor de hyperkubus behor<strong>en</strong> tot de klasse van g<strong>en</strong>ormaliseerde algoritm<strong>en</strong>.<br />
De hyperkubusalgoritm<strong>en</strong> in deze klasse gebruik<strong>en</strong> in elke tijdse<strong>en</strong>heid één dim<strong>en</strong>sie<br />
van de hyperkubus, zodanig dat ope<strong>en</strong>volg<strong>en</strong>de dim<strong>en</strong>sies in ope<strong>en</strong>volg<strong>en</strong>de tijdse<strong>en</strong>hed<strong>en</strong> gebruikt<br />
word<strong>en</strong>. Bov<strong>en</strong>staande algoritm<strong>en</strong> behor<strong>en</strong> zelfs tot de meer gespecialiseerde klass<strong>en</strong> van<br />
volledig g<strong>en</strong>ormaliseerde algoritm<strong>en</strong>, dit zijn g<strong>en</strong>ormaliseerde algoritm<strong>en</strong> met de bijkom<strong>en</strong>de<br />
voorwaarde dat elk van de d dim<strong>en</strong>sies van de hyperkubus in sequ<strong>en</strong>tie gebruikt wordt (ofwel in<br />
stijg<strong>en</strong>de volgorde, zoals bij het voorbeeld van broadcasting, ofwel in dal<strong>en</strong>de volgorde, zoals<br />
bij het voorbeeld van het sommer<strong>en</strong> van e<strong>en</strong> rij).<br />
3.4 Communicatie-algoritm<strong>en</strong><br />
Zoals reeds vermeld wissel<strong>en</strong> processor<strong>en</strong> in het netwerkmodel gegev<strong>en</strong>s uit door onderlinge<br />
communicatie via verbinding<strong>en</strong>. Deze communicatie heeft e<strong>en</strong> grote invloed op de efficiëntie van<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