La rivoluzione GPGPU è più come una rotazione lenta.

Se sei un utente domestico medio, cosa ha mai fatto GPGPU per te oltre a fornire un altro punto elenco sulla casella del produttore di una scheda grafica?

La verità è che il computing professionale ad alte prestazioni offerto tramite GPGPU è un grande business. Circa un quarto del fatturato di 1 miliardo di dollari di Nvidia deriva da servizi "professionali", se sai cosa intendiamo. E intendiamo il super computing. Per applicazioni specifiche - spesso rendering 3D e modellazione scientifica - le farm di rendering in rete GPGPU forniscono un modo economico di fornire una potenza di calcolo enorme.

  • Il passato, presente e futuro della tecnologia multi-GPU

In tempi lontani, se volevi teraflops di potenza di elaborazione, avresti rotolato su IBM o Cray con il tuo libretto degli assegni aperto e lasciandolo andare avanti progettando sistemi di supercomputer personalizzati con raffreddamento criogenico. Oggi, i componenti standard possono fare lo stesso lavoro grazie a soluzioni software su misura.

Tutto questo duro lavoro di sviluppo alla fine arriva agli utenti umili come te e me.

Le cattive notizie, a seconda del tuo punto di vista, sono che anche dopo essere stati inglobati, gli strumenti GPGPU tendono a essere pesantemente distorti dalla matematica. Ottimo se ami la matematica, ma chi lo fa?

Fai i conti

La matematica non è una brutta cosa; in definitiva i giochi 3D sono la matematica sotto forma di trasformazioni di matrice. È solo che qualsiasi funzione GPGPU deve funzionare a un livello simile. Ciò limita le applicazioni fino a quando la ramificazione condizionale diventa mainstream, cosa che sta accadendo, ma lentamente.

Dall'altra direzione, la maggior parte dei programmi GPGPU supporta tutte le carte. Ad eccezione delle build Nvidia CUDA dedicate, la differenza principale è la quantità di lavoro della scheda, e quindi la sua massima velocità. In alcuni casi è abbastanza probabile che una scheda grafica più vecchia possa essere superata da un processore più moderno, anche se i nostri test con codifica hanno visto una relativamente scarsa Nvidia 6600 GT che fa relativamente bene.

Quindi quali programmi puoi scovare che sfrutteranno i tuoi pigri shader per GPU buoni a nulla? Bene, per iniziare, WinZip offre accelerazione OpenCL per comprimere e decomprimere file con un aumento della velocità del 20-30%.

Uno degli usi originali, e uno che rimane forte, è cracking di crittografia e password. Dai un'occhiata a CRARk. Un gioco intelligente su Crack RAR, questo programma a riga di comando dall'aspetto ostile è in realtà un cracker di password RAR hardcore, che usa GPGPU per aumentare la velocità di attacco di 20 volte. Utilizzando la sua modalità benchmark, i controlli della password sono passati da 283 al secondo a 4.281 al secondo. Dubitiamo che sarà particolarmente utile, ma è un vero esempio di ciò che può essere raggiunto. Se vuoi qualcosa di leggermente più semplice da usare, prova Parallel Recovery.

Un altro oldie ma goodie è Folding @ Home. Questa era - ed è tuttora - una delle applicazioni più conosciute di GPGPU, resa più famosa sfruttando il processore per PlayStation 3 Cell. Altrettanto intelligente è il sistema di modellazione distribuito che distribuisce le attività lavorative ai singoli sistemi. Tuttavia, nonostante la sua intelligenza e il fatto che potrebbe aiutare l'umanità a progredire, Folding @ Home in realtà non fa nulla di pratico.

Usi pratici

Il primo vero programma utile è Musemage, un processore di immagini scritto da zero sull'accelerazione GPGPU. Questo lo rende velocissimo e consente di applicare filtri, effetti e manipolazioni di immagini in tempo reale. È un pacchetto straordinariamente rapido, ed è interessante notare come un piccolo carico sulla GPU faccia un enorme guadagno nelle prestazioni del programma. Ad esempio, la regolazione dei livelli di sfocatura aggiunge solo il 5% di carico GPGPU.

La stessa cosa sta arrivando a GIMP tramite una tecnologia chiamata GEGL, ma questo non sarà completamente implementato fino alla versione 2.10. Si parlava di essere parzialmente implementato su determinati filtri per 2.8 RC1, ma per il momento non sembra essere disponibile.