Oltre CUDA 2.0
Nella giornata di ieri abbiamo analizzato, con questo articolo, le caratteristiche tecniche e prestazionali delle
soluzioni NVIDIA GeForce GTX 280 e GTX 260, le due nuove schede video per sistemi desktop
basate su architettura GT200 e che quindi condividono con le nuove soluzioni Tesla la GPU.
Ripercorrendo le caratteristiche tecniche dettagliate della GPU GT200 appare evidente come
con questo progetto NVIDIA abbia voluto implementare una serie di funzionalità utili in
ambito di grafica tradizionale, ma particolarmente importanti in ottica di GPU Computing.
Non deve quindi sorprendere vedere come la divisione interna di NVIDIA legata alle
soluzioni Tesla, benché numericamente ben inferiore a quanto messo a disposizione per i
sistemi desktop, rivesta un ruolo sempre più importante soprattutto nella definizione di
quelle che devono essere le caratteristiche tecniche delle future generazioni di
architetture GPU attualmente allo studio. Se in termini di fatturato la divisione Tesla
può, al momento attuale, solo incidere in misura marginale rispetto alla parte desktop,
è evidente come gli sforzi di NVIDIA vadano nella direzione di un'importanza sempre più
crescente dell'ambito GPU Computing nella definizione delle proprie strategie di prodotto
e della propria evoluzione tecnologica.
Internamente ad NVIDIA questa situazione viene definita con una battuta, che vede le
GPU impegnate in un lavoro "diurno" che è quello legato alla grafica
tradizionale, e in una sorta di secondo lavoro "notturno" meno redditizio ma per
certi versi più importante legato alle elaborazioni GPU Computing. La maggiore importanza
delle elaborazioni GPU Computing non per sminure l'ambito gaming che è il core business
di NVIDIA, ma quale dato di fatto: in alcuni ambiti le soluzioni Tesla sono al momento
attuale utilizzate in elaborazioni nel settore medico quale supporto per la ricerca, tra
le altre, di cure contro il cancro.
Tutto questo riguarda la componente hardware, che non può esistere senza un proprio
alter ego software. In concomitanza con il lancio della nuova generazione di prodotti
Tesla, quindi, NVIDIA ha fatto il punto dell'evoluzione di CUDA, acronimo di Compute
Unified Device Architecture. Questa l'architettura che NVIDIA ha sviluppato per poter
utilizzare le proprie GPU programmabili, a partire dalla serie GeForce 8, in elaborazioni
di tipo GPU Computing. CUDA è composto da 3 elementi principali:
- la componente hardware, nella forma minima di una GPU NVIDIA della serie 8 integrata in
soluzioni che appartengano alle famiglie GeForce, Quadro o Tesla;
- il Software Developer Kit (SDK) NVIDIA CUDA, comprensivo delle librerie FFT, BLAS e DPP;
- il compilatore C, che permette quindi un approccio alla programmazione in ambiente
familiare per i programmatori in C.

La prima versione beta di CUDA è stata resa disponibile pubblicamente da NVIDIA a
inizio 2007; a Giugno 2007 è avvenuto il lancio della prima versione finale, inizialmente
per sistemi operativi Linux e Windows XP 32bit e successivamente con evoluzioni per
sistemi operativi a 64bit e MacOS. Al momento attuale NVIDIA mette a disposizione, nel
sito Cuda Zone,
la versione 2.0 beta di CUDA, con debutto della release finale atteso a breve; nel
frattempo è stata estesa la compatibilità anche alle versioni a 32bit e a 64bit di
Windows Vista, ovviando ad una delle principali critiche emerse dagli sviluppatori con il
rilascio della prima release di CUDA.


Quali le evoluzioni prossime future attese per CUDA? NVIDIA prevede di estendere il
supporto anche a linguaggio C++ e Fortran in future evoluzioni di CUDA, oltre a gestire
cluster di CPU e sistemi con molteplici GPU contemporaneamente a disposizione. Verranno
anche estese le funzionalità di debugging, oltre ad una migliore gestione dei profili;
CUDA permetterà inoltre di compilare a breve anche per sistemi multi-core con una prima
versione del client, in release Alpha,che verrà resa disponibile a partire dal mese di
Luglio.

Un totale di 70 milioni di GPU delle serie GeForce 8 e GeForce 9 sino ad oggi immesse
in commercio rappresenta per NVIDIA una notevole base per la diffusione di CUDA e delle
elaborazioni GPU Computing; sono svariati gli ambiti applicativi che possono beneficiare
della presenza di una GPU per eseguire elaborazioni parallele, permettendo di ottenere
incrementi prestazionali di notevole portata rispetto a quanto accessibile con le
tradizionali CPU.
NVIDIA, tuttavia, non prevede che in futuro vi sarà un completo abbandono delle CPU,
ma che queste si affiancheranno alle GPU affinché le differenti tipologie di calcoli
possano venir suddivisi al meglio in funzione delle loro caratteristiche e di come le
varie architetture si adattino a loro. Del resto le piattaforme Tesla, ma questo vale per
qualsiasi tipologia di GPU utilizzata per elaborazioni parallele, richiedono
necessariamente una CPU per poter operare correttamente ed elaborare. Quello tra GPU e
CPU, nell'ambito del calcolo scientifico, è un rapporto di mutua dipendenza, dove la CPU
è un elemento fondamentale per permettere di elaborare mentre la GPU mostra innegabili
vantaggi prestazionali con quel codice che possa venir parallelizzato.
|
Soluzione interessante...