Nvidia Cuda 5 sfida OpenCL e rende la GPU più flessibile

Con Cuda 5 la casa di Santa Clara apporta diverse migliorie alla propria tecnologia per il calcolo parallelo. Tra queste troviamo il supporto al parallelismo dinamico, alle GPU-callable libraries, al GPUDirect? per RDMA e all'integrated development environment NVIDIA Nsight? Eclipse Edition.

Avatar di Manolo De Agostini

a cura di Manolo De Agostini

Nvidia Cuda 5 (Compute Unified Device Architecture) può essere scaricata gratuitamente dal sito NVIDIA Developer Zone. La nuova versione della piattaforma di Nvidia per il calcolo parallelo, la programmazione, l'accelerazione scientifica e la progettazione su GPU, si aggiorna dopo un anno e mezzo dalla quarta versione. "Con oltre 1.5 milioni di download e supporto a più di 180 applicazioni primarie nell'ambito ingegneristico, scientifico e commerciale, Cuda rappresenta per gli sviluppatori la modalità più popolare per trarre vantaggio dal computing basato su GPU", ha dichiarato Nvidia.

Con la nuova build Nvidia dà quindi nuova linfa vitale al suo progetto di calcolo parallelo nato nel 2006 con la serie di schede video GeForce 8 e poi mutato fino a diventare colonna portante della linea Tesla. Per Nvidia avere quanti più programmatori e istituti che usano le proprie GPU tramite CUDA vuole dire una fonte di incassi non indifferente, creando così una linea di sostentamento alternativa a quella assicurata dalle schede GeForce e il mondo del gaming. Lo spauracchio si chiama OpenCL, standard aperto che Nvidia supporta, ma che allo stesso tempo è sostenuto da una vasta gamma di concorrenti.

Per questo e non solo, i passi avanti compiuti da Cuda 5 sono molteplici. Tra le nuove funzioni troviamo il parallelismo dinamico, che consente l'accelerazione di nuovi algoritmi come quelli usati per l'adaptive mesh refinement e le applicazioni di calcolo per la fluido-dinamica. I thread della GPU possono produrre dinamicamente nuovi thread, consentendo alla GPU di adattarsi ai dati e minimizzando la comunicazione con la CPU.

Una nuova libreria CUDA BLAS consente agli sviluppatori di usare il parallelismo dinamico per le loro GPU-callable Libraries. Possono progettare plug-in API che consentono altri sviluppatori di estendere le funzionalità dei loro kernel e implementare callback sulla GPU per personalizzare le funzioni delle GPU-callable Libraries di terze parti. La capacità di "object linking" offre una soluzione efficiente per lo sviluppo di applicazioni che sfruttino la GPU, consentendo agli sviluppatori di compilare file sorgenti CUDA multipli in object file separati e unirli in applicazioni più grandi e a librerie.

Con Cuda 5 arriva anche il supporto GPUDirect per RDMA, che limita i colli di bottiglia della memoria di sistema. La tecnologia GPUDirect permette la comunicazione diretta tra GPU e altri dispositivi PCI Express e supporta l'accesso diretto alla memoria tra la GPU e le schede di rete. Riduce significativamente anche la latenza MPISendRecv tra i nodi in un cluster e migliora le prestazioni complessive.

Infine ecco Nvidia Nsight Eclipse Edition, che secondo l'azienda "consente ai programmatori di sviluppare, effettuare il debug e profilare le applicazioni GPU nell'ambito Eclipse-based IDE su piattaforma Linux e Mac OS X". Un editor e sample CUDA integrati velocizzano la generazione di codice CUDA e la rifattorizzazione automatica del codice consente di fare il porting facilmente su kernel CUDA. Un sistema integrato offre analisi delle prestazioni automatiche e permette di rimediare ai colli di bottiglia nel codice, mentre l'evidenziazione della sintassi rende più semplice differenziare il codice GPU da quello CPU.

Infine per aiutare gli sviluppatori a mettere a frutto il potenziale del parallel computing con la tecnologia Cuda, Nvidia ha presentato un centro risorse online gratuito per i programmatori CUDA a questo indirizzo. Il sito offre le ultime informazioni sulla piattaforma CUDA e sul modello di programmazione, così come l'accesso alle tecnologie e documentazione per tutti gli sviluppatori CUDA, compresi strumenti, esempi di codice, librerie, API e guide per la programmazione.