Vijftien jaar geleden had het overgrote deel van de programmeurs geen idee hoe ze om moesten gaan met object georiënteerd programmeren; vandaag de dag heeft het overgrote deel van de programmeurs geen idee hoe om te gaan met parallel programmeren.

Als ik vroeger op vakantie ging, had ik een één-pits kooktoestel. Daarmee is het helemaal niet zo lastig als het lijkt om een maaltijd te bereiden met bijvoorbeeld aardappelen, groente en vlees. Er is namelijk een serieel proces ontstaan door de beperking van die ene kookpit. Je kookt de aardappelen, giet ze af en plaatst ze in je slaapzak zodat ze warm blijven. Hetzelfde doe je met de groente. Tenslotte, als het vlees gaar is, haal je de aardappelen en de groente weer uit de slaapzak en je kunt gaan eten.

Effectief
Eigenlijk lijkt dit proces verdacht veel op de wijze waarop tot nu toe applicaties ontwikkeld werden: de applicatie voert een bepaalde functie uit (het koken), slaat de informatie op in een database (de slaapzak), voert nog meer functies uit (die gaan ook in de slaapzak) en uiteindelijk wordt alle informatie weer uit de database opgehaald en gepresenteerd aan de gebruiker. Deze manier van werken is tot vandaag de dag een algemeen geaccepteerd model. Relatief eenvoudig, maar niet echt effectief in termen van doorlooptijd en energieverbruik.

Maar dit eenvoudige proces van applicatie-ontwikkeling gaat veranderen. Mijn één-pits kooktoestel heeft ondertussen plaats gemaakt voor een toestel waarmee meerdere dingen tegelijk gekookt kunnen worden, dus parallel. Dat betekent dat de benodigde tijd voor de eerder beschreven maaltijd aanzienlijk is verkort.

Parallel
Het is u ongetwijfeld opgevallen dat nieuwe pc’s inmiddels uitgerust zijn met tenminste dual-core processoren, oftewel twee-pits kooktoestellen. Dat betekent dat onze applicaties dus ook parallel kunnen werken en dus effectiever kunnen zijn.

Maar dat is nu juist het probleem. De analysemethoden en technieken die we vandaag de dag gebruiken zijn niet uitgerust om dit te ondersteunen; de programmeertalen missen eenvoudigweg de instructies om parallelle verwerkingen te initiëren en te controleren. Bovendien zijn we niet getraind in het denken in parallelle processen.

Intel
Op dit moment wordt er druk gewerkt om voor deze uitdagingen een oplossing te vinden. OpenMP is zo’n initiatief, een open standaard voor multi-processing. Intel heeft de Parallel Studio, die inmiddels beschikbaar is. Microsoft komt met de Parallel Extension voor het .NET Framework en ga zo maar door.

Tenslotte is het interessant om te horen dat Intel verwacht dat de desktop rond 2012 vermoedelijk 64 processoren aan boord heeft. Stel de problematiek eens even voor: koken op de 64-pits kooktoestel met maar twee handen!

Wim Groenendaal is Principal IT Consultant bij Logica Management Consulting

Zie ook: Alle columns