Valutazione attuale: 5 / 5

Stella attivaStella attivaStella attivaStella attivaStella attiva
 
Dicembre, da alcuni anni, è il mese più prolifico per le tecnologie di GPGPU (General-Purpose computing on Graphics Processing Units).
Pochi giorni fa, con largo anticipo sulle previsioni che ne davano l'arrivo per gennaio 2010, AMD ha deciso di rilasciare al grande pubblico la versione finale del suo kit di sviluppo ATi Stream 2.0 .
 
 
 
Lo scopo principale di questi strumenti è quello di liberare la potenza di calcolo delle schede grafiche della casa canadese, per eseguire calcoli più generici (General-Purpose, appunto), anche di natura scientifica.
La prima versione del SDK uscì nel Dicembre 2007, solo per Windows XP, e la programmazione era basata sul linguaggio Brook+, una variante di C ottimizzata per l'esecuzione massiva di stream. Su quelle fondamenta e sul sistema CTM (Close-To-Metal), una variante più complessa ma anche più potente, prese il via l'applicazione GPU di Folding@Home.

A distanza di due anni moltissime cose sono cambiate: dopo questi primi spunti dati da AMD/ATi, è stata la casa concorrente nVidia a portare la tecnologia GPGPU verso nuovi orizzonti grazie agli strumenti offerti dal loro framework, chiamato CUDA.
 
L'approvazione nel Dicembre 2008 dello standard OpenCL, inizialmente sviluppato da Apple ma poi governato dal consorzio no-profit Khronos Group, ha convinto ATi ad abbandonare lo sviluppo degli strumenti basati sul precedente Brook+ proprietario ed a ricominciare il lavoro su questo nuovo standard, con rinnovato entusiasmo.
Un anno di lavoro ci ha consegnato la prima versione stabile del framework con supporto ad OpenCL 1.0 sia per una qualsiasi CPU x86 (purché abbia il supporto SSE3) che per GPU (qui un elenco completo delle schede supportate).

Fino ad ora non abbiamo mai parlato di BOINC, ma l'interesse che può avere questo framework è palese: stiamo assistendo ora ad un rapidissimo sviluppo del mondo GPGPU nel calcolo distribuito e le statistiche mostrano (vedi figura) come da alcuni mesi la maggior parte dei FLOPS siano generati dalle schede grafiche (e così è anche su Folding@Home da quando è uscita la versione per GPU).
 

Fino ad oggi era necessario scrivere codice con un linguaggio particolare a seconda del produttore del chip installato sulla GPU: OpenCL si promette di risolvere questo impasse con un sistema unificato al quale ciascun produttore di dispositivi di calcolo può aderire.

Restano comunque ancora dei problemi: innanzitutto il framework ATi è ancora molto giovane e soffre la mancanza di librerie che agevolino lo sviluppo delle applicazioni. Poi, per natura stessa del calcolo GPGPU, rimane necessario sviluppare applicazioni ottimizzate per la scheda sulla quale dovrà essere eseguito il codice, se si vuole sfruttare veramente tutta la potenza che possono elargire.
Sarà, però, un lavoro molto più facile che nel passato, grazie anche agli sforzi che parallelamente nVidia sta portando avanti per supportare OpenCL all'interno del framework proprietario CUDA.
Il porting delle vecchie applicazioni è già iniziato. Le somiglianze con CUDA facilitano il lavoro per chi fino ad oggi ha lavorato con gli strumenti nVidia, mentre invece sul fronte ATi le differenze sono molteplici.
 
In ambito BOINC, a breve, dovremmo vedere degli sviluppi sul progetto GPUGrid.net, da alcuni mesi impegnato a riscrivere l'applicazione nel nuovo framework.
Non si attendono invece novità da parte dei Milkyway@home e Collatz Conjecture, che possiedono applicazioni altamente ottimizzate, con le routine principali scritte addirittura in CAL (Compute Abstraction Layer), uno strumento dedicato alla programmazione di basso livello erede moderno del precedente CTM.
Il manager dovrebbe adeguarsi con le solite tempistiche di Berkeley, ovverosia i lavori inizieranno dopo che ci sarà qualche applicazione che ne necessiterà il supporto.

Infine, un discorso compatibilità: in linea di principio questo nuovo framework funziona anche sulle schede della serie ATi HD 4xxx (basate sulla famiglia di chip R7xx), ma solo la nuova serie HD 5xxx (chip R8xx) ha l'hardware progettato sulla base delle specifiche OpenCL 1.0 finalizzate. Per questo motivo, le performance sono molto limitate sulle schede basate sul "vecchio" chip 7xx, a causa dell'emulazione di alcune funzioni, mentre sono già di buon livello sulla nuova famiglia di schede ATi.
 

 

Accedi per commentare