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.

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

4.1 Pipelining / Sorter<strong>en</strong> & Priemzeef<br />

4.1.1 Techniek van pipelining<br />

Bij de techniek van pipelining wordt e<strong>en</strong> taak T opgebrok<strong>en</strong> in e<strong>en</strong> sequ<strong>en</strong>tie van deeltak<strong>en</strong><br />

t1,...,tm die na mekaar uit te voer<strong>en</strong> zijn, op zodanige manier dat, wanneer deeltaak t1 afgewerkt<br />

is, er kan begonn<strong>en</strong> word<strong>en</strong> met de sequ<strong>en</strong>tie voor e<strong>en</strong> nieuwe taak T ′ , die aan hetzelfde tempo<br />

verdergaat. De deeltak<strong>en</strong> word<strong>en</strong> door verschill<strong>en</strong>de processor<strong>en</strong> (of process<strong>en</strong>) uitgevoerd. Dit<br />

proces is gelijkaardig aan de werking van e<strong>en</strong> lop<strong>en</strong>de band in e<strong>en</strong> productiesysteem.<br />

De techniek van pipelining is bruikbaar in o.m. de volg<strong>en</strong>de situaties:<br />

• wanneer meer dan één instantie van het volledige probleem moet word<strong>en</strong> opgelost;<br />

• wanneer er e<strong>en</strong> reeks gegev<strong>en</strong>s te verwerk<strong>en</strong> is, <strong>en</strong> elk gegev<strong>en</strong> meerdere bewerking<strong>en</strong><br />

vereist;<br />

• wanneer de informatie voor het start<strong>en</strong> van het volg<strong>en</strong>de proces voorwaarts kan word<strong>en</strong><br />

doorgegev<strong>en</strong> alvor<strong>en</strong>s het proces al zijn interne bewerking<strong>en</strong> afgewerkt heeft.<br />

Merk op dat systolische algoritm<strong>en</strong>, waarvan we in Paragraaf 3.2 e<strong>en</strong> voorbeeld zag<strong>en</strong>, ook<br />

dikwijls steun<strong>en</strong> op het principe van pipelining. We illustrer<strong>en</strong> de techniek van pipelining nog<br />

aan de hand van twee bijkom<strong>en</strong>de voorbeeld<strong>en</strong>.<br />

4.1.2 Sorter<strong>en</strong> via pipelining<br />

Zij gegev<strong>en</strong> e<strong>en</strong> rij van n getall<strong>en</strong>, ev<strong>en</strong>als e<strong>en</strong> rij van n processor<strong>en</strong> Pi (“slaves”) <strong>en</strong> één aparte<br />

processor P0 (“master”) die verbond<strong>en</strong> is met P1.<br />

Het algoritme werkt als volgt. Processor P0 stuurt gegev<strong>en</strong>s naar processor P1. Elke processor Pi<br />

ontvangt telk<strong>en</strong>s e<strong>en</strong> getal van processor Pi−1, houdt de kleinste van alle ontvang<strong>en</strong> getall<strong>en</strong> bij,<br />

<strong>en</strong> stuurt de andere getall<strong>en</strong> door naar processor Pi+1. Wanneer alle getall<strong>en</strong> doorgestuurd zijn,<br />

bevat elke processor het correcte getal uit de gesorteerde rij.<br />

Om de gesorteerde rij terug sam<strong>en</strong> te stell<strong>en</strong>, stuurt elke processor zijn getal naar zijn linkerbuur,<br />

<strong>en</strong> vervolg<strong>en</strong>s stuurt hij alle getall<strong>en</strong> die van de rechterbuur binn<strong>en</strong>kom<strong>en</strong> door naar de linkerbuur.<br />

Algoritme 4.1 geeft de pseudocode van dit algoritme voor processor Pi.<br />

Met p = n+1, heeft dit algoritme parallelle uitvoeringstijd Tp(n) = Θ(n) <strong>en</strong> kost Cp(n) = Θ(n 2 ).<br />

Merk op dat dit algoritme e<strong>en</strong> parallelle versie van sorter<strong>en</strong> door tuss<strong>en</strong>voeg<strong>en</strong> is.<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!