Parallelle computer
Een parallelle computer is een computer die over meerdere processoren beschikt en daardoor meerdere taken tegelijk kan uitvoeren. Daarbij gaat het om taken die echt tegelijkertijd worden uitgevoerd en niet, zoals bij multitasking, om het snel heen en weer schakelen tussen taken. Traditioneel is een parallelle computer een supercomputer met duizenden tot honderdduizenden processoren, die voor wetenschappelijk rekenwerk wordt gebruikt, maar tegenwoordig zijn bijna alle computers parallel; zelfs de eenvoudigste pc's en laptops zijn van multikernprocessoren voorzien.
Een parallelle computer kan sneller zijn dan een niet-parallelle (seriële) computer omdat hij verschillende taken tegelijkertijd kan uitvoeren zonder dat deze elkaar al te veel vertragen. De gebruiker kan bijvoorbeeld een foto bewerken en tegelijkertijd naar muziek luisteren terwijl op de achtergrond het systeem een update installeert. Helemaal zonder vertraging kan het niet, omdat de verschillende taken mogelijk wel de systeembronnen (zoals geheugen, harde schijf, netwerk) moeten delen.
Parallel rekenen
[bewerken | brontekst bewerken]Het is ook mogelijk om één enkele taak door meerdere processoren te laten uitvoeren. Dat gebeurt vooral bij grootschalige (wetenschappelijke) rekenklussen. Lang niet alle taken kunnen door parallellisme versneld worden. Een recursie bijvoorbeeld kan niet parallel worden uitgevoerd omdat voor elke stap het resultaat van de vorige stap bekend moet zijn. Parallel rekenen is vooral voordelig wanneer het onderliggende probleem uit veel kleine delen bestaat die grotendeels afzonderlijk opgelost kunnen worden. Hoe meer de delen met elkaar moeten communiceren, hoe minder efficiënt de parallellisatie van het probleem wordt.
Het schrijven van goede parallelle programma's, het zogeheten gedistribueerd programmeren, is veel moeilijker dan van gewone "sequentiële" programma's, omdat de communicatie en de synchronisatie tussen de verschillende processen in acht moet worden genomen. Ook moet er rekening mee worden gehouden dat communicatie tussen de processen relatief veel tijd kan kosten en dat elk proces maar over een klein stukje geheugen beschikt, dus dat het werk en de daarvoor benodigde gegevens goed verdeeld moeten worden over de processen.