![]() |
||
| « Torna all'articolo - Stampa | ||
|
||
|
Pagina 1 - 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:
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. Pagina 2 - La famiglia di soluzioni Tesla: Deskside Pensando alle differenti tipologie di sistemi di calcolo esistenti in commercio, oltre alle risorse di budget che ogni singolo utilizzatore può destinare ad un sistema di puro calcolo parallelo, NVIDIA ha implementato la propria tecnologia G80 in 3 distinte famiglie di prodotti che rientrano tutti sotto il marchio Tesla. Il primo sistema, qui di seguito fotografato, è il GPU Deskside: si tratta di una soluzione esterna da interfacciare con una workstation grafica, al cui interno trovano posto due schede video Tesla C870 collegate tra di loro via tecnologia SLI. NVIDIA indica per questo sistema una potenza massima di 550 Watt, con una capacità di elaborazione che può raggiungere teoricamente 1 TeraFLOPs. Si nota chiatamente dalle immagini come lo chassis utilizzato sia identico a quello delle soluzioni Quadro Plex, sistemi esterni che integrano al proprio interno due schede video NVIDIA della serie Quadro collegate tra di loro via tecnologia SLI e utilizzate quale risorsa di elaborazione grafica esterna per una workstation grafica. La connessione avviene attraverso interfaccia PCI Express 16x, pertanto deve essere disponibile sulla workstation di controllo almeno uno Slot di questo tipo per poter pilotare il dispositivo correttamente. Il prezzo ufficiale per un sistema Tesla C870, questo il nome commerciale del Tesla Deskside, è stato fissato in 7.500 dollari USA. Nella parte posteriore si notano vari componenti: al centro e sulla destra troviamo le due schede Tesla C870, come segnalato collegate in parallelo attraverso bridge SLI, mentre sulla sinistra è presente una scheda NVIDIA Quadro G-Sync board, richiesta proprio per la sincronizzazione delle due GPU dedicate al calcolo parallelo. Vediamo ora quali siano i componenti utilizzati nelle schede Tesla C870, alla base di tutte le 3 differenti tipologie di prodotti Tesla. Pagina 3 - Tesla C870: la scheda per il GPGPU
La scheda video Tesla C870 è di fatto l'elemento base di tutte le soluzioni Tesla; esteriormente molto simile ad una scheda video delle serie GeForce 8800 GTX o Ultra, si differenzia da queste ultime per la completa assenza di connettori di output video. Del resto, trattandosi di una soluzione hardware specificamente dedicata all'elaborazione parallela non avrebbe molto senso integrare una connessione ad un display, in quanto la GPU in essa montata non è tipicamente acquistata dall'utente per elaborazioni grafiche tradizionali. La scheda riprende il design delle soluzioni top di gamma GeForce 8800 GTX e Ultra, come chiaramente deducibile sia osservando il sistema di raffreddamento a turbina che i due connettori di alimentazione PCI Express a 6 pin posizionati nella parte posteriore del PCB. Il consumo massimo dichiarato da NVIDIA pe queste schede è pari a 170 Watt, allineato quindi alle soluzioni desktop; ben differente invece il prezzo, pari a 1.499 dollari USA e quindi sensibilmente superiore sia alle schede GTX che a quelle Ultra: del resto tali architetture sono destinate a particolari tipologie di utilizzi, per i quali il fattore costo è decisamente meno vincolante rispetto a quello di una soluzione desktop. Nella parte posteriore della scheda NVIDIA ha fissato una slitta, necessaria per fissare la scheda all'interno dello chassis Tesla D870 o in quello di workstation grafiche; in questo caso NVIDIA prevede la presenza in un sistema di una sola scheda video, anche se la presenza di un connettore SLI lascia spazio a configurazioni basate su questa tecnologia. Segnaliamo come NVIDIA abbia implementato, su queste schede, un solo connettore SLI al posto dei due presenti sui PCB delle soluzioni GeForce 8800 GTX e GeForce 8800 Ultra. Il cuore della scheda Tesla C870 è rappresentato dalla GPU della famiglia G80, per la quale il produttore non ha dichiarato la frequenza di funzionamento: possiamo dedurre che siano stati integrati 128 stream processors, con una frequenza di funzionamento stimabile attorno ai 600 MHz per la GPU, mentre sono stati confermati i 1.500 MHz di clock degli stream processors. NVIDIA indica per questa soluzione una potenza di elaborazione massima pari a 518 GigaFLOPs. La memoria video integrata on board è di tipo GDDR3, con bus da 384bit di ampiezza e quantitativo di 1,5 Gbytes: è questo un raddoppio nella dotazione di memoria video rispetto a quanto integrato nelle soluzioni desktop top di gamma. Nella maggior parte degli scenari di utilizzo le soluzioni Tesla C870 rappresenteranno, per caratteristiche tecniche e per costo, le soluzioni di riferimento per gli utenti interessati ad effettuare elaborazioni di calcolo parallelo: il prezzo, benché elevato per una scheda singola, è sicuramente abbordabile per il professionista che vuole potenziale la propria workstation mentre la compatibilità è di fatto assicurata in tutti quei sistemi che possono utilizzare una scheda video GeForce 8800 Ultra al proprio interno. Non è tuttavia questo il prodotto della famiglia Tesla in assoluto più interessante: NVIDIA ha infatti pensato anche a chi necessita di notevoli risorse di calcolo parallelo con il modello Tesla S870, dove la lettera S rimanda alla parola Server. Pagina 4 - Tesla S870: 4 GPU in un Rack a 1 unità
La ricerca di una superiore potenza elaborativa è la chiave di lettura di tutte le soluzioni GPGPU, che mirano proprio ad utilizzare le GPU per le elaborazioni così da ottenere più elevata capacità computazionale. Non deve quindi sorprendere vedere come NVIDIA, al debutto della serie Tesla, abbia pensando anche a sistemi di calcolo parallelo che potessero essere facilmente inseriti all'interno di un datacenter, superando le limitazioni proprie degli chassis delle workstation che non possono essere montati in Rack. Da questo è nato il modello Tesla S870, primo di una serie di soluzioni server GPGPU che NVIDIA presenterà nei prossimi mesi. All'interno troviamo 4 schede Tesla C870, collegate tra di loro a coppia via tecnologia SLI e interfacciate all'esterno attraverso connessione PCI Express. La conseguenza diretta di tutto questo è la necessità di utilizzare due PC esterni per gestire la logica di controllo di questo sistema, a ciascuno dei quali viene collegata una coppia di GPU a loro volta collegate tra di loro via SLI. Per quest'ultima tecnologia manca un bridge tradizionale in quanto la connessione avviene attraverso bus PCI Express, con un bridge montato sul PCB che gestisce i flussi provenienti da ciascuna GPU: è questo un approccio molto simile a quanto adottato sulle schede GeForce 7900 GX2 e GeForce 7950 GX2, prime schede video desktop su singola connessione PCI Express 16x ad essere dotate di due GPU collegate tra di loro. Nella parte posteriore dello chassis rack spiccano le due connessioni PCI Express 2.0, ciascuna delle quali gestisce una coppia di GPU: il dissipatore di calore nero montato sul PCB verticale cela il bridge PCI Express, necessario per poter gestire il flusso dei dati proveniente dalle due GPU. Ogni scheda video è raffreddata passivamente da un voluminoso dissipatore di calore, sviluppato in modo tale che l'aria soffiata dalle ventole frontali possa attraversarlo; queste ultime sono in numero di 18 montate frontalmente, accoppiate a sandwitch così da aumentare la portata complessiva senza dover per questo incrementare le dimensioni dello chassis in altezza. Altre ventole sono state posizionate sia nell'alimentatore del sistema che in prossimità di aree dello chassis che possono non essere direttamente raggiunte dal flusso d'aria di raffreddamento. Segnaliamo come in questo sistema sia stato utilizzato per ogni scheda video un solo connettore di alimentazione PCI Express a 6 pin, segno di come la circuiteria di alimentazione sia via Slot PCI Express 16x che via alimentatore sia stata opportunamente calibrata alle specifiche esigenze del sistema. Al pari della soluzione Tesla D870, anche il sistema Rack utilizza schede Tesla C870 con 1,5 Gbytes di memoria video ciascuna: in totale un sistema di questo tipo vanta una potenza di elaborazione di 2 TeraFLOPs, con un consumo tipico indicato in 550 Watt e massimo, a pieno carico e in condizioni limite, che può raggiungere gli 800 Watt. NVIDIA prevede, in un secondo tempo, di presentare una versione "power optimized" del sistema Tesla S870: in questo caso il consumo massimo sarà pari a 550 Watt, così da rendere tale soluzione più indicata in quelle server farm, o in quegli scenari di implementazione, nei quali il consumo di esercizio rappresenti una discriminante critica.
Lo schema fornito da NVIDIA mostra chiaramente come un sistema Tesla GPU Server S870 richieda necessariamente la presenza di due altri sistemi ad esso affiancato, ciascuno dei quali sia collegato ad una delle due coppie di schede Tesla C870 montate nel sistema. Il grafico segnala inoltre una configurazione attualmente non presente, ma che nei prossimi mesi NVIDIA potrebbe adottare: parliamo di un sistema GPU Server con 8 GPU integrate, divise in due blocchi da 4 GPU ciascuno dei quali è collegato al sistema attraverso connessione PCI Express 2.0 esterna. Una soluzione di questo tipo riprende per analogia quella dei sistemi Quad SLI con schede desktop, pertanto riteniamo che potrà venir presentata da NVIDIA nel momento in cui un sistema con GPU G80 e architettura Quad SLI per sistemi desktop si affaccerà all'orizzonte, o quantomeno quando una scheda video PCI Express singola con due GPU G80, una presunta GeForce 8850 GX2 se questo sarà il nome scelto, verrà finalmente immessa in commercio dal produttore americano. NVIDIA, del resto, ha ufficialmente confermato di voler presentare un sistema Tesla GPU Server con 8 GPU in uno chassis rack a 1 unità, senza tuttavia specificare il periodo di debutto. Da ultimo, un cenno sul prezzo: NVIDIA propone questa soluzione a 12.000 dollari USA, oltre ai quali è ovviamente necessario aggiungere il costo dei due sistemi di controllo che tipicamente dovranno essere di tipo Rack a 1 unità così da meglio integrarsi nella server farm con lo chassis del Tesla GPU Server S870. Pagina 5 - Perché usare le GPU per calcoli general purpose? Gli appassionati di grafica 3D hanno potuto osservare, in questi ultimi anni, come le architetture video abbiano subito un processo di continua trasformazione che ha portato verso da una parte un realismo sempre più elevato delle scene 3D, dall'altra ad un aumento della complessità architetturale e del numero di transistor integrati all'interno delle GPU. La potenza elaborativa di un processore può essere indicata in vari modi, tra i quali uno dei più semplici ed utilizzati è indubbiamente la misura dei FLOPS, FLoating point Operations Per Second, cioè quante operazioni in virgola mobile una determinata architettura sia in grado di elaborare al secondo. Ogni nuova architettura di processore mette a disposizione degli utenti valori crescenti di FLOPS per le elaborazioni; ad incrementi della frequenza di clock, a parità di arcitettura, conseguono ovviamente altri incrementi della potenza di elaborazione massima. La misura dei FLOPS è in genere un valore massimo teorico che prevede l'utilizzo contemporaneo e al massimo delle potenzialità di tutte le unità di elaborazione presenti in una specifica architettura; resta poi da stabilire in che misura una specifica applicazione possa sfruttare tale potenza elaborativa, o sia in qualche misura limitata nell'esecuzione pratica dal tipo di calcoli effettuati.
Il grafico qui esposto evidenzia le differenze, in termini di potenza elaborativa espressa in GigaFLOPS, tra processori Intel Pentium 4 prima e Core 2 Duo poi, rispetto a quanto registrato dalle più recenti soluzioni NVIDIA partendo dalla serie GeForce FX 5800 del 2003 in avanti. E' evidente come, in termini di pura potenza elaborativa massima teorica, le GPU crescano con un tasso ben superiore alle CPU, giustificando quindi tutta l'attenzione attualmente rivolta al loro utilizzo per elaborazioni di tipo parallelo. La GPU GeForce FX 5800 era capace di un massimo di 8 GigaFLOPS, passati a 20 con le soluzioni GeForce FX 5900 Ultra alcuni mesi dopo. Le GPU della famiglia NV40, le prime pensate per API DirectX 9 e Shader Model 3.0, hanno raggiunto con le versioni GeForce 6800 Ultra la soglia di 53 GFLOPs. G70, architettura GeForce 7800 GTX, ha portato tale limite attorno ai 200 GigaFLOPS, mentre le soluzioni GeForce 8800 GTX hanno superato i 350 GigaFLOPS. Potenza di elaborazione in GigaFLOPS più elevata equivale a prestazioni sempre superiori? No, e per due ordini di motivi. Il primo è legato al fatto che questi sono dati massimi teorici, ottenibili in situazioni limite e quindi con software che possa sfruttare completamente tutte le unità di elaborazione presenti in una GPU o in una CPU; questo è molto difficile che accada all'atto pratico con applicazioni disponibili in commercio, se non con software sviluppati di fatto su misura per questo tipo di misurazione. L'efficienza dell'applicazione, detto in altro modo, è fondamentale per poter sfruttare le potenzialità teoriche di un'architettura hardware. Il secondo, ben più importante, è legato alle differenze architetturali proprie tra GPU e CPU. Nelle GPU la maggior parte della circuiteria è dedicata al data processing, mentre nelle CPU buona parte è legata al flow control e al data caching: di conseguenza le CPU non sono soluzioni ideali nell'elaborazione di processi che possono essere divisi in piccoli elementi e processati in parallelo, ambito di elaborazione nel quale invece le GPU possono eccellere in quanto si tratta, per loro natura, del tipico pacchetto di dati elaborati in un'applicazione grafica 3D.
Confrontando le strutture di base di CPU e GPU si evidenzia chiaramente come la maggior parte dei transistor implementati all'interno di una GPU siano dedicati alle execution unit, mentre in una cpu la parte di circuiteria dedicata sia al controllo che alla cache è ben più importante. Del resto, un processore deve eseguire un singolo task il più velocemente possibile, mentre una GPU deve cercare di eseguire il maggior numero di processi in parallelo, minimizzando per ciascuno il tempo di esecuzione e massimizzando il quantitativo di dati analizzati nell'unità di tempo. Tutte le applicazioni che sono basate su set di dati molto ampi, per le quali si richiede l'esecuzione di un elevato numero di operazioni aritmetiche, possono beneficiare dell'utilizzo di una GPU in modo massiccio: in questo scenario, infatti, uno stesso programma può essere ripetuto su vari pacchetti di dati in parallelo, con un elevato rapporto di operazioni aritmetiche eseguite rispetto a quelle sulla memoria. In un tradizionale approccio di elaborazione con CPU si utilizza un programma singolo che viene riprocessato sui dati da elaborare in modo sequenziale, risultando quindi essere più dipendente dalla memoria sia di sistema che cache interna al processore. Pagina 6 - CUDA: GPCPU per NVIDIA CUDA, acronimo di Compute Unified Device Architecture, è l'architettura che NVIDIA ha sviluppato per poter utilizzare le GPU della serie GeForce 8 in elaborazioni di tipo GPGPU. L'elaborazione GPGPU per NVIDIA prevede la presenza di 3 elementi:
Delle soluzioni hardware proposte da NVIDIA abbiamo parlato sino ad ora all'interno dell'articolo; diamo quindi spazio a CUDA e a come NVIDIA permetta ai programmatori di utilizzare le proprie architetture hardware per elaborazioni di General Purpose GPU. Come opera una GPU nell'elaborazioni di calcoli in parallelo? La GPU esegue un programma CUDA, operando alla stregua di un coprocessore per la CPU di sistema: il processore interpreta, organizza e invia le informazioni, mentre la GPU elabora i dati in parallelo. Parti dell'applicazione sviluppata con CUDA vengono estratte e compilate così da poter essere eseguite dalla GPU, in quanto con questo componente si ottengono tempi di elaborazione sensibilmente inferiori a quelli della CPU. E' quindi evidente che se da una parte la GPU permetta di ottenere un notevole incremento prestazionale, dall'altra sia sempre richiesta la presenza della CPU per poter eseguire le elaborazioni e governare sul processo di elaborazione proprio della GPU. CUDA è composto da 3 elementi principali: le funzionalità implementate nelle GPU NVIDIA della serie 8 specificamente rivolte all'elaborazione parallela (e sintetizzabili, di fatto, nella presenza di stream processors sino al numero di 128 nelle arhitetture più complesse), il compilatore C che permette di trasferire codice alla GPU così che venga da quest'ultima elaborato e un runtime driver specificamente sviluppato per l'elaborazione da parte della GPU.
La presenza del compilatore C permette ai programmatori di non interfacciarsi con la GPU attraverso le API, tipica forma adottata nella programmazione di applicazioni grafiche per schede video, ma di utilizzare un ambiente di lavoro familiare e dedicarsi, quindi, solo alla scrittura di codice che tenda ad eseguire operazioni parallele il più possibile. Il compilatore C permette di gestire codice destinato sia alla CPU che alla GPU, con la possibilità di inserire all'interno del codice delle specifiche note che permettano di indirizzare porzioni di codice alla GPU o alla CPU. Durante l'esecuzione di un programma che può venir elaborato dalla GPU, gli sviluppatori devono semplicemente eseguire il programma sulla CPU. Il driver CUDA carica automaticamente il programma e lo manda in esecuzione sulla GPU, avviando una comunicazione tra CPU e GPU via bus PCI Express. Il runtime driver gestisce automaticamente il trasferimento dei dati tra i dispositivi, l'esecuzione del codice da lato GPU e tutte le eventuali interazioni esistenti tra CPU e GPU nel momento in cui le operazioni di elaborazione vengono eseguite. Questo approccio permette allo sviluppatore di evitare di dover gestire manualmente le risorse di elaborazione proprie delle GPU. L'utilizzo della GPU per elaborazioni parallele è un tema estremamente interessante e altrettanto complesso. Segnaliamo due articoli, in lingua inglese, che analizzano CUDA con un dettaglio tecnico superiore a quanto qui adottato e permettono di meglio approfondire l'approccio alla programmazione sulle GPU; entrambi gli articoli presuppongono una notevole familiarità con le architetture delle GPU e con la programmazione in generale. http://www.behardware.com/articles/659-1/nvidia-cuda-preview.html http://www.beyond3d.com/content/articles/12/ Pagina 7 - Intervista con Andy Keane Abbiamo avuto occasione di discutere con Andy Keane, general manager per la divisione GPU computing di NVIDIA e a capo di fatto di tutti i progetti NVIDIA legati ai prodotti GPGPU; di seguito la serie di domande che abbiamo posto con i suoi approfondimenti. Hardware Upgrade: l'approccio di Intel e AMD sulle architetture multicore del futuro è sensibilmente differente. Da una parte la ricerca di soluzioni che integrino un elevato numero di Core identici tra di loro, e dall'altra la volontà di integrare acceleratori dedicati all'interno delle CPU accanto a tradizionali Core general purpose. Qual è il punto di vista di NVIDIA a riguardo?
Hardware Upgrade: c'è una dipendenza diretta, ed eventualmente in che misura, tra numero di GPU utilizzate per elaborazioni GPGPU e numero di Core di processore ad esse associate?
Hardware Upgrade: parliamo di rapporto con i vostri clienti: che tipo di supporto fornisce NVIDIA a loro progetti di GPGPU? Al momento attuale, infatti, questo è un mercato nel quale non esistono soluzioni preconfezionate che si possano adattare ad alcune tipologie di clienti ma la programmazione della parte software è specifica per ogni tipologia di elaborazione da eseguire.
Hardware Upgrade: può spiegarci il funzionamento del sistema Tesla GPU Server in termini di connessioni PCI Express con il sistema?
Hardware Upgrade: quando vedremo precisione floating point a 64 bit, quindi double precision, in soluzioni Tesla?
Hardware Upgrade: nel futuro dei sistemi GPU sviluppato da NVIDIA vede la possibilità che coesistano due distinti team di sviluppo, uno incentrato rispettivamente su architetture GPU per applicazioni 3D e videoludiche e l'altro su soluzioni della famiglia GPU Computing?
Pagina 8 - GPGPU: dei casi studio Assieme alla presentazione delle proprie soluzioni Tesla per l'elaborazione GPGPU, NVIDIA ha mostrato alcuni esempi pratici di come le architetture della famiglia G80 sono state implementate per elaborazioni GPGPU da differenti aziende Acceleware e Boston Scientific
Boston Scientific produce pacemakers e altre tipologie di impianti biomedici, per la costruzione dei quali vengono condotte numerose simulazioni al computer. Grazie alla partnership con Acceleware, azienda canadese, 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à è 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 sposta sull'analisi neuronale: Evolved Machine analizza i circuiti neuronali sul larga scala. L'ordine di grandezza delle elaborazioni è estremamente complesso: 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 con i processori x86 in commercio. 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
Headwave 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, è fondamentale: non è possibile poter trivellare alla ricerca di un giacimento per tentativi, in quanto i costi di ogni operazione di ricerca sarebbero insostenibili. Più elevato il numero di dati raccolti ed elaborati, più precisi saranno i risultati dell'analisi a prezzo tuttavia di un incremento del volume di elaborazioni. Headwave ha quindi sviluppato un proprio software che utilizza la GPU per eseguire queste elabotazioni, con incrementi del 2000% nei tempi di elaborazione rispetto all'utilizzo di tradizionali architetture di 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. Wisconsin-Madison e Acceleware
L'università del Wisconsin-Madison ha utilizzato le piattaforme hardware Acceleware per utilizzare le GPU NVIDIA nell'elaborazione di dati che mirano all'individuazione preventiva di cancro al seno. Un dipartimento interno a questa università ha infatti sviluppato una tecnologia che permette, attraverso impulsi elettromagnetici ad elevata frequenza e ridotta potenza di costruire una rappresentazione 3D del seno, con la quale individuare la presenza di masse tumorali. Questa tecnologia, in combinazione con una tradizionale mammografia, permette di evidenziare potenziali formazioni tumorali nel seno, oltre a effettuare trattamenti sulla forma tumorale senza richiedere interventi di chirurgia. La tecnologia di rappresentazione grafica del seno incorpora algoritmi di calcolo molto complessi, che richiedono una elevata potenza elaborativa. E' in questo ambito che la GPU permette di ottenere significativi incrementi nei tempi di elaborazione, permettendo di ottenere la generazione delle immagini in un periodo di tempo di alcune ore contro i giorni richiesti utilizzando processori tradizionali. University of Illinois at Urbana-Champaigns (UIUC)
L'University of Illinois at Urbana-Champaigns (UIUC) ha sviluppato due tool, Nanoscale Molecular Dynamics (NAMD) e Visual Molecular Dynamics (VMD), utilizzati per simulare e visualizzare processi biomolecolari. Le elaborazioni di questi software sono state accelerate utilizzando GPU per calcolare le interazioni tra molecole biologiche e ioni. Il risultato è stato quello di accelerare di oltre 100 volte i tempi di elaborazione 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 utilizzando dati reali elaborati da una di queste applicazioni. La possibilità di eseguire queste elaborazioni utilizzando una workstation dotata di GPU permette ai ricercatori di ottenere analisi direttamente nei propri laboratori, senza dover ricorrere ad una server room con cluster di computer per questo e dover necessariamente schedulare il tempo a disposizione nella server farm a diretta competizione con altri progetti di ricerca che richiedono il cluster di PC per le proprie elaborazioni. Pagina 9 - Considerazioni In questo articolo abbiamo cercato di spiegare le basi che spingono verso l'utilizzo delle GPU in contesti di elaborazione general purpose, e quali benefici queste possano avere rispetto all'adozione di una tradizionale CPU. E' un ambito nel quale NVIDIA sta investendo in modo massiccio con la serie di prodotti Tesla, intravedendo potenzialità di business molto elevate per i prossimi anni oltre ad uno sbocco complementare del proprio lavoro di ricerca tecnologico alla base di ogni famiglia di GPU.
Le statistiche di elaborazione del client Folding@Home, uno dei pochi esempi alla portata di tutti gli utenti di applicazione che può essere eseguita su varie piattaforme di CPU e su GPU, evidenziano come sia ancora molto ridotto il numero di sistemi per i quali si utilizzano GPU, in questo caso ATI Radeon, per l'elaborazione di pacchetti di dati Folding. Confrontando i valori in TeraFLOPS emerge chiaramente come siano proprio le GPU la risorsa di elaborazione più potente tra quelle a disposizione degli utenti, distanziando di gran lunga tutte le altre architetture. E' questo un esempio di nicchia ma concreto di quelle che possono essere le potenzialità dell'elaborazione parallela via GPU, nel momento in cui viene implementato un client ottimizzato. Il futuro delle architettue CPU si sposta sempre più rapidamente verso soluzioni multicore, aprendo scenari interessanti su quale sarà l'approccio potenzalmente vincente tra gli attuali aprcci sviluppati da Intel e AMD. Quest'ultima in particolare spinge verso architetture che abbinino core general purpose con acceleratori dedicati: di fatto una GPU, nell'ottica delle elaborazioni GPGPU, può essere vista proprio in questo modo. Intel, invece, sta sviluppando Larrabee, GPU che mira a proporsi proprio nel mercato GPGPU e non in quello della grafica 3D, puntando sulla compatibilità con codice x86. NVIDIA crede fortemente nell'utilizzo delle proprie GPU per elaborazioni general purpose, e i primi esempi pratici di clienti che hanno convertito programmi e dataset per l'elaborazione su GPU confermano come sia possibile beneficiare grandemente di queste architetture. Non è tutto oro quello che luccica, tuttavia: migrare un'applicazione da CPU a GPU richiede un lavoro di programmazione non di poco conto, soprattutto se si ricerca la massima efficienza possibile dell'elaborazione. Non c'è da tralasciare anche il fattore culturale: NVIDIA sta operando attivamente con il mondo accademico affinché le GPU vengano attivamente utilizzate nella ricerca come strumento di calcolo general purpose, sostituendo le CPU in quegli ambiti nei quali si dimostrano più efficienti. L'approccio NVIDIA con CUDA è, in termini sia teorici che pratici, sicuramente più accessibile di Close To Metal o CTM , l'approccio corrispondente di AMD per la programmazione con GPU della famiglia R580. CTM permette di interagire con l'hardware ad un livello ancor più dettagliato di CUDA, di fatto con un linguaggio assembler, benché questo a prezzo di una superiore complessità e di tempi di sviluppo ben più lunghi. CTM, inoltre, è specifico per una famiglia di GPU, mentre CUDA ha dalla sua la flessibilità di poter spostare applicazioni svilupate ora su future generazioni di GPU NVIDIA. Quando le GPU potranno venir utilizzate per elaborazioni parallele anche in ambiente domestico, o comunque al di fuori di applicazioni specialistiche? E' complesso dare una risposta a questa domanda, anche se riteniamo difficile che i tempi siano maturi, o lo possano essere nel giro di alcuni anni, perché questo possa avvenire. Indubbiamente le potenzialità delle elaborazioni GPGPU sono molto ampie in ambienti professionali: se il software può essere adattato efficientemente all'elaborazione su GPU i benefici prestazionali e di riduzione dei costi che se ne derivano sono una spinta troppo forte per non pensare ad una migrazione. |
||
| Pagina stampata da Hardware Upgrade: http://www.hwupgrade.it Vietata la copia e la distribuzione (anche parziale) senza la previa autorizzazione di Hardware Upgrade S.r.l Per maggiori informazioni : http://www.hwupgrade.it/sito/legale/ Copyright 1997 - 2012 Hardware Upgrade S.r.l |