@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.
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.