Inleiding
Zelfs wanneer je nooit games speelt, zijn er anno 2013 voldoende redenen om tóch te investeren in een capabele videokaart. Hardware.Info duikt opnieuw in de wereld van GPGPU, waar sinds ons laatste verslag de nodige nuttige toepassingen bij zijn gekomen. Welke kaart kunt je het beste kiezen voor bijvoorbeeld Adobe Photoshop of Cyberlink PowerDirector?
De belangrijkste reden om een snelle videokaart te kopen is voor de meeste mensen nog altijd betere prestaties bij 3D-games. De supersnelle chips op moderne kaarten worden echter al lang niet meer voor het berekenen van 3D-beelden alleen gebruikt. De laatste jaren is de GPU getransformeerd van een chip die eigenlijk maar één taak kan uitvoeren, naar een volledig programmeerbare processor. De GPU is tegenwoordig dus tot veel meer in staat. Het gebruiken van de videokaart voor andere taken dan 3D-beelden wordt in jargon GPGPU genoemd: General Purpose GPU.
De term GPGPU viel in 2005 voor het eerst op Hardware.Info, in een nieuwsbericht over Nvidia, dat werkte aan het inzetten van haar videokaarten voor andere toepassingen. In deze tijd, van de GeForce 7800-serie videokaarten, had de DirectX 9 API er net voor gezorgd dat GPU’s eigen programmacode konden draaien. Sindsdien is daar het nodige aan verbeterd.
Ook AMD, destijds nog ATI, sprong snel op de GPGPU-trein, want iedereen zag wel dat deze technologie, om de snel groeiende rekenkracht van de videokaart voor andere doeleinden te gebruiken, potentie had. De reden: door de specifieke opbouw van een GPU is deze voor bepaalde taken veel geschikter dan een CPU.
Parallel
Een GPU is in de basis namelijk een compleet ander soort chip dan een CPU. ‘Normale’ processors bevatten een relatief klein aantal (twee of vier is tegenwoordig gebruikelijk) zeer krachtige rekenkernen (cores) die in feite alle soorten opdrachten goed kunnen uitvoeren. Een CPU is goed in het achter elkaar uitvoeren van verschillende soorten instructies. Het gelijktijdig uitvoeren van opdrachten is echter beperkt tot het aantal cores.
Een GPU is juist op een geheel andere gedachte gebaseerd. Deze bevat tientallen of honderden mini-cores, die elk afzonderlijk weinig krachtig zijn en puur relatief simpele instructies kunnen uitvoeren, maar dus wel met vele tegelijk werken. Een belangrijk gegeven is dat clusters van tientallen van dergelijke mini-cores binnen een GPU op iedere moment in tijd altijd exact dezelfde berekeningen of instructies moeten uitvoeren, maar dat kunnen doen op verschillende stukken data. Ofwel: als je dezelfde exact bewerking moet doen op zéér veel data, ben je met een GPU spekkoper.
Een vergelijking met de mensenwereld illustreert dit: als je je huis moet opruimen, is dat veel makkelijker om dat met één of twee mensen te doen (CPU) die precies weten waar alles moet liggen en exact de meest efficiënte route weten om de woon-, slaap- en badkamer schoon te maken. Moet je na een muziekfestival als Lowlands of Pinkpop echter een groot feestterrein opruimen, dan kun je veel beter een groep van tientallen mensen (GPU) aan het werk zetten, met de instructie om elk op een klein stukje van het terrein alle papiertjes, blikjes en andere rommel op te rapen. Omgedraaid geldt ook hier: als die honderd schoonkamers van Lowlands tegelijkertijd bij jou in huis aan de slag zouden gaan, zonder exact te weten waar alles moet liggen, zou het een chaos worden.
Het berekenen van 3D-beelden is een perfect voorbeeld van parallelle verwerking van veel data. Voor het opbouwen van een enkel beeld van je favoriete game moet bijvoorbeeld eerst voor elk van de (tien)duizenden driehoeken waaruit een 3D-scène is opgebouwd de exacte locatie op het scherm worden bepaald. Uiteindelijk wordt het beeld omgezet in pixels en voor elk pixel moet weer het effect van alle lichtbronnen in het spel berekend worden. Ofwel: meerdere keren exact dezelfde berekening op andere data. Maar zoals gezegd: veel meer soorten algoritmes profiteren van chips die snel parallel kunnen werken…
De Nvidia Tesla-kaarten zijn puur bestemd voor GPGPU en dus geen monitoraansluiting.