Achtergrond

Hoe programmeer je duizenden cores tegelijk?

Pieter Hijma, Henri Bal
Leestijd: 9 minuten

Bij het programmeren van multicoresystemen moet de ontwikkelaar een lastige keuze maken: op hoog abstractieniveau blijven, met mogelijk gevolgen voor de performance, of afdalen naar de architectuurdetails, waardoor de code weer minder generiek en vaak lastiger te begrijpen wordt. De UvA ontwikkelde een aanpak om programmeur en compiler samen de gevolgen van deze uitruil te laten verkennen.

Supercomputers gebruiken steeds vaker manycores voor grootschalige berekeningen. De krachtigste supercomputer van dit moment (zie de top 500 van supercomputers), de Chinese Tianhe-2, gebruikt daarvoor de Intel Xeon Phi. Deze is gebaseerd op een Pentium-architectuur van zo’n tien jaar geleden, maar elke chip bevat rond de zestig processoren met elk ook nog zestien vectoreenheden, goed voor een totaal van rond de duizend rekenkernen per chip. De nummer twee in de top 500 (Titan, van Oak Ridge National Lab) gebruikt gpu’s van Nvidia, die oorspronkelijk voor computergraphics zijn ontworpen. Moderne gpu’s hebben vele duizenden rekenkernen.

Kenmerkend voor beide vormen van manycores is dat ze volledig inzetten op grootschalig parallellisme: elke rekenkern is vele malen langzamer dan een rekenkern van een gewone moderne cpu, maar door er duizenden tegelijk op één chip te hebben (en miljoenen in een supercomputer) kunnen spectaculaire prestaties worden bereikt.

This article is exclusively available to premium members of Bits&Chips. Already a premium member? Please log in. Not yet a premium member? Become one and enjoy all the benefits.

Login

Related content