GPU, un microprocessore
giga@lobale??
Un progetto che avrebbe dovuto cambiare il
mondo e un‘introduzione in un campo di
ricerca davvero interessante...
Parallelizzare è difficile!!
Nella vita reale: ad
esempio lavarsi i denti,
leggere un fumetto e
vestirsi...
Al più tardi a scuola ci si
accorge che
l‘attaccapanni è rimasto
nella giacca!
Su di un supercomputer:
si risolva l‘equazione
parziale di Laplace su un
poligono e in parallelo,
con il metodo iterativo di
Jacobi.
È importante mantenere
la comunicazione fra i
nodi al minimo. Altrimenti,
più nodi si utilizzano, più
il calcolo diventa lento...
Come si programma in parallelo
al giorno d‘oggi??
Si definisce un numero fisso di processori (=p) che
prendono parte al calcolo, prima che il programma
venga eseguito sul supercomputer.
OpenMP: Il compilatore si incarica completamente della
parallelizzazione (il programmatore dà solo delle direttive
per aiutarlo)
MPI (Message Passing Interface): Il programmatore
deve definire da solo la comunicazione fra i nodi.
Di solito però si scrive un programma da far partire con
parametri diversi, senza che ci sia comunicazione fra i
nodi.
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
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!
Le CPU del giorno d‘oggi sono
disoccupate!!
Più del 80% del tempo di calcolo di una
normale CPU è speso inutilmente,
nell‘attesa che l‘utente schiacci un tasto o
muova il mouse...
Gli attuali sistemi operativi possono
eseguire programmi in background, senza
che l‘utente se ne accorga.
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!
Confronto fra
supercomputer
1000000000
100000000
10000000
1000000
100000
10000
Gigaflops/s
1000
100
10
1
0.1
Laptop
Beowulf
HP
Earth Sim
Seti
IBM
Internet
Seti@home, caccia a
E.T.!!
Un vecchio supercomputer
distribuisce dati di un
radiotelescopio a dei computer
normali.
Su questi computer è installato
un piccolo programma che
analizza i dati nel tempo
inutilizzato delle CPU.
L‘analisi si svolge utilizzando
una lunga e pesante
trasformazione di Fourier. I
risultati dell‘analisi sono poi
rispediti al vecchio
supercomputer.
Tutti possono partecipare al
progetto! Anche un 80486!
Ricerca contro il cancro
United Devices, come Seti@home, distribuisce dati
che vengono analizzati da una rete di normali
computer, messi a disposizione da volontari.
Attenzione!
In questi due progetti, Seti@home e Ricerca
contro il Cancro, il numero di processori coinvolti
(=p) non è definito già all‘inizio… I computer
possono entrare e uscire dal calcolo quando e
come vogliono…
Ciò è diverso da MPI e OpenMP!!
Un‘estensione del modello
client/server??
Cl
ie
nt
Cl
ie
nt

Cl
ie
nt
Se
rv
er
Cl
ie
nt

Client/Ser
ver
Cl
ie
nt
Peer to
peer
No
de
No
de
Cl
ie
nt
No
de
Cl
ie
nt
Client / Server
Esempi: Seti@home,
Ricerca contro il Cancro
(United Devices)
No
de
No
de
No
de


No
de
Rete Peer to peer
Esempi: Kazaa,
Gnutella, eMule, GPU a
@lobal processing
unit??
Come funziona a grandi linee
una rete Peer-to-Peer??
Un pacchetto
in arrivo…
A
Node
… è rispedito
attraverso tutte le
altre connessioni
Problema della crescita geometrica dei pacchetti!
I duplicati vanno gettati, altrimenti la rete collassa.
Come si potrebbe migliorare??

L‘idea proposta da un team della Princeton
University, basata su delle simulazioni
Un pacchetto in
arrivo...
Node
A
è rispedito soltanto
attraverso una
connessione scelta a
caso
…
L‘idea di GPU
Computer messi a disposizione da volontari
lasciano girare GPU. GPU si collega
automaticamente a una rete peer-to-peer
GPU mette a disposizione biblioteche di funzioni
scientifiche e ludiche.
Ogni persona che installa GPU ha la possibilità
di utilizzare gli altri computer, per eseguire propri
calcoli.
L‘idea di GPU (2)
GPU è divisa in tre parti
Il Routing Layer rispedisce pacchetti di calcolo
Una macchina virtuale interpreta i pacchetti di
calcolo con l‘aiuto di una biblioteca di plugins.
I plugins sono DLL compilate che estendono la
funzionalità di un nodo
L‘idea di GPU (3)
La macchina virtuale utilizza la notazione
polacca. 1 + 1 diventa 1,1,+
I pacchetti di calcolo vengono cammuffati come
ricerca di files: ad esempio „GPU:1,1,+“ viene
interpretato come un calcolo dalle GPU
connesse alla rete peer-to-peer.
GPU in pratica
Due plugins (Pi e calcolo del logaritmo discreto)
Continuazione come progetto Open Source
Il prototipo si può scaricare da Internet
http://sourceforge.net/projects/gpu
GPU in pratica (2)
La versione 0.688 implementa tutto ciò che è
descritto nella documentazione... Ma è molto
instabile.
La versione 0.814 è molto stabile (grazie al
componente TGnutella di Kamil Pogorzelski), ed
è raccomandata.
Screenshots
Screenshots (2)
http://gpu.sourceforge.net
Links
Global Grid Forum www.gridforum.org
EU Grid: http://eu-datagrid.web.cern.ch
I 500 Supercomputer più veloci:
http://www.top500.org
Seti@home http://setiathome.berkeley.edu
Ricerca contro il cancro:
http://members.ud.com/projects/cancer
Scarica

GPU, a @lobal processing unit??