Cuda

Chrischan

Registriertes Mitglied
@all,

durch einen Link von ZA RA stolperte ich zufällig über CUDA. "Aha, Nutzung der GPU anstelle der CPU!(?)" Es hieß in diesem Link, daß man mittels CUDA eine Geschwindigkeitssteigerung der Simulation von bis zu 250-fach gegenüber einer "normalen" C++ Implementierung erreichen könnte. Ich folgerte, daß diese Geschwindigkeitssteigerung vermutlich einer Hardware-näheren Umsetzung von CUDA gegenüber C++ und vermutlich der geringeren "Störung" durch das Betriebssystem (und eventuell sind die GPU's ja RISC Prozessoren) zu verdanken war. Ich dachte nur "interessant" und damit war es eigentlich für mich erledigt.

Doch irgendwie ließ mich dieses CUDA nicht los und so habe ich heute mal angefangen zu googeln und habe mir schliesslich mal die CUDA-SDK heruntergeladen und angefangen mal ein bisschen damit zu spielen...

Ich erfuhr dabei auch den Hauptgrund für die Geschwindigkeitssteigerung und erkannte, daß ich mit meinen ursprünglichen Vermutungen etwas daneben lag. Das Zauberwort lautet "parallel computing" und basiert auf der immensen Anzahl von Kernen auf einer GPU. Überall hört man von den CPU Herstellern was von Dual-Core und Quad-Core. Zwei oder sogar vier Prozessorkerne, welche parallel arbeiten. Super! Doch während die CPU Hersteller momentan von der nächsten Generation mit 6 Kernen schwärmen, ist man bei den Grafikkarten GPU's inzwischen bei 512(!) Kernen angelangt... Naja, Marketing ist eben alles...

Bei meinem Office-PC habe ich eine Dual-Core CPU mit zwei Kernen und eine Grafikkarte mit 9500er GPU. Im Prinzip also nichts besonderes. Das die 9500er GPU bereits über 32 Kerne verfügt wußte ich nicht... Eine simple Mandelbrot-Demo von der CUDA-SDK schafft über die CPU damit eine Framerate von 1,2-1,4 fps, über die GPU eine Framerate von 60-70 fps... Eine N-Körper Simulation mit 4096 Körpern läuft dabei so schnell, daß man eher glaubt einen Film zu sehen. Durch einen "Teich mit Wasserlinsen" (so sieht es zumindest für mich aus) kann man mit der Maus durchfahren und sieht in Echtzeit(!) sämtliche Verwirbelungen...

Man erkennt vermutlich, daß ich aus dem Staunen kaum herauskomme, aber ich hätte nie daran gedacht, was da wirklich für Kapazitäten in meinem Büro schlummern. Wenn ich an meine ersten Simulationen von Galaxienkollisionen auf meinem ollen AtariST zurück denke, kommen mir fast die Tränen... Ich denke, daß ich wohl noch eine Weile mit CUDA spielen werde und mich vielleicht auch mal wieder etwas intensiver mit Simulationen beschaffe. Jedem der auch daran interesse hat, kann ich CUDA nur wärmstens empfehlen.

Und speziell an ZA RA: Wirklich vielen Dank für deinen Link!

Gruß,
Christian

Für die Interessierten: Für CUDA benötigt man eine Grafikkarte mit NVidia-Chip!
Weitere Infos und Downloads hier.
Zum selber schreiben wird noch ein Visual C++ benötigt.
 

Chrischan

Registriertes Mitglied
Hallo Bernhard,
Hallo Christian,

das hört sich interessant an. Falls Deine CUDA-Simulation aus einer Datei besteht: könntest Du den Quelltext via CODE-tags hier posten?
MfG
für eigene Simulationen ist das noch zu früh...

Die Beispielcodes sind aber schonmal recht interessant, bestehen aber C-typisch aus mehreren Dateien (z.B. das N-Body Beispiel aus ca. einem Dutzend Dateien). Es wird beim N-Body Beispiel übrigens recht klassisch nach Newton gerechnet, allerdings mit einem recht interessanten Zusatz. Da ich hier kein LaTeX o.ä. habe, hab ich das mal als Bild dargestellt.
e ist dabei ein sog. "softening factor" der im Prinzip die Kraft und damit die resultierende Beschleunigung limitiert...

Viel weiter bin ich leider noch nicht.

Gruß,
Christian
 

mac

Registriertes Mitglied
Hallo,

in diesem Zusammenhang (Vielkörpersimulation) könnte vielleicht auch dieser Post und Folgende http://www.astronews.com/forum/showpost.php?p=35612&postcount=145 von UMa für euch interessant sein.

Ich hab' inzwischen :cool::eek: sogar kapiert, was UMa genau gemeint hat und auch schon einige eigene Vorversuche gemacht, weiß aber noch nicht zuverlässig, ob mein Ansatz in jedem Fall stabile Extrapolationen zuläßt.

Herzliche Grüße

MAC
 
Oben