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.
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