CUDA 6 con Unified Memory, sviluppo più facile con le GPU

Nvidia semplifica la programmazione in parallelo con CUDA 6. Unified Memory e Drop-in Libraries sono due delle nuove caratteristiche che la prossima generazione di sviluppatori su GPU avrà a disposizione per programmare.

Avatar di Manolo De Agostini

a cura di Manolo De Agostini

Nvidia ha annunciato CUDA 6, l'ultima versione della piattaforma di elaborazione e programmazione in parallelo compatibile con le proprie schede grafiche e acceleratori Tesla. CUDA fa un nuovo passi avanti per consentire agli sviluppatori di ridurre il tempo e gli sforzi necessari per accelerare con le GPU le applicazioni scientifiche, ingegneristiche, enterprise e altre ancora.

La principale novità si chiama "Unified Memory". Nvidia ha implementato un supporto completo alla memoria unificata in CUDA. Questo significa che se finora i pool di memoria di GPU e CPU erano indirizzati in un singolo address space, richiedendo la copia delle operazioni nelle diverse memorie, con la nuova versione di CUDA queste copie non saranno necessarie. CUDA 6 pone infatti un sistema di memoria unificata sopra l'attuale struttura. I programmatori potranno così operare sui contenuti senza prima esplicitamente copiarli nella memoria.

Rappresenta quindi un toccasana per i programmatori, che non devono più gestire direttamente le copie in memoria. L'obiettivo di Nvidia è facilitare l'approccio a CUDA, attirare più sviluppatori e velocizzare il lavoro complessivo. Non sappiamo che tipo impatto abbia questa funzione sulle prestazioni, ma pensiamo che quanto proposto sia un nuovo passo avanti verso la "Unified Virtual Memory" promessa da Nvidia con l'architettura Maxwell, attesa per il 2014. Staremo a vedere.

CUDA 6 offre anche "drop-in libraries" che accelerano automaticamente i calcoli BLAS e FFTW delle applicazioni fino a otto volte, semplicemente sostituendo le librerie per CPU esistenti con le equivalenti accelerate dalla GPU. Librerie BLAS e FFT scalano ora automaticamente le prestazioni su un massimo di otto GPU per singolo nodo e offrono oltre 9 TFLOPs di prestazioni in doppia precisione per nodo, sostenendo carichi di lavoro maggiori rispetto al passato (fino a 512 GB). Lo scaling multi-GPU può essere usato anche con la nuova drop-in library BLAS.

"Gestendo automaticamente la gestione dei dati, la Unified Memory ci permette di prototipare rapidamente kernel che girano sulla GPU, riducendo la complessità del codice e i tempi di sviluppo fino al 50 percento", ha dichiarato Rob Hoekstra, manager of Scalable Algorithms Department di Sandia National Laboratories. "Avere questa possibilità sarà molto utile per determinare la scelta sul modello di programmazione da usare in futuro e porterà su GPU una quantità maggiore di codice e più sofisticato".

"Le nostre tecnologie hanno supportato importanti studios, sviluppatori di giochi e professionisti dell'animazione", ha dichiarato Paul Doyle, CEO di Fabric Engine Inc. "Ci avevano incoraggiato ad aggiungere il supporto all'accelerazione su GPU Nvidia, ma la gestione della memoria si era rivelata troppo difficile nelle produzioni più complesse. Con la Unified Memory, invece, il tutto viene gestito automaticamente, permettendo al compilatore Fabric di sfruttare le GPU Nvidia per offrire ai nostri clienti la possibilità di far girare le loro applicazioni fino a 10 volte più rapidamente". La disponibilità della versione 6 del Toolkit CUDA è attesa per i primi mesi del 2014.