TL;DR antwoord: GPU’s hebben veel meer processorkernen dan CPU’s, maar omdat elke GPU-kern beduidend langzamer loopt dan een CPU-kern en niet over de functies beschikt die nodig zijn voor moderne besturingssystemen, zijn ze niet geschikt voor het uitvoeren van het grootste deel van de verwerking in de dagelijkse computerwereld. Ze zijn het meest geschikt voor rekenintensieve bewerkingen zoals videoverwerking en natuurkundige simulaties.
- *
GPGPU is nog een relatief nieuw concept. GPU’s werden aanvankelijk alleen gebruikt voor het renderen van graphics; als geavanceerde technologie werd het grote aantal kernen in GPU’s ten opzichte van CPU’s benut door rekenmogelijkheden voor GPU’s te ontwikkelen, zodat zij vele parallelle gegevensstromen tegelijkertijd kunnen verwerken, ongeacht wat die gegevens ook mogen zijn. Hoewel GPU’s honderden of zelfs duizenden stroomprocessoren kunnen hebben, draaien ze elk langzamer dan een CPU-kern en hebben ze minder functies (zelfs als ze Turing compleet zijn en geprogrammeerd kunnen worden om elk programma te draaien dat een CPU kan draaien). Functies die ontbreken in GPU’s zijn onder andere interrupts en virtueel geheugen, die nodig zijn om een modern besturingssysteem te implementeren.
Met andere woorden, CPU’s en GPU’s hebben significant verschillende architecturen die ze beter geschikt maken voor verschillende taken. Een GPU kan grote hoeveelheden data in veel stromen verwerken en voert daar relatief eenvoudige bewerkingen op uit, maar is niet geschikt voor zware of complexe bewerkingen op een enkele of enkele datastromen. Een CPU is veel sneller op een per-core basis (in termen van instructies per seconde) en kan complexe bewerkingen op een enkele of enkele gegevensstromen gemakkelijker uitvoeren, maar kan niet efficiënt veel stromen tegelijk verwerken.
Als gevolg daarvan zijn GPU’s niet geschikt voor taken die niet significant profiteren van of niet kunnen worden geparallelliseerd, waaronder veel gangbare consumentenapplicaties zoals tekstverwerkers. Bovendien gebruiken GPU’s een fundamenteel andere architectuur; men zou een applicatie specifiek voor een GPU moeten programmeren om te kunnen werken, en er zijn significant verschillende technieken nodig om GPU’s te programmeren. Deze verschillende technieken omvatten nieuwe programmeertalen, aanpassingen aan bestaande talen en nieuwe programmeerparadigma’s die beter geschikt zijn om een berekening uit te drukken als een parallelle operatie die door veel stroomprocessoren moet worden uitgevoerd. Voor meer informatie over de technieken die nodig zijn om GPU’s te programmeren, zie de Wikipedia-artikelen over stream processing en parallel computing .
Moderne GPU’s zijn in staat om vectorbewerkingen en floating-point rekenkunde uit te voeren, met de nieuwste kaarten die in staat zijn om floating-pointgetallen met dubbele precisie te manipuleren. Frameworks zoals CUDA en OpenCL maken het mogelijk om programma’s te schrijven voor GPU’s, en de aard van GPU’s maken ze het meest geschikt voor zeer parallelliseerbare bewerkingen, zoals in scientific computing, waar een serie gespecialiseerde GPU-computers een levensvatbare vervanger kan zijn voor een klein rekencluster zoals in NVIDIA Tesla Personal Supercomputers . Consumenten met moderne GPU’s die ervaring hebben met Folding@home kunnen deze gebruiken om bij te dragen aan GPU-cliënten , die proteïnevouwende simulaties kunnen uitvoeren op zeer hoge snelheden en meer werk kunnen bijdragen aan het project (lees eerst de FAQ’s , met name die met betrekking tot GPU’s). GPU’s kunnen ook een betere fysicasimulatie in videogames mogelijk maken met behulp van PhysX, het versnellen van de videocodering en decodering, en het uitvoeren van andere rekenintensieve taken. Het zijn dit soort taken waarvoor GPU’s het meest geschikt zijn.
AMD is pionier op het gebied van een processorontwerp dat de Accelerated Processing Unit (APU) wordt genoemd en waarin conventionele x86 CPU-kernen met GPU’s worden gecombineerd. Deze aanpak maakt grafische prestaties mogelijk die veruit superieur zijn aan moederbordgeïntegreerde grafische oplossingen (hoewel ze niet kunnen tippen aan duurdere discrete GPU’s), en maakt een compact, goedkoop systeem met goede multimediaprestaties mogelijk zonder dat er een aparte GPU nodig is. De nieuwste Intel-processoren bieden ook geïntegreerde graphics op de chip, hoewel de concurrerende geïntegreerde GPU-prestaties momenteel beperkt zijn tot de weinige chips met Intel Iris Pro Graphics. Naarmate de technologie verder vordert, zullen we een toenemende mate van convergentie van deze ooit gescheiden onderdelen zien. AMD ziet een toekomst waarin de CPU en GPU één zijn, die naadloos kunnen samenwerken aan dezelfde taak .
Toch zijn veel taken die door pc-besturingssystemen en -toepassingen worden uitgevoerd nog steeds beter geschikt voor CPU’s, en er is veel werk nodig om een programma dat gebruik maakt van een GPU te versnellen. Omdat zoveel bestaande software gebruik maakt van de x86-architectuur, en omdat GPU’s verschillende programmeertechnieken vereisen en een aantal belangrijke functies missen die nodig zijn voor besturingssystemen, is een algemene overgang van CPU naar GPU voor dagelijks computergebruik erg moeilijk.