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