23
GPU, un GPU, un microprocessore microprocessore giga@lobale?? giga@lobale?? Un progetto che avrebbe dovuto Un progetto che avrebbe dovuto cambiare il mondo e cambiare il mondo e un‘introduzione in un campo di un‘introduzione in un campo di ricerca davvero interessante... ricerca davvero interessante...

GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Embed Size (px)

Citation preview

Page 1: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

GPU, un microprocessore GPU, un microprocessore giga@lobale??giga@lobale??

Un progetto che avrebbe dovuto cambiare il Un progetto che avrebbe dovuto cambiare il mondo e un‘introduzione in un campo di mondo e un‘introduzione in un campo di

ricerca davvero interessante...ricerca davvero interessante...

Page 2: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Parallelizzare è difficile!!Parallelizzare è difficile!!

Nella vita reale: ad Nella vita reale: ad esempio lavarsi i denti, esempio lavarsi i denti, leggere un fumetto e leggere un fumetto e vestirsi...vestirsi...

Al più tardi a scuola ci si Al più tardi a scuola ci si accorge che accorge che l‘attaccapanni è rimasto l‘attaccapanni è rimasto nella giacca!nella giacca!

Su di un supercomputer: Su di un supercomputer: si risolva l‘equazione si risolva l‘equazione parziale di Laplace su un parziale di Laplace su un poligono e in parallelo, poligono e in parallelo, con il metodo iterativo di con il metodo iterativo di Jacobi.Jacobi.È importante mantenere È importante mantenere la comunicazione fra i la comunicazione fra i nodi al minimo. Altrimenti, nodi al minimo. Altrimenti, più nodi si utilizzano, più più nodi si utilizzano, più il calcolo diventa lento...il calcolo diventa lento...

Page 3: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Come si programma in parallelo Come si programma in parallelo al giorno d‘oggi??al giorno d‘oggi??

Si definisce un numero fisso di processori (=p) che Si definisce un numero fisso di processori (=p) che prendono parte al calcolo, prima che il programma prendono parte al calcolo, prima che il programma venga eseguito sul supercomputer. venga eseguito sul supercomputer. OpenMP: Il compilatore si incarica completamente della OpenMP: Il compilatore si incarica completamente della parallelizzazione (il programmatore dà solo delle direttive parallelizzazione (il programmatore dà solo delle direttive per aiutarlo)per aiutarlo)MPI (Message Passing Interface): Il programmatore MPI (Message Passing Interface): Il programmatore deve definire da solo la comunicazione fra i nodi. deve definire da solo la comunicazione fra i nodi. Di solito però si scrive un programma da far partire con Di solito però si scrive un programma da far partire con parametri diversi, senza che ci sia comunicazione fra i parametri diversi, senza che ci sia comunicazione fra i nodi. nodi.

Page 4: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Un confronto fra supercomputer

• Il tuo computer (a un Gigahertz) esegue circa mezzo miliardo di operazioni al secondo = ½ GigaFlop, questa era la potenza di un supercomputer, dieci anni fa!

• un supercomputer con Shared Memory (= tutti i processori accedono allo stesso banco di memoria), arriva a 470 Gigaflops (HP Superdome)

• un Linux Beowulf Cluster con Distributed Memory e 502 processori (ogni processo ha memoria propria), circa 266 Gigaflops

Page 5: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Un confronto fra supercomputer (2)

• Il supercomputer giapponese Earth Simulator calcola a 35 Teraflops (=35000 Gigaflops)

• Il progetto Seti@home, il primo progetto di successo sul principio del Grid Computing calcola a 43 Teraflops!

Page 6: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Le CPU del giorno d‘oggi sono Le CPU del giorno d‘oggi sono disoccupate!!disoccupate!!

Più del 80% del tempo di calcolo di una Più del 80% del tempo di calcolo di una normale CPU è speso inutilmente, normale CPU è speso inutilmente, nell‘attesa che l‘utente schiacci un tasto o nell‘attesa che l‘utente schiacci un tasto o muova il mouse...muova il mouse...

Gli attuali sistemi operativi possono Gli attuali sistemi operativi possono eseguire programmi in background, senza eseguire programmi in background, senza che l‘utente se ne accorga.che l‘utente se ne accorga.

Page 7: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Internet - Supercomputer

• Se tutti i computer della Terra si potessero fondere in un cluster solo, quale potenza di calcolo si potrebbe teoreticamente raggiungere??

• 400 millioni di computer a ½ Gigaflop = 200 millioni di Gigaflop = 200 000 Teraflop = circa 2000 Supercomputer!

Page 8: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Confronto fra supercomputer

0.1

1

10

100

1000

10000

100000

1000000

10000000

100000000

1000000000

Laptop Beowulf HP Earth Sim Seti IBM Internet

Gigaflops/ s

Page 9: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Seti@home, caccia a Seti@home, caccia a E.T.!!E.T.!!

Un vecchio supercomputer Un vecchio supercomputer distribuisce dati di un distribuisce dati di un radiotelescopio a dei computer radiotelescopio a dei computer normali.normali.Su questi computer è installato Su questi computer è installato un piccolo programma che un piccolo programma che analizza i dati nel tempo analizza i dati nel tempo inutilizzato delle CPU.inutilizzato delle CPU.L‘analisi si svolge utilizzando L‘analisi si svolge utilizzando una lunga e pesante una lunga e pesante trasformazione di Fourier. I trasformazione di Fourier. I risultati dell‘analisi sono poi risultati dell‘analisi sono poi rispediti al vecchio rispediti al vecchio supercomputer.supercomputer. Tutti possono partecipare al Tutti possono partecipare al progetto! Anche un 80486!progetto! Anche un 80486!

Page 10: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Ricerca contro il cancroRicerca contro il cancro

United Devices, come Seti@home, distribuisce dati United Devices, come Seti@home, distribuisce dati che vengono analizzati da una rete di normali che vengono analizzati da una rete di normali computer, messi a disposizione da volontari.computer, messi a disposizione da volontari.

Page 11: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Attenzione!Attenzione!

In questi due progetti, Seti@home e Ricerca In questi due progetti, Seti@home e Ricerca contro il Cancro, il numero di processori coinvolti contro il Cancro, il numero di processori coinvolti (=p) non è definito già all‘inizio… I computer (=p) non è definito già all‘inizio… I computer possono entrare e uscire dal calcolo quando e possono entrare e uscire dal calcolo quando e come vogliono…come vogliono…

Ciò è diverso da MPI e OpenMP!!Ciò è diverso da MPI e OpenMP!!

Page 12: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Un‘estensione del modello client/server??

Client / Server Esempi: Seti@home,

Ricerca contro il Cancro (United Devices)

Rete Peer to peer Esempi: Kazaa,

Gnutella, eMule, GPU a @lobal processing unit??

Server

Client

Client

Client

Client

Client

Client Cl

ient

Client/Server

Peer to peer

Node

Node

Node

Node

Node

Node

Node

Page 13: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Come funziona a grandi linee una rete Peer-to-Peer??

NodeA

A

A

AUn pacchetto in arrivo…

… è rispedito attraverso tutte le altre connessioni

Problema della crescita geometrica dei pacchetti!I duplicati vanno gettati, altrimenti la rete collassa.

Page 14: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Come si potrebbe migliorare?? L‘idea proposta da un team della Princeton

University, basata su delle simulazioni

NodeA

AUn pacchetto in arrivo...

… è rispedito soltanto attraverso una connessione scelta a caso

Page 15: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

L‘idea di GPUL‘idea di GPU

Computer messi a disposizione da volontari Computer messi a disposizione da volontari lasciano girare GPU. GPU si collega lasciano girare GPU. GPU si collega automaticamente a una rete peer-to-peerautomaticamente a una rete peer-to-peer

GPU mette a disposizione biblioteche di funzioni GPU mette a disposizione biblioteche di funzioni scientifiche e ludiche. scientifiche e ludiche.

Ogni persona che installa GPU ha la possibilità Ogni persona che installa GPU ha la possibilità di utilizzare gli altri computer, per eseguire propri di utilizzare gli altri computer, per eseguire propri calcoli.calcoli.

Page 16: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

L‘idea di GPU (2)L‘idea di GPU (2)

GPU è divisa in tre partiGPU è divisa in tre parti

Il Routing Layer rispedisce pacchetti di calcoloIl Routing Layer rispedisce pacchetti di calcolo

Una macchina virtuale interpreta i pacchetti di Una macchina virtuale interpreta i pacchetti di calcolo con l‘aiuto di una biblioteca di plugins.calcolo con l‘aiuto di una biblioteca di plugins.

I plugins sono DLL compilate che estendono la I plugins sono DLL compilate che estendono la funzionalità di un nodofunzionalità di un nodo

Page 17: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

L‘idea di GPU (3)L‘idea di GPU (3)

La macchina virtuale utilizza la notazione La macchina virtuale utilizza la notazione polacca. 1 + 1 diventa 1,1,+polacca. 1 + 1 diventa 1,1,+

I pacchetti di calcolo vengono cammuffati come I pacchetti di calcolo vengono cammuffati come ricerca di files: ad esempio „GPU:1,1,+“ viene ricerca di files: ad esempio „GPU:1,1,+“ viene interpretato come un calcolo dalle GPU interpretato come un calcolo dalle GPU connesse alla rete peer-to-peer.connesse alla rete peer-to-peer.

Page 18: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

GPU in praticaGPU in pratica

Due plugins (Pi e calcolo del logaritmo discreto)Due plugins (Pi e calcolo del logaritmo discreto)

Continuazione come progetto Open SourceContinuazione come progetto Open Source

Il prototipo si può scaricare da Internet Il prototipo si può scaricare da Internet http://sourceforge.net/projects/gpuhttp://sourceforge.net/projects/gpu

Page 19: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

GPU in pratica (2)GPU in pratica (2)

La versione 0.688 implementa tutto ciò che è La versione 0.688 implementa tutto ciò che è descritto nella documentazione... Ma è molto descritto nella documentazione... Ma è molto instabile.instabile.

La versione 0.814 è molto stabile (grazie al La versione 0.814 è molto stabile (grazie al componente TGnutella di Kamil Pogorzelski), ed componente TGnutella di Kamil Pogorzelski), ed è raccomandata.è raccomandata.

Page 20: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

ScreenshotsScreenshots

Page 21: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

Screenshots (2)Screenshots (2)

Page 22: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

http://gpu.sourceforge.nethttp://gpu.sourceforge.net

Page 23: GPU, un microprocessore giga@lobale?? Un progetto che avrebbe dovuto cambiare il mondo e unintroduzione in un campo di ricerca davvero interessante

LinksLinks

Global Grid Forum Global Grid Forum www.gridforum.orgwww.gridforum.orgEU Grid: http://eu-datagrid.web.cern.chEU Grid: http://eu-datagrid.web.cern.chI 500 Supercomputer più veloci: I 500 Supercomputer più veloci: http://www.top500.orghttp://www.top500.orgSeti@home Seti@home http://setiathome.berkeley.eduhttp://setiathome.berkeley.eduRicerca contro il cancro: Ricerca contro il cancro: http://members.ud.com/projects/cancerhttp://members.ud.com/projects/cancer