GeForce, Tesla e Quadro
Poco meno di 1 anno fa NVIDIA ha presentato ufficialmente la prima generazione di
prodotti della famiglia Tesla: con questo nome vengono indicate soluzioni basate su GPU
specificamente destinate all'utilizzo in ambiti di calcolo parallelo, scollegate quindi
dall'abituale ambito di utilizzo con applicazioni 3D.
Alla base di quella generazione di prodotti troviamo le GPU della serie G80, nome in
codice che indica i chip video utilizzati da NVIDIA per le soluzioni video desktop della
famiglia GeForce 8800. Quell'architettura, presentata nella prima forma nel mese di
Novembre 2006, è stata la prima di NVIDIA a proporre un approccio con shader unificati e
piena programmabilità, elemento fondamentale per poter utilizzare la potenza elaborativa
propria di una GPU per elaborazioni che non siano quelle classiche di un'applicazione 3D.
Per quale motivo si vuole utilizzare una GPU, architettura sviluppata specificamente
con la finalità di garantire le migliori prestazioni possibili con software 3D, per
elaborazioni che hanno ben poco a spartire con queste ultime? La risposta a questa domanda
è estremamente semplice: la necessità di velocizzare il più possibile le operazioni di
calcolo rispetto a quanto sia oggi disponibile con i processori più veloci. In che misura
le GPU possono garantire un vantaggio prestazionale sulle CPU nell'elaborazione di calcoli
non 3D? Nel momento in cui le operazioni che devono essere seguite ricalcano il tipico set
di elaborazioni che una GPU esegue in un gioco o applicazione 3D: elevato parallelismo
delle istruzioni.
Se un'applicazione è per sua natura di tipo parallelo, cioè è composta da tanti
thread che possono essere eseguiti uno accanto all'altro da varie unità di elaborazione
senza diretta interrelazione l'uno con l'altro, le GPU permettono di evidenziare chiari ed
evidenti vantaggi prestazionali rispetto alle CPU. E' del resto la loro architettura di
base, quella dell'integrare un elevato numero di core indipendenti che prendono il nome di
stream o thread processors, che permette a queste unità di elaborazione di eccellere in
quegli ambiti nei quali il parallelizzare l'esecuzione del codice è possibile.
Sino a poco fa abbiamo indicato questo ambito di elaborazione come quello GPGPU,
General Purpose GPU, intendendo con questo l'utilizzo delle GPU per ambiti di elaborazione
non grafici. Questo concetto è presente nel mercato da tempo, in quanto i primi
esperimenti di elaborazione non grafica con le GPU risalgono al 2002. In quel caso, e sino
al debutto delle architetture a shader unificati, è sempre mancato un approccio alla
programmazione delle GPU che fosse accessibile ai programmatori in modo semplice, senza
costringere loro di fatto ad adeguare il loro codice al tradizionale approccio utilizzato
dalle GPU per le elaborazioni grafiche, cioè quello di utilizzare ed elaborare triangoli.
Per questo motivo ora parliamo di GPU Computing, cioè della possibilità di elaborare
utilizzando la potenza di calcolo di una GPU e servendosi di questa con un approccio alla
programmazione che sia il più possibile vicino a quanto abitualmente utilizzato dai
programmatori che si appoggiano a CPU per le proprie applicazioni. L'introduzione delle
prime architetture a shader unificati ha di fatto permesso di rendere maggiormente
accessibili le GPU quale strumento di elaborazione general purpose, semplificando
l'approccio dei programmatori non più costretti a programmare direttamente utilizzando un
linguaggio basato su quello delle API 3D.

NVIDIA propone differenti linee di prodotti tutti basati sulla stessa architettura di
GPU; Tesla è il brand utilizzato per identificare le soluzioni per elaborazioni
parallele, mentre con il nome di Quadro sono raccolte tutte le schede destinate
all'utilizzo in workstation grafiche. GeForce è il brand sicuramente più conosciuto dal
pubblico, in quanto identifica le soluzioni video per sistemi desktop o notebook destinate
ai videogiocatori e a coloro che necessitano di un sottosistema video più o meno
avanzato.
Se alla base delle 3 famiglie di prodotti troviamo la stessa tipologia di architettura,
è evidente che sulla carta sia possibile utilizzare indifferentemente uno di questi
prodotti per elaborazioni di GPU Computing: NVIDIA ha infatti optato per non vincolare
l'utilizzo delle proprie GPU per elaborazioni di calcolo alle sole soluzioni Tesla,
volendo in questo modo dare il più possibile spazio ai possessori di proprie GPU
programmabili. La risultante è una base disponibile, al momento attuale, di circa 70
milioni di GPU che possono venir utilizzate in abbinamento a CUDA, linguaggio di
programmazione di tipo C sviluppato da NVIDIA che permette al programmatore di utilizzare
le GPU per elaborare il proprio codice.
  
Cosa distingue quindi le 3 tipologie di prodotti? Le soluzioni Tesla sono quelle
specificamente sviluppate per GPU Computing, proponendo alcune caratteristiche tecniche
che si rivelano particolarmente utili a chi deve eseguire elaborazioni con set di dati
particolarmente ampi. Le soluzioni Quadro mantengono lo stesso livello qualitativo delle
soluzioni Tesla, ma implementano anche le funzionalità di visualizzazione a display che
possono rivelarsi utili nel momento in cui l'elaborazione GPU Computing venga affiancata
ad un utilizzo più tradizionale della scheda video per funzionalità grafiche di stampo
professionale. La serie di prodotti GeForce, infine, viene da NVIDIA indicata come
soluzioni per il development: una scheda video GeForce è facilmente accessibile da
chiunque, partendo dai prodotti più economici, ma mette a disposizione le stesse
potenzialità in elaborazione GPU Computing delle soluzioni più potenti con ovviamente
limitazioni in termini prestazionali.
Analizziamo ora quali siano le novità introdotte da NVIDIA all'interno della seconda
generazione di prodotti Tesla, indicati come Tesla serie 10 per affinità con le GPU GT200
di decima generazione.
|