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

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!