NVIDIA Tesla: GPU G80 per elaborazioni GPGPU

Tesla è la nuova famiglia di prodotti NVIDIA specificamente sviluppati per elaborazioni GPGPU, dove il chip video viene utilizzato per eseguire calcoli tipicamente di competenza della CPU, ma molto più velocemente di quest'ultima. Scopriamo quali siano le caratteristiche di questi prodotti, e come una GPU possa essere utilizzata per calcoli paralleli
di Paolo Corsini pubblicato il 20 Giugno 2007 nel canale Schede VideoNVIDIATesla
Le elaborazioni GPGPU
GPGPU: questa sigla, acronimo di General Purpose Graphics Processing Unit, da un anno a questa parte caratterizza molte discussioni legate alle schede video, soprattutto nel momento in cui vengono presentate nuove generazioni di architetture video. GPGPU è, in estrema sintesi, quella combinazione tra componente hardware e software che permette di utilizzare una tradizionale GPU per elaborazioni che sono estremamente esigenti in termini di potenza di elaborazione, e che non trovano in tradizionali architetture di CPU disponibili in commercio una capacità di elaborazione sufficiente.
Si tratta, per loro natura, di elaborazioni parallele, in grado quindi di beneficiare grandemente dell'architettura che i produttori hanno implementato all'interno delle GPU più recenti. A questo si aggiunga la loro estrema programmabilità: la grafica 3D videoludica si è enormemente trasformata, passando da un insieme di istruzioni fisse e predefinite ad un approccio per il quale le GPU vengono completamente programmate utilizzando gli shader e quindi aprendosi virtualmente a qualsiasi tipo di applicazione o codice.
E' evidente che le GPU non siano la soluzione per qualsiasi scenario applicativo, in quanto alcune tipologie di applicazioni beneficiano meglio di altre: del resto se così fosse le GPU sarebbero adottate massicciamente in qualsiasi ambito, portando ad un'esclusione completa delle GPU per elaborazioni. All'atto pratico le GPU sono particolarmente adatte ad elaborazioni fortemente parallelizzate, scenario che può essere tipicamente riscontrato in elaborazioni di immagini mediche, analisi di pattern generici, ricerca di giacimenti petroliferi e di fonti naturali, analisi di modelli di rischio finanziari. Ben differenti le esigenze di scenari applicativi quali i database, la compressione dei dati, algoritmi ricorsivi e in generale elaborazioni nelle quali è richiesta una elevata logica di controllo del processo di calcolo: in questi casi una tradizionale CPU è l'architettura di riferimento e la GPU, per sua natura, non potrebbe permettere di ottenere risultati prestazionali interessanti.
Un paragone che può ben spiegare la dipendenza tra le differenti tipologie di applicazioni e lo strumento di calcolo associato è legato agli aerei: una CPU è simile ad un aereo caccia, in grado quindi di eseguire alcune elaborazioni molto velocemente ma trasportando poche persone e/o materiale. Una GPU, viceversa, è equiparabile ad un aereo di linea, più lento di un caccia ma in grado di trasportare un elevato numero di passeggeri con lo stesso viaggio: in funzione del tipo di risultato al quale si mira uno o l'altro strumento sono più efficienti, e lo stesso vale per CPU e GPU.
Quali sono i benefici di utilizzare una GPU per elaborazioni che non siano legate alla grafica 3D? La risposta è suddivisibile in differenti parti:
- vantaggi prestazionali: con applicazioni che sono parallele nella loro natura è possibile, attraverso l'ottimizzazione del software, ottenere incrementi prestazionali per certi versi impensabili, con prestazioni sino a 100 volte superiori. L'ordine di grandezza, quindi, non è quindi quello dell'incremento di alcune decine di punti percentuali, o di un raddoppio della potenza elaborativa, ma di scenari per i quali se una elaborazione con una CPU richiede una unità di tempo, nella stessa unità di tempo è possibile eseguire 100 di queste elaborazioni con una GPU.
- costo d'acquisto: i prezzi delle GPU sono allineati a quelli dei processori; è sempre vero che per utilizzare una GPU per elaborazioni di calcolo parallelo è richiesto comunque un processore, ma considerando il costo di una GPU top di gamma rispetto all'insieme di processori in parallelo che permettono di ottenere la stessa potenza elaborativa con una specifica applicazione il beneficio economico dell'utilizzo di una GPU è evidente.
- tasso di aggiornamento tecnologico: i produttori sviluppano nuove GPU con un tasso di aggiornamento ben più rapido di quanto non avvenga nel mercato dei processori. Se per le CPU si possono assistere ad incrementi delle frequenze di clock con una periodicità predefinita, l'architettura di base tende a restare immutata per periodi di tempo di 2 anni come minimo; ogni 12-18 mesi i produttori di GPU rilasciano una nuova architettura top di gamma e un suo refresh, con prestazioni più elevate, seguito da una nuova architettura che rivoluziona i livelli prestazionali della precedente.
- consumo vs prestazioni: se è assodato che le più recenti GPU top di gamma abbiano raggiunto livelli di consumo sensibilmente superiori a quelli dei processori, anche con architettura quad core, la potenza espressa per Watt dalle GPU nell'esecuzione di applicazioni GPGPU è estremamente più elevata rispetto a quanto richiesto, a parità di risultato elaborativo, da una tradizionale architettura di processore. In un periodo nel quale i consumi complessivi, rapportati alla potenza elaborativa, sono un importante elemento di valutazione di un'architettura è evidente come con elaborazioni parallele le GPU riescano ad ottenere il miglior compromesso.
Quello delle elaborazioni GPGPU è un mercato che si sta sviluppando in questi anni, e che può rappresentare un'importante opportunità sia commerciale che di sviluppo tecnologico per i produttori di GPU; non deve quindi sorprendere vedere come anche Intel abbia recentemente mosso i primi passi in questo settore, anticipando alcune informazioni preliminari sulla propria architettura nota con il nome di Larrabee e destinata proprio a questo ambito di utilizzo. Sin dallo scorso anno ATI ha immesso sul mercato una serie di schede video, basate su architettura Radeon X1950, specificamente sviluppate per applicazioni GPGPU: parliamo dei prodotti Stream Processor, attualmente raccolti sotto il marchio AMD a seguito dell'acquisizione di ATI.
Quest'oggi NVIDIA presenta il proprio nuovo marchio, Tesla, a indicare una nuova compelta famiglia di soluzioni per il calcolo parallelo, incentrate sull'utilizzo di GPU completamente programmabili. Cuore di questa iniziativa è, come facile immaginare, l'architettura G80, utilizzata sin d'ora da NVIDIA sia per le soluzioni desktop della serie GeForce 8800 che per quelle professionali Quadro FX 4600 e Quadro FX 5600. Alla base del progetto G80 troviamo la volontà di utilizzare la stessa architettura video per differenti tipologie di implementazioni, delle quali quindi i prodotti Tesla rappresentano una delle incarnazioni.
Vediamo ora in dettaglio come sia composto l'hardware delle soluzioni Tesla, come vedremo non necessariamente riconducibile solo a quello di una tradizionale scheda video, per poi passare all'analisi di CUDA, Compute Unified Device Architecture, il pacchetto con il quale è possibile programmare le GPU NVIDIA per l'esecuzione di calcolo parallelo non grafico.