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.
4 Hoofdstuk 1. Inleiding<br />
op basis van hun parallelle uitvoeringstijd <strong>en</strong> hun versnelling, maar ook op basis van het aantal<br />
processor<strong>en</strong> dat ze gebruik<strong>en</strong>. De kost Cp(n) van e<strong>en</strong> parallel algoritme is het product van het<br />
aantal processor<strong>en</strong> p <strong>en</strong> het aantal stapp<strong>en</strong> dat het algoritme uitvoert, m.a.w.<br />
Cp(n) = p × Tp(n).<br />
Merk op dat e<strong>en</strong> parallel algoritme met kost Cp(n) kan omgezet word<strong>en</strong> in e<strong>en</strong> sequ<strong>en</strong>tieel algoritme<br />
dat Θ(Cp(n)) uitvoeringstijd vraagt.<br />
Voorbeeld 1.1.3. Het parallelle algoritme uit Voorbeeld 1.1.2 heeft kost Cn(n) = Θ(nlogn),<br />
hetge<strong>en</strong> slechter is dan het sequ<strong>en</strong>tiële algoritme dat uitvoeringstijd (<strong>en</strong> dus kost) T ∗ (n) = Θ(n)<br />
heeft (aangezi<strong>en</strong> het n stapp<strong>en</strong> uitvoert op 1 processor). In term<strong>en</strong> van kost is het parallelle<br />
algoritme dus niet optimaal, omdat er e<strong>en</strong> ander algoritme bestaat dat minder kost vraagt.<br />
We noem<strong>en</strong> e<strong>en</strong> algoritme kost-optimaal als Cp(n) = Θ(T ∗ (n)). Zoals we verder zull<strong>en</strong> zi<strong>en</strong>,<br />
bestaan er techniek<strong>en</strong> die dikwijls toelat<strong>en</strong> om parallelle algoritm<strong>en</strong> kost-optimaal te mak<strong>en</strong>.<br />
1.2 Modell<strong>en</strong> van parallelle computers<br />
E<strong>en</strong> algeme<strong>en</strong> aanvaard model voor het ontwerp<strong>en</strong> <strong>en</strong> analyser<strong>en</strong> van sequ<strong>en</strong>tiële algoritm<strong>en</strong><br />
bestaat uit e<strong>en</strong> c<strong>en</strong>trale verwerkingse<strong>en</strong>heid, die verbond<strong>en</strong> is met e<strong>en</strong> random-access geheug<strong>en</strong>.<br />
De typische instructieset voor dit model omvat lez<strong>en</strong> uit <strong>en</strong> schrijv<strong>en</strong> naar het geheug<strong>en</strong>, ev<strong>en</strong>als<br />
elem<strong>en</strong>taire logische <strong>en</strong> rek<strong>en</strong>kundige bewerking<strong>en</strong>. Dit model heeft zijn welslag<strong>en</strong> te dank<strong>en</strong><br />
aan zijn e<strong>en</strong>voud <strong>en</strong>erzijds <strong>en</strong> aan het feit dat het de performantie van sequ<strong>en</strong>tiële algoritm<strong>en</strong> op<br />
computers van het von Neumann-type adequaat kan inschatt<strong>en</strong>.<br />
Jammer g<strong>en</strong>oeg is er voor parallelle berek<strong>en</strong>ing<strong>en</strong> ge<strong>en</strong> dergelijk algeme<strong>en</strong> aanvaard algoritmisch<br />
model beschikbaar. E<strong>en</strong> van de red<strong>en</strong><strong>en</strong> hiervoor is het feit dat de performantie van parallelle<br />
algoritm<strong>en</strong> afhankelijk is van e<strong>en</strong> complex geheel van factor<strong>en</strong> die machine-afhankelijk zijn.<br />
Deze factor<strong>en</strong> zijn onder meer de mate waarin berek<strong>en</strong>ing<strong>en</strong> kunn<strong>en</strong> geparallelliseerd word<strong>en</strong>, het<br />
toewijz<strong>en</strong> van processor<strong>en</strong> aan deeltak<strong>en</strong>, het plann<strong>en</strong> van tak<strong>en</strong> over verscheid<strong>en</strong>e processor<strong>en</strong>,<br />
aspect<strong>en</strong> van communicatie <strong>en</strong> synchronisatie.<br />
In de praktijk word<strong>en</strong> meerdere verschill<strong>en</strong>de modell<strong>en</strong> voor parallelle computers gebruikt.<br />
We kunn<strong>en</strong> bijvoorbeeld de complexiteit van de gebruikte processor<strong>en</strong> beperk<strong>en</strong>. Wanneer e<strong>en</strong><br />
parallel algoritme op hardware-niveau wordt geïmplem<strong>en</strong>teerd, kan het gebeur<strong>en</strong> dat we niet aan<br />
elke processor de algeme<strong>en</strong>heid van e<strong>en</strong> doorsnee-processor will<strong>en</strong> gev<strong>en</strong>. Bijvoorbeeld, bij het<br />
berek<strong>en</strong><strong>en</strong> van het maximum hebb<strong>en</strong> we <strong>en</strong>kel e<strong>en</strong> kleine gespecialiseerde poort nodig die het<br />
maximum van twee inputs kan berek<strong>en</strong><strong>en</strong>. Deze poort heeft zelfs ge<strong>en</strong> lokaal geheug<strong>en</strong> nodig; ze<br />
moet <strong>en</strong>kel de grootste van de twee inputs verder doorgev<strong>en</strong>. Modell<strong>en</strong> van parallelle computers<br />
die op dit fijne niveau van parallellisme werk<strong>en</strong>, word<strong>en</strong> circuits g<strong>en</strong>oemd, naar analogie met<br />
elektrische circuits.<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