Una GPU generica (GPGPU) è un'unità di elaborazione grafica (GPU) che esegue calcoli non specializzati che normalmente sarebbero condotti dalla CPU (unità di elaborazione centrale). Normalmente, la GPU è dedicata al rendering grafico.
Le GPGPU vengono utilizzate per attività che in precedenza erano il dominio di CPU ad alta potenza, come calcoli fisici, crittografia / decrittografia, calcoli scientifici e la generazione di criptovalute come Bitcoin. Poiché le schede grafiche sono costruite per un parallelismo massiccio, possono far sembrare minuscola la velocità di calcolo anche delle CPU più potenti per molte attività di elaborazione parallela. Gli stessi shader core che consentono il rendering simultaneo di più pixel possono elaborare in modo simile più flussi di dati contemporaneamente. Sebbene uno shader core non sia complesso come una CPU, una GPU di fascia alta può avere migliaia di shader core; al contrario, una CPU multicore potrebbe avere otto o dodici core.
C'è stata una maggiore attenzione alle GPGPU da quando DirectX 10 includeva shader unificati nelle sue specifiche di shader core per Windows Vista. Linguaggi di livello superiore vengono continuamente sviluppati per facilitare la programmazione per i calcoli sulla GPU. Sia AMD / ATI che Nvidia hanno approcci alla GPGPU con le proprie API (OpenCL e CUDA, rispettivamente).
La storia delle GPU generiche
La GeForce 3 di Nvidia è stata la prima GPU con shader programmabili. A quel tempo, lo scopo era rendere la grafica 3D rasterizzata più realistica; le nuove funzionalità della GPU hanno consentito la trasformazione 3D, il bump mapping, il mapping speculare e i calcoli dell'illuminazione. La GPU 9700 di ATI, la prima scheda compatibile con DirectX 9, si avvicinava alla flessibilità di programmazione delle CPU, sebbene all'epoca fossero stati eseguiti pochi calcoli generici. Con l'introduzione di Windows Vista, in bundle con DirectX 10, gli shader cores unificati sono stati specificati come parte dello standard. Le nuove prestazioni dimostrate potenziali della GPU aumentano di diversi ordini di grandezza rispetto ai calcoli basati sulla CPU.
GPGPU e il futuro della computer grafica
Le GPU originariamente sviluppate per velocizzare il 3D rasterizzato (poiché il raytracing era troppo costoso dal punto di vista dei calcoli) hanno superato le prestazioni delle CPU per la grafica pre-renderizzata con raytracing. Sebbene il raytracing non sia ancora utilizzato nei giochi, ci sono state dimostrazioni in tempo reale. I progressi delle GPGPU significano che in un futuro non troppo lontano, la computer grafica dovrebbe essere in grado di offrire lo stesso tipo di geometria e illuminazione intensa dei film 3D.