# NVidia Tesla

Il termine Tesla viene utilizzato da nVidia per indicare una particolare tecnologia relativa alle proprie GPU che ha lo scopo di utilizzare la potenza elaborativa di tali soluzioni in ambiti relativi al calcolo parallelo spinto. Questo tipo di elaborazioni viene indicato come GPGPU, General Purpose GPU, ovvero vengono utilizzate delle GPU per l'esecuzione di calcoli paralleli particolarmente complessi, che sfruttano proprio le peculiarità architetturali di tali soluzioni che in queste elaborazioni risultano essere molto più efficienti delle tradizionali CPU.
In sostanza con il termine Tesla, nVidia ha presentato alcuni prodotti (schede aggiuntive o veri e propri Rack per sistemi server) specificatamente realizzati per l'elaborazione di questo particolare tipo di calcoli.
NVidia ha presentato la propria tecnologia Tesla il 20 giugno 2007, basandola sulle soluzioni GeForce della serie 8 utilizzate sia per le versioni desktop della serie GeForce 8800 che per quelle professionali Quadro FX 4600 e Quadro FX 5600. Alla base del progetto di queste schede vi era la GPU G80, progettata con l'esplicita volontà di utilizzare la stessa architettura video per differenti tipologie di implementazioni; tra queste, oltre alle più classiche destinate a diventare vere e proprie schede video, si sono aggiunte grazie a Tesla anche altri prodotti che però come detto, non vengono impiegati come schede video (non integrano infatti i connettori video) ma come dispositivi dedicati per il calcolo ad alte prestazioni. La creazione della linea Tesla è stata resa possibile proprio dalla caratteristica principale del progetto G80, ovvero il fatto di essere il primo chip nVidia realizzato mediante un approccio a shader unificati e pienamente programmabili. Grazie a tale caratteristica è quindi diventato possibilie utilizzare questo tipo di architetture anche per calcoli non collegati alla grafica 3D.

## GPGPU secondo Nvidia: non solo con Tesla

Sebbene, come detto, la possibilità di realizzare una linea di prodotti come Tesla, sia diventata possibile solo dopo il lancio della prima architettura unificata, la disponibilità di differenti tipologie di prodotti basati tutti sulla stessa architettura di GPU da parte di Nvidia, non è iniziata anch'essa con il lancio di G80. Già in passato infatti oltre al marchio più famoso dell'azienda, GeForce, ne sono stati presentati altri pensati per altri settori di mercato. Il marchio GeForce storicamente contraddistingue le schede video destinate ai sistemi di tutte le fasce di mercato, siano esse desktop o mobile, e il cui scopo primario è appunto la visualizzazione delle immagini a schermo. A questo, si aggiunge anche il marchio Quadro che, come accennato sopra, raccoglie tutte le soluzioni pensate e ottimizzate per l'uso professionale e in particolare integrate nelle workstation grafiche. A metà 2007 si è aggiunto anche il marchio Tesla, a sfruttare la stessa architettura comune anche alle soluzioni commercializzate con gli altri marchi.
La domanda che sorgerebbe spontanea, alla luce delle profonde similitudini a livello hardware tra le varie soluzioni sopra citate, è se tali soluzioni non possano di fatto essere intercambiabili nell'ambito delle elaborazioni GPGPU. In effetti nVidia ha deciso di 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, e al tempo stesso offrire subito un'ampia base d'appoggio per la tecnologia che risiede dietro a questo tipo di elaborazioni. Secondo stime della metà del 2008, nVidia può quindi contare su una base di circa 70 milioni di GPU che possono venir utilizzate in abbinamento a CUDA, ovvero il linguaggio di programmazione basato sul C++ sviluppato dalla stessa azienda per fornire agli sviluppatori uno strumento adeguato per implementare nelle varie applicazioni il supporto GPGPU con le soluzioni nVidia.

### Principali differenze tra GeForce, Quadro e Tesla

Come detto, le elaborazioni GPGPU sono possibili attraverso qualunque prodotto di casa nVidia basato sull'architettura del chip G80 (e ovviamente successive generazioni). Di seguito vengono riportate le peculiarità di ciascuna famiglia di prodotti, o meglio, gli obiettivi di ciascuna di esse, secondo i criteri espressi dalla stessa nVidia:
* Tesla - raggruppa tutte le soluzioni specificamente sviluppate per i calcoli GPGPU; esse non sono solo schede da inserire all'interno del case, ma anche soluzioni esterne.
* Quadro - il livello qualitativo, soprattutto dal punto di vista dell'affidabilità, è molto simile a quello delle soluzioni Tesla, ma a differenza di queste ultime sono vere e proprie schede video e integrano quindi anche le funzionalità di visualizzazione a video in modo da poter utilizzare tali schede non solo in ambito elaborazione GPGPU ma anche per un utilizzo più tradizionale per funzionalità grafiche in campo professionale.
* GeForce - raccoglie tutti i prodotti indicati da nVidia come "facilmente accessibili" da chiunque, essendo disponibile praticamente per tutte le fasce di mercato, ma mette a disposizione le stesse potenzialità in elaborazione GPGPU delle soluzioni più potenti con ovvie limitazioni in termini prestazionali.

## Prima generazione di Tesla: "Tesla T8"

Come detto, la prima generazione della tecnologia Tesla era basata sulla serie Geforce 8 delle proprie GPU e riprendeva in buona parte le caratteristiche tecniche introdotte nel chip G80.

### Caratteristiche tecniche

Partendo dalla versione più potente della gamma GeForce 8, nVidia ha realizzato una scheda che esteriormente era molto simile ad una scheda video GeForce 8800 GTX o Ultra, ma si differenziava in maniera evidente da queste ultime per la completa assenza di connettori video. Del resto, trattandosi di una soluzione hardware specificamente dedicata all'elaborazione parallela non avrebbe avuto molto senso integrare una connessione ad un display, in quanto la GPU in essa montata non viene tipicamente acquistata dall'utente per elaborazioni grafiche tradizionali.
Il G80 integrava 128 stream processors, ma la dotazione di memoria disponibile sulle schede Tesla era doppia rispetto alle controparti desktop, 1,5 GB contro 784 MB di tipo GDDR3 a 800 MHz (1600 MHz effettivi), mentre il bus rimaneva quello a 384 bit, in grado di fornire una banda passante di 77 GB/s.

### Prodotti disponibili basati su Tesla T8

La prima generazione della tecnologia Tesla era disponibile in 3 distinte categorie di prodotti:

#### Tesla D870

Chiamata anche "GPU Deskside", si trattava di una soluzione esterna da interfacciare con una workstation grafica, al cui interno trovavano posto 2 schede video "Tesla C870" collegate tra di loro attraverso la nota tecnologia SLI. Secondo nVidia, tale soluzione era in grado di offrire una potenza elaborativa massima di circa 1 TeraFLOPS a fronte di un consumo energetico pari a 550 Watt, per un costo d'acquisto di 7500 $.

#### Tesla C870

Era di fatto l'elemento base di tutte le soluzioni Tesla; il consumo massimo dichiarato da nVidia per queste schede era pari a 170 Watt a fronte di una potenza elaborativa di 518 GigaFLOPS; si tratta di valori allineati alle soluzioni desktop, ma la vera differenza era costituita dal costo d'acquisto, pari a 1499 $ e quindi sensibilmente superiore sia alle schede GTX che a quelle Ultra: del resto tali architetture erano destinate a particolari tipologie di utilizzi, per i quali il fattore costo è decisamente meno vincolante rispetto a quello di una soluzione desktop.

#### Tesla S870

Con questo prodotto nVidia dichiarò di aver pensato espressamente a chi necessita di notevoli risorse di calcolo parallelo, e infatti la lettera "S" stava ad indicare la parola "Server". Si trattava di una soluzione sviluppata espressamente per poter essere inserita all'interno di un datacenter, superando le limitazioni proprie delle workstation che non possono essere montate in Rack. All'interno erano presenti 4 schede Tesla C870, collegate tra di loro a coppia attraverso la tecnologia SLI e in grado di comunicare all'esterno attraverso una connessione PCI Express. Una conseguenza di tale approccio risiedeva nella necessità di utilizzare 2 PC esterni per gestire la logica di controllo di tale sistema, a ciascuno dei quali veniva collegata una coppia di GPU a loro volta collegate tra di loro in SLI. Ogni scheda video veniva raffreddata da un voluminoso dissipatore di calore passivo, sviluppato in modo tale che l'aria soffiata dalle 18 ventole frontali del rack potesse attraversarlo; altre ventole erano posizionate sia nell'alimentatore del sistema che in prossimità di aree interne al rack non raggiunte direttamente dal flusso generato dalle ventole principali. Secondo nVidia, il consumo massimo arrivava a 800 W per una potenza elaborativa che sfiorava i 2 TeraFLOPS ad un costo di 12000 $.

### Alcune applicazioni "reali" della prima generazione di Tesla

Al fine di dimostrare la fiducia di alcune importanti aziende nelle nuove soluzioni Tesla, nVidia ha illustrato alcune applicazioni reali della tecnologia GPGPU messa a disposizione dai nuovi prodotti:
* Acceleware e Boston Scientific - Boston Scientific è un'azienda che produce pacemakers e altre tipologie di impianti biomedici, per la costruzione dei quali vengono condotte numerose simulazioni al computer. Grazie alla collaborazione con Acceleware l'esecuzione del software SEMCAD X utilizzato per le simulazioni biomediche ha subito una accelerazione sino a 25 volte dei tempi di elaborazione, utilizzando per parte di queste la potenza elaborativa delle GPU nVidia. L'implicazione diretta di questo incremento di velocità è stata la possibilità di condurre un numero molto più elevato di simulazioni sui propri prodotti, delineando per questo le influenze e le dipendenze reciproche di un elevato numero di variabili presenti all'interno del design dei prodotti.
* Evolved Machine - In questo caso l'ambito di ricerca si spostava sull'analisi neuronale, dato che l'azienda è impegnata nello studio dei circuiti neuronali su larga scala. L'ordine di grandezza di tale tipo di elaborazioni è estremamente complesso, dato che la simulazione del comportamento di un singolo neurone richiede la risoluzione di 200 milioni di equazioni differenziali al secondo, con una potenza elaborativa stimata in circa 4 GigaFLOPS. Un'analisi completa richiede lo studio di centinaia di neuroni e delle loro interrelazioni, con una potenza elaborativa che supera i 10 TeraFLOPS. Queste simulazioni vengono eseguite sfruttando la potenza di elaborazione delle GPU, con incrementi sino a 130 volte rispetto a quanto registrato sfruttando le tradizionali CPU. Evolved Machine ha quindi implementato una struttura di GPU in cluster per questo genere di elaborazioni, con una frazione del costo richiesto per ottenere la medesima potenza elaborativa con tradizionali CPU.
* Headwave - Si tratta di un'azienda che si occupa di trivellazioni, cioè della ricerca di giacimenti naturali di gas e petrolio. In questi ambiti il ruolo della simulazione, partendo da un pacchetto di dati raccolti nell'area di possibile scavo diventa indispensabile al fine di minimizzare i costi di tale ricerca. Dato che più elevato è il numero dei dati raccolti ed elaborati e più precisi saranno i risultati dell'analisi, è chiaro come l'enorme aumento della potenza di elaborazione richiesta possa trarre ottimi benefici dallo sviluppo di software in grado di sfruttare adeguatamente la potenza delle GPU. Headwave è riuscita ad ottenere in questo modo miglioramenti del 2000% nei tempi di elaborazione rispetto all'utilizzo di tradizionali CPU.
L'utilizzo delle GPU permette quindi sia di ridurre i tempi di elaborazione delle simulazioni, che di analizzare immediatamente i dati acquisiti in modo multidimensionale direttamente nella stessa giornata nella quale essi sono stati raccolti.
* University of Illinois at Urbana-Champaign's (UIUC) - Nell'elaborazione di processi biomolecolari è stato possibile accelerare la simulazione delle interazioni tra molecole biologiche e ioni di oltre 100 volte, rispetto a quanto ottenuto con un cluster di 18 CPU; il picco di potenza elaborativa, ottenuto con una workstation dotata di 3 GPU al proprio interno, è stato di 705 GigaFLOPS. Allo stesso tempo l'ingombro limitato di queste soluzioni ha permesso di eliminare la necessità di una stanza dedicata ad un computer cluster.

## Seconda generazione di Tesla: "Tesla T10"

Dopo 1 anno dalla presentazione della prima generazione di Tesla, il 17 giugno 2008 nVidia ha annunciato l'evoluzione di questa tecnologia, appoggiandosi alla nuova generazione delle proprie GPU, conosciuta come GT200 e presentata parallelamente. Le novità introdotte nella seconda generazione di prodotti Tesla, indicati come "Tesla serie 10", per affinità con le GPU GT200 appartenenti alla decima generazione, vengono illustrate di seguito; è da evidenziare come non sia mai esistita ufficialmente un "Tesla T9", in quanto l'architettura di nona generazione è in realtà una revisione del chip G80, presentata solo pochi mesi prima della vera innovazione arrivata mediante la GPU GT200.

### Caratteristiche tecniche

La seconda generazione della tecnologia Tesla si appoggia alla versione più potente delle 2 nuove soluzioni desktop presentate da nVidia, la GeForce GTX 280. La scheda su cui si basano tutte le varianti di Tesla T10 fornisce quindi 240 stream processors, ciascuno con frequenza di clock di 1,33 GHz, offrendo quindi quasi un raddoppio nel numero delle unità di elaborazione rispetto a quanto messo a disposizione con la prima generazione di schede Tesla basate su GPU G80. Tale aumento del numero di unità di elaborazione ha portato al raddoppio della potenza di calcolo massima teorica, raggiungendo lo storico traguardo di 1 TeraFLOPS. L'elevato numero di unità di elaborazione ha comportato una GPU composta da 1,4 miliardi di transistor su una superficie del die pari a ben 600 mm².
Ulteriori, e significative, innovazioni sono arrivate anche dal versante della memoria video presente sulle schede: in elaborazioni di questo tipo, la disponibilità di memoria ultra veloce e dedicata è vitale per non creare "colli di bottiglia", e a questo scopo nVidia ha portato la dotazione di RAM video a ben 4 GB (in confronto ai precedenti 1,5 GB) ed essa è di tipo GDDR3 a 1600 MHz; inoltre, l'adozione del nuovo BUS da 512 bit (G80 aveva un BUS da 384 bit), ha portato anche ad un aumento della banda passante di tale memoria, che è passata dai precedenti 77 GB/s a ben 102 GB/s (ovvero circa il 33% in più). Un quantitativo così elevato di memoria video non sarebbe potuto essere integrato attraverso i progetti tradizionali delle schede video, e così nVida ha dovuto riprogettare il layout delle schede in modo da poter ospitare ben 32 chip di memoria, che per l'occasione sono stati montati 16 per ciascun lato della scheda. Un tale quantitativo oltre che sulla progettazione della scheda ha dovuto fare i conti anche la necessità de l raffreddamento da parte del dissipatore e quindi per non dover sostituire anche questo con una versione ancora più potente e ingombrante, nVidia ha optato per una riduzione del clock della memoria video, che è inferiore a quello delle memorie integrate nelle soluzioni desktop.
Infine anche lo standard di interconnessione è stato migliorato, diventando di tipo PCI Express 2.0 in modalità 16x; il passaggio da PCI Express a PCI Express 2.0 (a parità di linee, x16) ha consentito di raddoppiare la banda passante tra la scheda e il resto del sistema.

### Prodotti disponibili basati su Tesla T10

A differenza di quanto avvenuto nella prima generazione, con il lancio della seconda nVidia ha deciso di non offrire più un sistema di tipo "GPU Deskside" come il modello D870. Non si conoscono i motivi di tale scelta commerciale ma è probabile che tutto dipenda dallo scarso interesse del pubblico verso questo tipo di soluzione. La seconda generazione di Tesla quindi offre solo 2 categorie di prodotti, illustrate di seguito:

#### Tesla C1060

Si tratta di una scheda dedicata, simile alla soluzione "Tesla C870" appartenente alla prima generazione di Tesla, che riprende per costruzione e soluzioni tecniche il progetto delle scheda video GeForce GTX 280. Di conseguenza, sono presenti 240 stream processors e 4 GB di memoria video, funzionanti alle frequenze standard illustrate sopra.
L'incremento prestazionale rispetto all'analogo prodotto appartenente alla prima generazione è netto, e dovuto sia al raddoppio del numero degli stream processor (240 contro i precedenti 128), sia al nuovo quantitativo di memoria video, sebbene quest'ultimo sia veramente influente solo in particolari tipi di applicazioni. Secondo nVidia, con applicazioni come Reverse Time Migration si ottengono miglioramenti fino a 1,9 volte a parità di memoria video (si tratterebbe comunque di un modello non disponibile in commercio), mentre sfruttando tutti i 4 GB a disposizione è possibile arrivare anche a incrementi di 3,5 volte nei tempi di elaborazione.

#### Tesla S1070: tutti in un server rack

La versione di Tesla T10 pensata per l'inserimento in un sistema server rack a 1 unità è ancora dotato di 4 schede C1060, al pari di quanto avvenuto per la prima generazione con il modello S870 che integrava 4 schede C870.
L'approccio costruttivo e di utilizzo di questo sistema rimane molto simile alla versione analoga appartenente alla prima generazione, sebbene il BUS di interconnessione sia stato aggiornato allo standard PCI Express 2.0. Le schede Tesla integrate in questa soluzione sono leggermente differenti dalle soluzioni C1060 discrete, a parte il sistema di raffreddamento che diventa passivo (raffreddato comunque dalle ventole dell'unità rack), ogni scheda integra stream processors funzionanti a 1,5 GHz, in luogo degli originali 1,33 GHz.

## Considerazioni su calcoli "single precision" e "double precision"

Una delle principali innovazioni dell'architettura del chip GT200 rispetto al precedente G80 è data dalla possibilità da parte della nuova GPU di effettuare anche elaborazioni di tipo "double precision", ovvero proprio una delle principali critiche che era stata mossa al progetto precedente. Ovviamente non tutti gli ambiti di elaborazione necessitano di "double precision" anzi, per alcuni, come ad esempio le elaborazioni sul genoma umano, è ampiamente sufficiente la "single precision", mentre per altri ancora è possibile addirittura accontentarsi della "half precision". Tali semplificazioni infatti consentono, quando possono essere sfruttate senza inconvenienti, di ottenere tempi di elaborazione particolarmente ridotti.