Een supercomputer is een zeer snelle en extreem parallelle computer. De technologie die hij gebruikt, is in grote mate vergelijkbaar met de technologie van je laptop of smartphone. Maar er zijn ook belangrijke verschillen.

Eigenlijk bestaat er geen enkele duidelijke definitie van het woord ‘supercomputer’ waarover iedereen het eens is. Soms gebruikt men de definitie dat een supercomputer beschikt over 1% van de rekenkracht van de snelste computer ter wereld. Maar volgens deze definitie zouden er momenteel waarschijnlijk maar enkele honderden supercomputers op de hele wereld kunnen geïnventariseerd worden. Op de site www.top500.org vind je een weliswaar onvolledige - sommige computers blijven immers geheim - ranking van de snelste computers ter wereld. Volgens de lijst van november 2014 zouden er in die periode bijvoorbeeld maar 150 supercomputers in totaal geweest zijn.

Je zou ook 1‰ als grens kunnen nemen, maar dit is al even arbitrair. Stellen dat een supercomputer minimaal X biljoen berekeningen per seconde moet kunnen uitvoeren, is al even onzinnig want door de snelle evolutie van de technologie is die definitie na enkele jaren al weer achterhaald. Zo beschikte de eerste smartphone van een bekende fabrikant die in 2007 gelanceerd werd, toen al over evenveel rekenkracht en meer geheugen dan de computer waarmee 30 jaar eerder in Europa het weer voorspeld werd. Dat was toen één van de snelste computers ter wereld. De invulling van de term ‘supercomputer’ is dus zeer tijdsgebonden. Laten we het er maar gewoon op houden dat een supercomputer een computer is die vele honderden of duizenden keren sneller is dan je smartphone of laptop. Voor de snelste computers ter wereld is dat zelfs honderdduizenden keren sneller.

Maar is die supercomputer dan zo verschillend van je laptop of smartphone? Ja en neen. Het sleutelwoord bij supercomputers is sinds pakweg 1975 parallellisme. Maar dat geldt ook voor je PC of smartphone. In de PC-wereld begon men eind jaren '90 te experimenteren met beperkte vormen van parallellisme. Enkele jaren later verschenen de eerste processoren met meerdere rekenkernen (de Engelse term hiervoor is‘cores’) die onafhankelijk van elkaar berekeningen konden uitvoeren. Een laptop heeft meestal 2 of 4 rekenkernen en een moderne smartphone heeft tegenwoordig ook al 2, 4, - in een zeldzaam geval - 8 rekenkernen. Al moet er hier aan toegevoegd worden dat die wel wat langzamer zijn dan die van je laptop. Die technologie is ontwikkeld in de supercomputerwereld.

Rond 1975 begon men met zogenaamde vectorprocessoren te experimenteren. Dit zijn processoren die eenzelfde bewerking op een rij getallen tegelijkertijd uitvoeren, en kort daarna met computers met meerdere processoren die onafhankelijk van elkaar werken. Varianten van deze technologieën vind je vandaag terug in de processorchips van een laptop of smartphone. In de jaren '80 ging men ook experimenteren met een andere vorm van parallellisme. Eenvoudige processoren – dit was soms eenvoudigweg de standaardprocessor uit een toenmalige PC – werden met snelle netwerken met elkaar verbonden en werkten samen om grote problemen op te lossen. Deze machines waren goedkoper om te ontwikkelen en veel eenvoudiger om te bouwen, maar vroegen meer aanpassingen aan de software.

In moderne supercomputers is parallellisme tot in het extreme doorgedreven. In de meeste supercomputers zijn alle hierboven vermelde vormen van parallellisme terug te vinden. En dit kan extreme vormen aannemen. Allemaal steunen ze op één of andere vorm van vectorrekenen of verwante technologieën en bestaan ze uit bouwblokken - die meestal aangeduid worden met de Engelse term nodes - die enkele tientallen rekenkernen verenigen en met een snel netwerk aan elkaar gekoppeld zijn tot een groter geheel. Vandaar dat men dan ook dikwijls spreekt van een rekencluster.

Supersnelle computers moeten ook supersnel data kunnen inlezen of wegschrijven. Ook hier is parallellisme opnieuw het sleutelwoord. Veel supercomputers hebben tientallen netwerkkabels die de verbinding met de buitenwereld verzorgen. En hun schijfgeheugen bestaat uit vele honderden harde schijven of SSDs die samen gekoppeld worden tot één supergroot en supersnel permanent geheugen. Die technologie is weliswaar iets minder van toepassing op je laptop. Het zou gewoon niet praktisch zijn om rond te zeulen met een laptop met 4 harde schijven. Toch vind je deze technologie ook een beetje terug in de moderne snelle SSD drive in sommige laptops en smartphones. De snellere exemplaren gebruiken meerdere geheugenchips in parallel. En voor de servers die het merendeel van je gegevens opslaan, is het een standaard technologie.

Maar zoals we eerder al enigszins aangaven, een supercomputer is meer dan enkel hardware. Hij heeft ook aangepaste software nodig. Het turbo-pascal of Java-programmaatje dat je tijdens je studentenjaren schreef, zal niet zomaar 10.000 keer sneller lopen omdat het op een supercomputer draait. Integendeel, de kans is reëel dat het niet werkt of trager werkt dan op je PC. De meeste supercomputers - en alle computers van het VSC - draaien een variant van het Linux-besturingssysteem dat met extra software aangevuld wordt om van de vele rekennodes één geheel te maken. Omdat zo'n machine erg duur is, deel je die ook met anderen.

Je moet dus soms wat wachten voor je je programma kan laten lopen. Je monitor is ook niet zomaar rechtstreeks verbonden aan de supercomputer. Ook daarvoor is software nodig. Ook de toepassingssoftware moet aangepast worden. Zonder aanpassingen zal je programmaatje niet sneller lopen dan op een goede PC. Je kan natuurlijk wel honderden of duizenden kopieën tegelijk laten lopen wanneer je, bijvoorbeeld, een parameterruimte wilt verkennen. Dit wordt ‘capacity computing’ genoemd.

Maar als je echt grote problemen binnen een redelijke tijd wil oplossen, moet je toepassings-programma aangepast zijn om elk parallellisme binnen een moderne supercomputer te kunnen maximaliseren en vele honderden cores in te zetten om één groot probleem op te lossen. Dit wordt dan ‘capability computing’ genoemd. Het probleem dat je wil oplossen moet natuurlijk wel groot genoeg zijn opdat deze aanpak zinvol zou zijn. Voor ieder probleem is er wel ergens een intrinsieke grens aan de versnelling die op een supercomputer kan bereikt worden. En hoe groter je probleem, hoe hoger de versnelling die je kan bereiken.

Dit betekent ook dat het softwarepakket dat 20 jaar geleden ‘leading edge’ was in je onderzoeksgebied, nu misschien achterhaald is omdat het onvoldoende aan moderne supercomputers aangepast werd. En dit terwijl er waarschijnlijk nieuwe toepassingen zijn die veel beter gebruikmaken van een moderne supercomputer en dus veel sneller nauwkeuriger resultaten zullen genereren.

Eigenlijk geldt dit ook in zekere mate voor je PC. Ook hier heb je te maken met software die efficiënt gebruikmaakt van het aanwezige parallellisme en andere software die dat veel minder doet. Als ‘computational scientist’ of gebruiker van een supercomputer moet je dus ook voortdurend openstaan voor nieuwe evoluties binnen dat domein. Gelukkig is er voor vele toepassingsgebieden al veel zeer performante software beschikbaar die erin slaagt gebruik te maken van al het parallellisme dat je in een moderne supercomputer aantreft.