GPU, a @lobal GPU, a @lobal processing unit??processing unit??
Ein Projekt, das die Welt hätte verändern Ein Projekt, das die Welt hätte verändern sollen, und eine kurze Einführung in einem sollen, und eine kurze Einführung in einem
spannenden Forschungsgebietspannenden Forschungsgebiet
Parallelisieren ist schwierig!!Parallelisieren ist schwierig!!
Im realen Leben, z.B. Im realen Leben, z.B. gleichzeitig Zähne gleichzeitig Zähne putzen, Mickey Mouse putzen, Mickey Mouse lesen und sich anziehenlesen und sich anziehen
Spätenstens in der Spätenstens in der Schule merkt man, dass Schule merkt man, dass der Kleiderhaken in der der Kleiderhaken in der Jacke geblieben istJacke geblieben ist
Auf einem Auf einem Supercomputer: man löse Supercomputer: man löse die Laplace-PDE auf die Laplace-PDE auf einem Polygon, in einem Polygon, in parallel, mit einem parallel, mit einem iterativen Jacobi-iterativen Jacobi-VerfahrenVerfahrenKommunikation zwischen Kommunikation zwischen den Knoten so klein wie den Knoten so klein wie möglich halten!! möglich halten!! Ansonsten je mehr Ansonsten je mehr Prozessoren, desto Prozessoren, desto langsamer…langsamer…
Wie wird heutzutage parallel Wie wird heutzutage parallel programmiert??programmiert??
Man definiert eine fixe Anzahl (=p) Prozessoren, bevor Man definiert eine fixe Anzahl (=p) Prozessoren, bevor das Programm auf dem Supercomputer ausgeführt wird. das Programm auf dem Supercomputer ausgeführt wird. OpenMP: Compiler übernimmt die gesamte Aufgabe der OpenMP: Compiler übernimmt die gesamte Aufgabe der Parallelisierung (Der Programmierer muss nur Direktiven Parallelisierung (Der Programmierer muss nur Direktiven angeben)angeben)MPI (Message Passing Interface): Der Programmierer MPI (Message Passing Interface): Der Programmierer muss die Kommunikation zwischen den Knoten selbst muss die Kommunikation zwischen den Knoten selbst definieren.definieren.Meistens wird aber ein Programm geschrieben, und das Meistens wird aber ein Programm geschrieben, und das Programm wird mehrmals mit verschiedenen Programm wird mehrmals mit verschiedenen Anfangsparametern gestartet!!Anfangsparametern gestartet!!
Vergleich von Supercomputer - Anordnungen
• Dieser Laptop führt etwa eine halbe Milliarde Operationen pro Sekunde aus = ½ GigaFlop, das war die Leistung eines Supercomputers vor 10 Jahren
• Ein Supercomputer mit Shared Memory (= alle Prozesse greifen auf dem gleichen Speicher zu), etwa 470 Gigaflops (HP Superdome)
• Linux Beowulf Cluster mit Distributed Memory und 502 Prozessoren (jeder Prozess hat eigenen Speicher), etwa 266 Gigaflops
Vergleiche von Supercomputer-Anordnungen
• Der japanische Supercomputer Earth Simulator rechnet mit 35 Teraflops (=35000 Gigaflops)
• Das Projekt Seti@home, der erste erfolgreiche Grid - Computing Projekt rechnet mit 43 Teraflops
Heutige CPUs sind fast Heutige CPUs sind fast arbeitslos!!arbeitslos!!
Mehr als 80% der Rechenzeit einer CPU Mehr als 80% der Rechenzeit einer CPU besteht aus dem Warten von besteht aus dem Warten von Benutzereingaben…Benutzereingaben…
Heutige Betriebssysteme können in dieser Heutige Betriebssysteme können in dieser Zeit Prozesse im Hintergrund laufen Zeit Prozesse im Hintergrund laufen lassen, ohne dass der Anwender etwas lassen, ohne dass der Anwender etwas merktmerkt
Internet - Supercomputer
• Wenn alle Computer auf der Welt in einem Cluster zusammengefügt würden, welche Leistung könnte man dann teoretisch erreichen??
• 400 Millionen Rechner à ½ Gigaflop = 200 Millionen Gigaflop = 200 000 Teraflop = etwa 2000 Supercomputer!
Vergleich von Supercomputer - Anordnungen
0.1
1
10
100
1000
10000
100000
1000000
10000000
100000000
1000000000
Laptop Beowulf HP Earth Sim Seti IBM Internet
Gigaflops/ s
Seti@home, Jagd auf Seti@home, Jagd auf E.T.!!E.T.!!
Ein alter Supercomputer Ein alter Supercomputer verteilt Datensätze eines verteilt Datensätze eines Radioteleskopes an normale Radioteleskopes an normale Rechner.Rechner.Auf diese Rechner ist ein Auf diese Rechner ist ein kleines Programm installiert, kleines Programm installiert, das die Datensätze im das die Datensätze im Hintergrund analysiertHintergrund analysiertDie Analyse erfolgt mit einer Die Analyse erfolgt mit einer langwierigen langwierigen Fouriertransformation, das Fouriertransformation, das Ergebnis der Analyse wird Ergebnis der Analyse wird dann an den alten dann an den alten Supercomputer Supercomputer zurückgeschicktzurückgeschicktAlle können beim Projekt Alle können beim Projekt mitmachen! Sogar ein 80486!mitmachen! Sogar ein 80486!
KrebsforschungKrebsforschung
United Devices, wie Seti@home, verteilt United Devices, wie Seti@home, verteilt Datensätze, die von normalen Rechnern im Datensätze, die von normalen Rechnern im Hintergrund verarbeitet werden.Hintergrund verarbeitet werden.
Achtung!Achtung!
Bei diesen beiden Projekten, Seti@home und Bei diesen beiden Projekten, Seti@home und Krebsforschung, die über Internet laufen, ist die Krebsforschung, die über Internet laufen, ist die Anzahl beteiligter Prozessoren (=p) am Anfang Anzahl beteiligter Prozessoren (=p) am Anfang nicht im voraus bestimmt… Rechner können nicht im voraus bestimmt… Rechner können vom Projekt ein und aussteigen…vom Projekt ein und aussteigen…
Unterschied gegenüber MPI und OpenMP!!Unterschied gegenüber MPI und OpenMP!!
Eine Erweiterung des Client / Server Modells??
Client / Server Beispiele:
Seti@home, Krebsforschung
Peer to peer Netwerk Beispiele: Kazaa,
Gnutella, 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
Wie funktioniert (sehr grob) ein Peer to Peer – Netwerk??
NodeA
A
A
AAn incoming packet…
… is forwarded through all other connections
Problem des geometrischen Wachstums der Pakete!Duplikate müssen weggeworfen werden.
Wie könnte man das verbessern??
Idee aus Simulationen eines Teams der Princeton University
NodeA
AAn incoming packet…
… is forwarded through only one randomly chosen connection and not through all connections as before
Die Idee von GPUDie Idee von GPU
Rechner im Internet lassen GPU laufen. GPU Rechner im Internet lassen GPU laufen. GPU verbindet sich automatisch zu einem Peer to verbindet sich automatisch zu einem Peer to Peer – NetzwerkPeer – Netzwerk
GPU stellt wissenschaftliche Bibliotheken zur GPU stellt wissenschaftliche Bibliotheken zur VerfügungVerfügung
Jeder, der GPU installiert hat, kann auch mal Jeder, der GPU installiert hat, kann auch mal andere Rechner verwenden, um eine eigene andere Rechner verwenden, um eine eigene verteilte Berechnung auszuführenverteilte Berechnung auszuführen
Die Idee von GPU (2)Die Idee von GPU (2)
GPU ist in 3 Teile gegliedertGPU ist in 3 Teile gegliedertDer Routing Layer leitet Berechnungspakete Der Routing Layer leitet Berechnungspakete weiterweiterEine virtuelle Maschine interpretiert die Eine virtuelle Maschine interpretiert die Berechnungspakete mit Hilfe einer Bibliothek Berechnungspakete mit Hilfe einer Bibliothek von Pluginsvon PluginsPlugins sind kompilierte DLLs, die die Plugins sind kompilierte DLLs, die die Funktionalität des Knotens erweiternFunktionalität des Knotens erweitern
Die Idee von GPU (3)Die Idee von GPU (3)
Die polnische Notation wird eingeführt, um die Die polnische Notation wird eingeführt, um die virtuelle Maschine zu vereinfachen 1 + 1 wird zu virtuelle Maschine zu vereinfachen 1 + 1 wird zu 1,1,+1,1,+
Berechnungspakete werden als Dateisuche Berechnungspakete werden als Dateisuche getarnt, z.B eine Dateisuche für „GPU:1,1,+“ getarnt, z.B eine Dateisuche für „GPU:1,1,+“ wird als Berechnungsaufgabe interpretiertwird als Berechnungsaufgabe interpretiert
GPU in der PraxisGPU in der Praxis
Zwei Bibliotheken (Pi – Berechnung und verteilte Zwei Bibliotheken (Pi – Berechnung und verteilte Berechnung des diskreten Logarithmus)Berechnung des diskreten Logarithmus)
Weiterentwicklung als Open Source Projekt an Weiterentwicklung als Open Source Projekt an der Komplexität der Aufgabe gescheitertder Komplexität der Aufgabe gescheitert
Prototyp kann man von Internet herunterladen Prototyp kann man von Internet herunterladen http://sourceforge.net/projects/gpuhttp://sourceforge.net/projects/gpu
GPU in der Praxis (2)GPU in der Praxis (2)
Version 0.688 implementiert alles, was in der Version 0.688 implementiert alles, was in der Dokumentation beschrieben wird… ist aber sehr Dokumentation beschrieben wird… ist aber sehr instabilinstabil
Version 0.768 ist sehr stabil (dank dem Version 0.768 ist sehr stabil (dank dem Komponenten TGnutella von Kamil Pogorzelski), Komponenten TGnutella von Kamil Pogorzelski), Ergebnisse werden (noch) nicht zurückgesandtErgebnisse werden (noch) nicht zurückgesandt . .
ScreenshotsScreenshots
http://gpu.sourceforge.nethttp://gpu.sourceforge.net
Screenshots (2)Screenshots (2)
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.chTop 500 Supercomputer: http://www.top500.orgTop 500 Supercomputer: http://www.top500.orgSeti@home Seti@home http://setiathome.berkeley.eduhttp://setiathome.berkeley.eduKrebsforschung Krebsforschung http://members.ud.com/projects/cancerhttp://members.ud.com/projects/cancer
Top Related