Hardware Upgrade - il sito italiano sulla tecnologia - www.hwupgrade.it
« Torna all'articolo  -  Stampa
NVIDIA Tesla T10: GPU Computing di seconda generazione
Paolo Corsini - 17 Giugno 2008
"La seconda generazione di sistemi NVIDIA Tesla, per elaborazioni GPU Computing, utilizza i 240 stream processors delle nuove architetture GT200 per sfruttare la GPU con elaborazioni che non siano grafiche. Raddoppio delle prestazioni e introduzione della double precision tra le caratteristiche peculiari."
Pagina 1 - 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.

1.jpg (36339 bytes)

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.

geforce_logo.jpg (8894 bytes)quadro_logo.jpg (8798 bytes)tesla_logo.jpg (8756 bytes)

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.

Pagina 2 - Tesla serie 10: l'architettura

7.jpg (40322 bytes)

La nuova serie di soluzioni Tesla serie 10 viene presentata da NVIDIA non a caso in concomitanza con il debutto della decima generazione di GPU NVIDIA per sistemi desktop, quella incentrata al momento attuale sulle schede GeForce GTX 280 e GeForce GTX 260. L'architettura base delle soluzioni Tesla deriva dalla più potente delle due nuove soluzioni desktop: troviamo quindi 240 stream processors integrati, con pressoché 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. Grazie a questo numero di unità di elaborazione la potenza di calcolo massima teorica in single precision delle soluzioni Tesla passa da 500 Gigaflops a 1 Teraflop.

Significative innovazioni sono presenti anche dal versante memoria video: il quantitativo passa dai precedenti 1,5 Gbytes a 4 Gbytes, con significative migliorie anche in termini di bandwidth massima teorica grazie all'utilizzo di un bus che passa dai precedenti 384bit agli attuali 512bit. La risultante è un valore di bandwidth che sale da 77 GBytes al secondo a 102 GBytes al secondo, con una variazione di circa il 33%. Un ulteriore incremento in termini di banda passante è da segnalare nell'interfaccia, ora del tipo PCI Express 16x Gen 2 con quindi un raddoppio rispetto a quanto disponibile in precedenza con le soluzioni Tesla basate su architettura G80.

8.jpg (64308 bytes)

L'architettura base delle soluzioni Tesla T10 è la stessa di quelle GeForce GTX 280: la GPU è quindi invariata, con un totale di ben 1,4 miliardi di transistor e una superficie del die che supera i 600 millimetri quadrati. I 240 thread processors, ciascuno fully scalar dotato di unità di elaborazione per interi e virgola mobile al proprio interno assieme ad alcune unità di calcolo per funzioni speciali, sono suddivisi in 30 Thread Processor Array, ciascuno dei quali quindi integra al proprio interno 8 stream processors. Per ognuno di questi Thread Processor Array troviamo un'unità di elaborazione double precision: questo spiega perché la capacità di elaborazione delle soluzioni Tesla, con questo livello di precisione, sia in chiave teorica pari a circa 1/8 di quanto teoricamente ottenibile dalla GPU con single precision.

schema_gpu_1.jpg (80447 bytes)

A monte delle TPC troviamo una unità di scheduling dei thread, responsabile dell'assegnazione dei vari thread da elaborare ai vari thread processors; questi ultimi altro non sono che, nell'ottica di vedere una GPU per ambiti di GPU Computing, l'equivalente degli stream processors delle GPU in ambito grafico. Nella GPU sono presenti delle cache, utilizzate per il caching delle textures in ambito grafico; nel momento in cui la GPU è utilizzata per ambiti di GPU Computing queste cache vengono utilizzate per abbinare accessi alla memoria, così da migliorare l'efficienza complessiva e incrementare la bandwidth della memoria sia in lettura che in scrittura. L'unità indicata con il nome di Atomic permette di eseguire accesso di tipo granulare a indirizzi memoria, con vantaggi in termini di più efficiente parallelizzazione dei dati e di loro strutturazione all'interno delle unità di elaborazione.

schema_gpu_2.jpg (35042 bytes)

Osservando in dettaglio un thread processing cluster, noto nel corrispondente grafico come texture processing cluster, schematizzato le grafico qui sopra riportato, è possibile evidenziare i 3 streaming multiprocessors che lo compongono, ciascuno dotato al proprio interno di 8 thread processor (stream processor nel corrispondente grafico); in ciascuno di essi è presente della memoria locale, così che i dati presenti in ogni thread processor possano venir letti e utilizzati dagli altri presenti nello stesso streaming multiprocessor senza dover accedere alla memoria video.

4.jpg (39560 bytes)

L'inclusione della double precision, con standard IEEE754, permette ad NVIDIA di avere a disposizione una soluzione di calcolo confrontabile quanto a caratteristiche con quanto messo a disposizione dalle CPU con le istruzioni SSE2, oppure dall'SPE di Cell. Come abbiamo segnalato in precedenza, il supporto alla double precision è con le soluzioni GT200 per la prima volta implementato in una GPU: NVIDIA ha quindi optato per avere unità double precision particolarmente complete in termini di funzionalità rispetto a quanto disponibile in soluzioni alternative, con tuttavia una potenza elaborativa complessiva che scende a circa 1/8, dal punto di vista massimo teorico, rispetto a quello accessibile in single precision. E' evidente che con future evoluzioni delle proprie GPU destinate ad elaborazioni GPU Computing NVIDIA inserirà un maggior numero di transistor specificamente destinati alle elaborazioni double precision, anche grazie al feedback proveniente dalle aziende che sceglieranno di utilizzare soluzioni Tesla per le proprie necessità di calcolo parallelo.

Pagina 3 - Le soluzioni Tesla di seconda generazione: Tesla C1060

La prima serie di nuove soluzioni Tesla di seconda generazione è la scheda C1060, soluzione che riprende per costruzione e soluzioni tecniche i modelli GTX 280 e GTX 260 presentati da NVIDIA per il segmento dei sistemi desktop per videogiocatori. La scheda, da 2 Slot d'ingombro complessivo, è completamente inscatolata in una copertura plastica che permette di veicolare il flusso d'aria spostato dalla ventola direttamente verso l'esterno del case; per meglio espellere il calore NVIDIA ha praticato delle aperture supplementari sia nella parte frontale che in quella posteriore della scheda.

scheda_1_s.jpg (29948 bytes)

scheda_2_s.jpg (33399 bytes)

La scheda integra al proprio interno 240 stream processors, ciascuno con frequenza di clock di 1,33 GHz; la memoria video è presente in quantitativo di 4 GBytes, ottenuti utilizzando bus da 512 bit di ampiezza con moduli GGDR3 da 800 MHz di clock (1.600 MHz effettivi). Per mettere a disposizione un quantitativo di memoria video così elevato NVIDIA ha dovuto utilizzare 32 chip memoria, montati 16 per ciascun lato del PCB. Notiamo come la frequenza di clock della memoria utilizzata per queste schede, capace di fornire una bandwidth massima teorica di 102 GBytes al secondo, sia inferiore a quella che NVIDIA fornisce per le soluzioni desktop GeForce GTX 280: la spiegazione di questo è data dal numero di chip montati sul PCB, che impedisce di fatto di qualificare le memorie GDDR3 per frequenze più elevate senza compromettere la stabilità operativa.

scheda_4_s.jpg (27151 bytes)

La scheda è alimentata con due connettori PCI Express da 6 pin ciascuno, con lo stesso approccio quindi scelto per le soluzioni GeForce GTX 260; notiamo come per i due connettori di alimentazione sia stato scelto un posizionamento asimmetrico, con un connettore presente posteriormente e l'altro sulla parte superiore. La spiegazione di questo tipo di design è molto semplice: è sufficiente un solo connettore collegato per garantire il corretto funzionamento della scheda, e collegando solo quello posteriore è possibile montare questa scheda anche all'interno di uno chassis da 3 unità rack di ingombro fermo restanto il posizionamento verticale della scheda.

scheda_3_s.jpg (40833 bytes)

Nella parte frontale della scheda è presente un cappuccio plastico, rimosso il quale appare un connettore SLI. Quella raffigurata è una reference board preliminare: NVIDIA rimuoverà questo connettore nelle schede destinate alla produzione in quanto non richiesto per il funzionamento anche di più schede Tesla montate contemporaneamente nel sistema.

Il pannello delle connessioni posteriori è sprovvisto di qualsiasi tipo di connettore video, in quanto non richiesto per questo tipo di prodotto; stranamente il chip NVIO è comunque presente sul PCB della scheda, in quanto indispensabile per il corretto funzionamento della GPU nonostante non vengano utilizzate funzionalità di visualizzazione a display.

Pagina 4 - Tesla S1070: tutti in un server rack

Con la prima generazione di prodotti Tesla NVIDIA ha presentato un sistema server rack a 1 unità dotato di 4 schede video Tesla integrate al proprio interno; con la seconda generazione di soluzioni Tesla questo approccio viene ripetuto con il modello S1070.

server_1_s.jpg (53129 bytes)

server_2_s.jpg (54790 bytes)

La costruzione riprende quanto abbiamo visto con la precedente generazione di server CPU Computing: 4 schede video sono montate nel sistema, con ogni scheda accoppiata ad un'altra attraverso un bridge PCI Express Gen 2.0 con un approccio che ricalca di fatto quello adottato da NVIDIA per le soluzioni desktop GeForce 9800 GX2. La risultante è un server che prevede due coppie di schede Tesla, con ogni coppia terminante in una connessione PCI Express 2.0 che deve interfacciarsi ad un server di controllo supplementare.

10.jpg (37110 bytes)

L'approccio seguito da NVIDIA è pertanto identico al precedente: troviamo nuovamente per ogni server Tesla S1070 la necessità di avere almeno un server host di controllo, possibilmente con almeno 1 core di processore che sia a disposizione di ogni GPU presente nel server GPU Computing. NVIDIA ha optato per fornite, assieme al server S1070, anche i cavi di collegamento PCI Express Gen 2.0 e le schede di interfaccia con il server, queste ultime basate su un chip di controllo appositamente sviluppato dalla stessa NVIDIA.

server_3_s.jpg (30959 bytes)

server_5_s.jpg (80430 bytes)

Le connessioni External PCI Express 2.0 sono chiaramente identificabili nella parte posteriore dello chassis. Il pannello frontale è caratterizzato da una griglia che si sviluppa lungo tutta la sua larghezza, così da permettere l'adeguato ricambio d'aria all'interno del Rack. Il raffreddamento dei componenti interni è assicurato da una serie di 14 ventole, che aspirano aria dalla parte frontale soffiandola verso quella posteriore così che attraversi le alette di raffreddamento dei dissipatori di calore montati sulle schede Tesla e sugli altri componenti interni quali i bridge PCI Express.

server_4_s.jpg (81595 bytes)

Le schede Tesla utilizzate nella soluzione Rack si differenziano da quelle C1060 della pagina precedente innanzitutto per il sistema di raffreddamento: scompare la ventola per lasciare spazio ad un radiatore passivo che ricopre tutto il PCB, a diretto contatto sia con GPU che con chip memoria. Grazie a questo approccio, oltre che all'implementazione nel server di un sistema di monitoraggio termico, NVIDIA ha incrementato le frequenze di lavoro degli stream processors in questa soluzione, portandola a 1.500 MHz. Resta invece invariato il quantitativo di memoria video, sempre pari a 4 GBytes con bus da 512bit di ampiezza e frequenza di lavoro di 800 MHz (1.600 MHz effettivi) per la memoria GDDR3.

Pagina 5 - Incrementi prestazionali

Abbiamo evidenziato, nell'analisi architetturale, come una delle principali innovazioni introdotte da NVIDIA con le soluzioni Tesla serie 10 sia l'implementazione della double precision, caratteristica che è parsa subito essere la principale limitazione all'adozione della prima generazione di soluzioni Tesla per quegli ambiti di elaborazione che possono essere impostati con una elevata parallelizzazione del codice.

E' bene ricordare come non tutti gli ambiti di elaborazione necessitino di double precision: per alcuni quella single precision è ideale in quanto permette di ottenere tempi di elaborazione particolarmente ridotti, mentre in altri ambiti ci si può addirittura accontentare di half precision, così da velocizzare ulteriormente l'esecuzione. Un esempio pratico sono le elaborazioni sul genoma, con le quali l'utilizzo della single precision è più che sufficiente; in ambito finanziario la possibilità di eseguire elaborazioni in double precision è invece un elemento di notevole portata, che dovrebbe portare ad un'accelerazione nell'adozione di GPU per le elaborazioni da parte delle aziende impegnate in questi ambiti.

9.jpg (42856 bytes)

NVIDIA ha fornito alcune analisi comparative che permettono di evidenziare quale sia l'incremento prestazionale ottenibile passando da soluzioni Tesla della serie G80 a quelle di nuova generazione, indicate con il nome di T10P: si noti come gli incrementi partano da un raddoppio, chiaramente giustficato dal passaggio a 240 thread processors dagli originari 128 delle architetture G80, per evidenziare margini ancor più elevati con quelle applicazioni che beneficino, per il loro particolare dataset, di una maggiore dotazione di memoria video.

Evidenziamo in particolare i risultati ottenuti con Reverse Time Migration, che permettono di evidenziare come l'incremento nel quantitativo di memoria video montata sulla nuova generazione di scheda Tesla permetta di ottenere significativi incrementi prestazionali che vanno ben oltre quanto ottenibile grazie all'incrementato numero di stream processors e alle ottimizzazioni interne alla GPU. Il passaggio alla nuova GPU, in questo caso, ha portato ad una scalabilità di 1,9x ferma restando la dotazione di memoria video rispetto alla scheda Tesla G80; portando la memoria a 4 GBytes si è giunti invece ad un incremento delle prestazioni di 3,5x rispetto al valore iniziale. E' bene segnalare come NVIDIA non preveda di commercializare una scheda Tesla T10 con 1,5 Gbytes di memoria video: questi risultati sono stati infatti ottenuti con un engineering sample preliminare dotato di quel quantitativo di memoria.

2.jpg (54308 bytes)

Il punto di riferimento per valutare quali possano essere i benefici prestazionali dati dall'utilizzo di GPU per elaborazioni parallele tipicamente delegate alle CPU è indubbimente il confronto con quanto ottenibile con i processori: NVIDIA ha evidenziato, con la nuova famiglia di soluzioni Tesla, livelli di incrementi prestazionali variabili a seconda del tipo di codice eseguito ma in generale estremamente elevati. Incrementi che sfiorano le 150 volte sono ovviamente ottimi veicoli marketing, ottenuti sfruttando codice che si adatta in modo pressoché ideale all'elaborazione parallela via GPU; nella maggior parte dei case study che NVIDIA ci ha mostrato è stato possibile evidenziare miglioramenti medi nei tempi di elaborazione nell'ordine di 10x, risultato che richiederebbe ingenti investimenti in server tradizionali per poter essere anche solo avvicinato.

3.jpg (19942 bytes)

Un ambito di elaborazione da poco accessibile anche con architetture GPU NVIDIA è quello Folding@Home: nei dati forniti da NVIDIA si evidenzia come una GPU Tesla serie 10 sia in grado di eseguire un numero di simulazioni estremamente più elevato rispetto a quello di un processore moderno, distanziando nettamente in questo sia la cpu Cell integrata nella console Sony Playstation 3 che una fantomatica "GPU rossa" che facilmente identifichiamo nelle soluzioni RV670 di ATI.

Nel corso delle prossime settimane l'università di Stanford, responsabile di questo progetto, renderà ufficialmente disponibile una versione pubblica del client per GPU NVIDIA, utilizzabile non solo con le nuove architetture di decima generazione ma anche con le altre GPU programmabili, dalla serie GeForce 8 in poi.

Pagina 6 - 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.

12.jpg (22471 bytes)

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.

13.jpg (35905 bytes)

14.jpg (20736 bytes)

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.

11.jpg (34010 bytes)

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.