GPGPU (general purpose graphics processing unit)

Een general-purpose GPU (GPGPU) is een grafische verwerkingseenheid (GPU) die niet-gespecialiseerde berekeningen uitvoert die normaal door de CPU (centrale verwerkingseenheid) zouden worden uitgevoerd. Gewoonlijk is de GPU bedoeld voor grafische rendering.

GPGPU's worden gebruikt voor taken die vroeger het domein waren van krachtige CPU's, zoals natuurkundige berekeningen, encryptie/decryptie, wetenschappelijke berekeningen en het genereren van cyptovaluta zoals Bitcoin.  Omdat grafische kaarten zijn gebouwd voor massaal parallellisme, kunnen ze voor veel parallelle verwerkingstaken de berekeningssnelheid van zelfs de krachtigste CPU's in het niet doen vallen. Dezelfde shader cores die het mogelijk maken om meerdere pixels tegelijk te renderen, kunnen op dezelfde manier meerdere gegevensstromen tegelijk verwerken. Hoewel een shader core lang niet zo complex is als een CPU, kan een high-end GPU duizenden shader cores hebben; een multicore CPU daarentegen kan acht of twaalf cores hebben.

Er is meer aandacht voor GPGPU's sinds DirectX 10 unified shaders heeft opgenomen in zijn shader core-specificaties voor Windows Vista. Er worden voortdurend talen op hoger niveau ontwikkeld om het programmeren voor berekeningen op de GPU te vergemakkelijken.  Zowel AMD/ATI als Nvidia benaderen GPGPU met hun eigen API's (respectievelijk OpenCL en CUDA).

De geschiedenis van GPU's voor algemeen gebruik
Nvidia's GeForce 3 was de eerste GPU die programmeerbare shaders bevatte. In die tijd was het doel om gerasterde 3D-graphics realistischer te maken; de nieuwe GPU-mogelijkheden maakten 3D-transformatie, bump mapping, specular mapping en lichtberekeningen mogelijk. ATI's 9700 GPU, de eerste kaart die geschikt was voor DirectX 9, benaderde de programmeerflexibiliteit van CPU's, hoewel er in die tijd weinig berekeningen voor algemene doeleinden werden uitgevoerd. Met de introductie van Windows Vista, gebundeld met DirectX 10, werden unified shader cores gespecificeerd als onderdeel van de standaard. Het nieuw ontdekte potentieel van GPU's toonde prestatieverbeteringen van verscheidene orden van grootte ten opzichte van CPU-gebaseerde berekeningen.

GPGPU's en de toekomst van computer graphics
GPU's die oorspronkelijk werden ontwikkeld om gerasterde 3D te versnellen (omdat raytracing rekenkundig te duur was) hebben de prestaties van CPU's voor raytraced pre-rendered graphics overtroffen. Hoewel raytracing nog niet in spelletjes wordt gebruikt, zijn er wel realtime demonstraties geweest. De vooruitgang van GPGPU's betekent dat in de niet al te verre toekomst computergraphics in staat zouden moeten zijn tot dezelfde soort intensieve geometrie en belichting als 3D-films.