GPGPU, de stand van zaken

22 reacties
Inhoudsopgave
  1. 1. Inleiding
  2. 2. Folding@Home
  3. 3. Compatibiliteit
  4. 4. Physics
  5. 5. Toekomst
  6. 6. Prestaties
  7. 7. Conclusie
  8. 22 reacties

Inleiding

Het was augustus 2005 toen de term GPGPU voor het eerst viel op Hardware.Info. De aanleiding was een presentatie van nVidia op Siggraph – een conferentie voor computer graphics professionals – waar men het idee lanceerde om de GPU in te gaan zetten voor andere taken dan waar deze primair voor bedoeld is. General Purpose GPU, dat is waar GPGPU dan ook voor staat. Het idee was revolutionair, maar zeker niet onrealistisch. De jaren daarvoor was de GPU immers in steeds verdere mate programmeerbaar geworden. Tot en met de GeForce 2-serie waren alle functionaliteit binnen de grafische chips zogenaamde ‘fixed function’, maar bij de in 2001 geïntegreerde GeForce 3 kregen game developers dankzij een programmeerbare pixel shader unit voor het eerst de mogelijkheid om – destijds nog erg basale – eigen 3D-effecten te programmeren. De programmeerbaarheid van GPU’s heeft sindsdien een vlucht genomen, iets waar gamers met ongekend mooie 3D-games flink van hebben geprofiteerd. De GPU transformeerde min of meer van een chip die maar één ding kan naar een breed inzetbare processor. Maar, met een groot verschil met de CPU.

CPU vs. GPU

CPU’s en GPU’s zijn beide processors, maar in de basis compleet anders. Een CPU heeft in de regel een beperkt aantal cores – 2, 4 of 6 tegenwoordig – en elk van die cores is bijzonder krachtig en flexibel te noemen. Bedenk een type berekening en de cores van een CPU kunnen het uitvoeren. Een CPU is geoptimaliseerd om compleet verschillende soorten instructies zo snel mogelijk achter elkaar uit te kunnen voeren. Een GPU daarentegen is in de basis een volledig ander type chip. In een GPU vinden we tegenwoordig tientallen of bij mid-range en high-end modellen zelfs honderden cores. Maar elk van die cores is erg simpel van opzet en kan dus alleen vrij simpele instructies uitvoeren. Daarnaast kunnen de cores binnen GPU niet allemaal los aangestuurd worden, maar voeren ze in groepen van meestal enkele tientallen telkens exact dezelfde instructie uit, zij het op andere data. Daar zit ‘m de crux: waar een CPU dus heel goed is in het achter elkaar uitvoeren van verschillende soorten complexe instructies, zijn GPU’s juist goed in taken waarbij exact dezelfde berekeningen op vele stukken data uitgevoerd moet worden. In jargon heet dat serial, respectievelijk parallel computing. Het berekenen van 3D-beelden is dan wel het meest voor de hand liggende voorbeeld van een taak die uitstekend door een parallelle processor kan worden uitgevoerd, er zijn er nog een hele boel meer te bedenken.


Een CPU bevat een beperkt aantal zeer krachtige cores, een GPU bevat tientallen of honderden simpele mini-cores.

0
*