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