Grafische processor schiet centrale processor te hulp

10 december 2010
De afgelopen jaren hebben wetenschappers en ingenieurs de grafische processor al ontdekt als bron van snelle, goedkope en zuinige verwerkingskracht. Inmiddels worden echter ook parallelle rekentaken op server en pc van de general-purpose processor naar de GPU verplaatst. Met Internet Explorer versie 9 en Firefox versie 4 komt General-Purpose Computing on Graphics Processing Units (GPGPU) naar de desktop.

Op de laatste HPC-beurs (high-performance computing) werd bekendgemaakt dat een Chinese supercomputer het hoogste benchmark-resultaat ooit heeft behaald. Met een verwerkingskracht van 2,5 exaflops (een miljoen maal een miljoen maal een miljoen floating point operations per second) is dit systeem bijna anderhalf maal sneller dan de Amerikaanse Cray XT5, die tot nu toe de ranglijsten aanvoerde. Wat de Chinese Tianhe-1A anders maakt dan de andere supercomputers, is dat deze niet alleen gebruikmaakt van general-purpose x86-processors maar ook van grafische processors. In het Chinese systeem zijn 14.336 Intel Xeon CPU’s in combinatie met 7.168 NVIDIA Tesla M2050 GPU’s verwerkt.

De komende jaren zullen we soortgelijke GPU-gebaseerde machines de puur x86-gebaseerde systemen uit de top 500 van snelste computers ter wereld zien verdringen. De afgelopen tijd heeft de wetenschappelijke en technische wereld ontdekt dat grafische processors voor specifieke werklasten veel sneller, goedkoper en zuiniger zijn dan traditionele processors. En voor wat betreft de programmeerbaarheid van de verschillende systemen maakt het steeds minder verschil. HPC- en HPTC-toepassingen (high-performance technical computing) zijn al sterk geparallelliseerd. De verwerkingskracht van general-purpose processors komt steeds meer in de vorm van many-core parallellisme beschikbaar. En grafische processors bieden steeds betere ondersteuning voor niet-grafische toepassingen. Zo heeft NVIDIA zijn GPU’s de afgelopen jaren uitgebreid met shared memory en ‘double-precision floating-points’-berekeningen. Geen van tweeën wordt normaal gesproken gebruikt in grafische toepassingen. Daar draait alles immers om het verwerken van arrays, pixels, kleuren, paletten en textures tot een beeld in de framebuffer.

Het afgelopen decennium is de grafische pijplijn steeds flexibeler en toegankelijker geworden. GPU-fabrikanten NVIDIA en ATI (inmiddels onderdeel van AMD) leveren beide programmeeromgevingen voor niet-grafische software, respectievelijk CUDA (Computer Unified Device Architecture) en Stream SDK (Software Development Kit; voorheen Close To Metal, CTM). Daarmee kunnen programmeurs de GPU inzetten voor specifieke rekentaken, om op die manier de hoofdprocessor te ontlasten. Microsoft biedt met DirectCompute een hardwareonafhankelijke application programming interface (API). Deze werd geïntroduceerd als onderdeel van DirectX11, maar kan ook met Direct­X10 gebruikt worden.
Op dit moment is CUDA de de facto standaard. Dat betekent dat met name universiteiten de afgelopen jaren hun GPGPU-toepassingen op hardware van NVIDIA hebben gebouwd. Ingenieursbureaus kunnen terecht bij leveranciers als Asus, Dell, Fujitsu, HP en Lenovo. Onder de noemer van ‘personal supercomputers’ verkopen zij x86-gebaseerde systemen voorzien van een hele rits videokaarten. NVIDIA heeft hiervoor zelfs een speciale productlijn in het leven geroepen. De Tesla-kaarten, gebaseerd op de GeForce 8 GPUs, zijn voorzien van extra geheugen en hebben geen video-uitgang. Omdat ze doorlopend moeten draaien, hebben ze bovendien extra stresstests ondergaan.

Het tijdperk van CUDA lijkt echter langzaam ten einde te lopen. Alle belangrijke spelers in deze markt – AMD, IBM, Intel en NVIDIA zelf – hebben zich achter de hardwareonafhankelijke taal OpenCL geschaard. Deze is door Apple ontwikkeld en op de markt gebracht als onderdeel van Mac OS X v10.6 (codenaam Snow Leopard). Inmiddels is de specificatie in handen van de Khronos Group. OpenCL bevat nog steeds hardwareafhankelijke topologie-informatie (denk aan het aantal kernen, groepen, communicatiekanalen et cetera) maar biedt in ieder geval een gemeenschappelijk platform voor het programmeren van GPGPU-toepassingen. Bovendien kan de taal ook worden ingezet om many-core applicaties te schrijven. Zojuist heeft ook NVIDIA echter een versie van zijn CUDA-toolkit voor x86 aangekondigd.

De versnellingen die grafische processors brengen, kunnen oplopen tot twee orden van grootten, dat wil zeggen vele tientallen tot een paar honderd maal sneller. Om die versnelling te realiseren, moet je algoritme niet alleen voldoende parallelliteit bevatten, maar moet deze ook op de gegeven architectuur passen. Ontwikkelaars programmeren de GPU volgens het stream processing-model. Daarbij wordt dezelfde functie (een zogenaamde kernel) tegelijkertijd op honderden matrixelementen (de records) tegelijk uitgevoerd. Waar traditionele supercomputers instructie/vectorgeoriënteerde SIMD-systemen (Single Instruction, Multiple Data) zijn, zijn grafische processors dus meer datageoriënteerd.
De nieuwe LOFAR-telescoop (Low Frequency Array) is een heel goed voorbeeld van een toepassing die veel baat heeft bij een GPGPU-architectuur. Het ding bestaat uit zevenduizend kleine antennes opgesteld in vijf spiraalvormige armen die vanuit Drenthe tot in Duitsland, Engeland, Frankrijk en Zweden reiken. Bij elkaar genereren die antennes 200 Gigabit per seconde aan dataverkeer. Daarmee is LOFAR een van de grootste dataverwerkers ter wereld.

Op dit moment onderzoekt Rob van Nieuwpoort bij ASTRON de mogelijkheden om de Blue Gene-supercomputer van IBM te vervangen door een sneller en goedkoper systeem. Daarbij kijkt hij met name naar multicore en GPGPU-systemen. Juist de softwarepijplijn van LOFAR leent zich bij uitstek voor verwerking door een grafische processor. Het gaat om eenvoudige berekeningen op grote hoeveelheden van kleine single-precision vectoren, met relatief weinig onderlinge afhankelijkheden.
Geen wonder dat IBM en Intel op de Supercomputing-conferentie onlangs hun ongenoegen uitten over de manier waarop de TOP500 tot stand komt. Met name die eerste heeft veel te verliezen. In theorie kunnen de 42 TFLOPS van de peperdure Blue Gene ook worden gehaald met tien ATI 5970-videokaarten. En daarmee zou IBM’s supercomputerbusiness op de lange termijn weleens dezelfde weg als zijn mainframes kunnen gaan. Weliswaar worden ook de eigen Cell-processors voor GPGPU-toepassingen ingezet, maar de toekomst daarvan is onzeker.

Dit alles wil niet zeggen dat GPGPU beperkt blijft tot supercomputers en gespecialiseerde rekensystemen. Op diezelfde Supercomputing-beurs zei Bill Dally, senior vice president Research bij NVIDIA, te verwachten dat grafische processors de komende jaren zullen doordringen in servers. Belangrijkste drijver van deze ontwikkeling is de grote efficiëntie van de GPU’s. Wil je een processor zuiniger maken, dan moet je zoveel mogelijk transistors tegelijkertijd laten bijdragen aan de berekeningen. Een dataparallelle aanpak, ook wel throughput computing genoemd, lijkt daarvoor het geschiktste model.

Maar ook op de desktop gaan we aan de GPGPU. Internet Explorer versie 9 gebruikt de grafische processor voor de rendering van vector graphics (HTML5), teksten en multimedia. Ook Firefox 4 gebruikt de GPU als hardwareaccelerator voor vector graphics. De komende tijd zullen we parallelle rekentaken steeds vaker van de CPU naar de GPU zien verdwijnen. Het gaat dan met name om multimediawerklasten die nu nog door Intels MMX-instructies (MultiMedia Extension) worden afgehandeld.Misschien heeft zorgenkindje AMD het dus nog helemaal niet zo slecht gezien met zijn Fusion-strategie, waarin general-purpose kernen, een grafische pijplijn en andere accelerators bij elkaar op dezelfde chip worden gebracht. Er gaan ook al langere tijd geruchten over een x86-kern van NVIDIA. Daarmee zou dat bedrijf een ingang krijgen in de snel parallelliserende general-purpose processormarkt.

Super-top 500

Kritiek Intel en IBM
In de wandelgangen van de conferentie Supercomputer 2010 kritiseerden medewerkers van IBM en Intel de meetmethode achter de daar gepubliceerde top 500. “De top 500 gebruikt een kunstmatig probleem – het meet 80 procent van de werkbelastingen, die normaal gesproken op een supercomputer draaien, niet. Het is geen representatieve benchmark”, verklaarde Intels John Hengeveld tegenover Computerworld. IBM’er Turek viel hem bij met: “Het is onduidelijk wat de lijst precies meet.”
De top 500 komt nu tot stand op basis van een benchmark, de Linpack-test. Dat is een verzameling in de programmeertaal Fortran geschreven routines die lineaire vergelijkingen oplossen. Dat type probleem leent zich goed voor parallellisatie. “De benchmark meet vooral hoe goed je veel processors parallel aan hetzelfde probleem kunt laten rekenen”, aldus Hengeveld. En juist daarbij helpt de inzet van grafische processors enorm.
Voor lang niet alle problemen waar supercomputers mee worden gevoed, is de ruwe rekenkracht die Linpack meet de enige, of zelfs de hoofdbepalende. Bovendien meet Linpack niet hoe snel de supercomputer gegevens weet uit te wisselen met het geheugen – een steeds belangrijker gegeven bij de groeiende datasets die supercomputers te verwerken krijgen. Juist ook bij de grafische processors – die geheel geoptimaliseerd zijn op doorvoer – wordt dat een uitdaging.
De High Performance Computing-gemeenschap heeft inmiddels overigens ook al andere benchmarks ontwikkeld. Zo bestaat er al enige tijd de HPC Challenge, die op zeven benchmarks vergelijkt. Sinds kort is er de Graph500, die de prestaties meet bij gegevensintensieve superapplicaties..
Die maten leggen het nog steeds af tegen de Linpack. Lang niet alle eigenaren van supercomputers willen tijd besteden aan het uitvoeren van deze benchmarks. En belangrijker nog: de alternatieve benchmarks missen de aantrekkingskracht van die ene maat die zo helder de ruwe rekenkracht van de supercomputer representeert.


Efficiëntie

NVIDIA’s Bill Dally: processors AMD, IBM en Intel verouderd
De erfenis die processors van AMD, IBM en Intel met zich mee torsen, staat efficiënte werking en efficiënt energiegebruik in de weg. Grafische processors zullen daardoor een steeds grotere en belangrijkere rol krijgen in computersystemen. Eerst in supercomputers, maar later ook in gewone servers. Dat is de stellige overtuiging van Bill Dally, senior vice president Research bij NVIDIA.
Volgens Dally is het grote verschil tussen centrale en grafische processing units dat de producenten van de eerste zich vooral richten op het terugdringen van wachttijden, en de laatste op doorvoersnelheid. Dat verschil heeft enorme consequenties voor de efficiëntie. “[CPU’s] hebben branch predictors die bij iedere tik van de processorklok een vertakking voorspellen die zich in het programma voordoet, of niet. Dat slurpt heel veel energie op. De volgorde van de instructies wordt aangepast om vertragingen bij de toegang tot het geheugen te maskeren. Dat kost veel energie. Er zit een set legacy-instructies in die veel interpretatie vergen. Dat kost energie. En ze doen aan speculatieve verwerking – ze voeren code uit die mogelijk gebruikt wordt, en gooien het resultaat weg als dat onnodig was. Ook dat slurpt energie”, zei Dally. Volgens hem kost de uitvoering van een instructie op een hedendaagse CPU 2 nanoJoules. Op NVIDIA’s binnenkort te verwachten grafische processors van de Fermi-generatie zal dat 200 picoJoules zijn, een verschil van een factor 10.
Dat voordeel is alleen te verkrijgen als programmatuur geparallelliseerd ontwikkeld wordt. Dally verwacht dat softwareontwikkelaars daar in toenemende mate toe zullen overgaan, gezien de voordelen die dat biedt. Hij voorspelt zelfs dat in de toekomst een computer geheel vanaf grafische processors kan opstarten, al durfde hij nog geen datum te hangen aan het moment waarop een daartoe ontworpen besturingssysteem beschikbaar is.

Lees meer over
Reactie toevoegen
De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.