Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 24.05.2008, 11:47 Titel: Graphikkarte für andere Berechnungen missbrauchen |
|
|
Hi, auf machnen Seiten hab ich gelesen, dass sich mit der GeForce 8 sehr interessante Spielereinen anstellen lassen. Unter Anderem soll man mit dieser Serie bereits eigenständige Physikberechnungen durchführen lassen können, um beispielsweise den CPU zu entlasten. Allgemein sollen GPUs eine viel höhere FLOP-Rate haben als gewöhnliche CPUs. NVIDIA hat einer Graphikkarte den Videoausgang weggeschnitten um sie als reine Physikkarte zum Verkauf anbieten zu können.
Was mich interessiert, ist ob jemand von eich schon Erfahrung damit gesammelt hat und mir sagen kann ob sowas auch für normale PCs lohnenswert ist, oder nur für Highend-Teile Sinn macht.
Wie sieht es aus mit chipübergreifenden Interfaces ?
Bisher bin ich nur auf NVIDIAs CUDA gestoßen, mit dem man soetwas realisieren könnte (geht aber afaik erst ab GeForce 8 ). |
|
Nach oben |
|
|
foreach ehem. hanse
Anmeldedatum: 08.05.2004 Beiträge: 183
Medaillen: Keine
|
Verfasst am: 24.05.2008, 12:12 Titel: |
|
|
Grakas haben allgemein den Vorteil das man einen Befehl auf ganz viele Daten gleichzeitig anwenden kann (Singel Instruction Multiple Data oder SIMD). Früher ging das nur in einem sehr engen Bereich, wie er eben beim rasterisieren benötigt wird. Im Laufe der Zeit wurden Grakas aber immer mehr zu general purpose SIMD-Prozessoren. Vor allem durch die Shader. Ein weiterer Nachteil war das der AGB-Buss zwar sehr schnell war wenn es darum ging Daten auf die Graka zu schaufeln aber nicht in die umgekehrte Richtung. Mit PCI Express ist aber auch das kein Problem mehr. Moderne Prozessoren haben aber auch schon recht tolle SIMD Erweiterungen (SSE und co.)
Soweit ich weiß hat xardias mal was mit Magnetfelder berechnet. |
|
Nach oben |
|
|
Deviloper Junior JLI'ler
Anmeldedatum: 31.05.2006 Beiträge: 77
Medaillen: Keine
|
Verfasst am: 25.05.2008, 09:24 Titel: |
|
|
GPU Gems 3 ... letzte Sektion ... nen paar sehr nette Berechnungen werden vorgeführt |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 25.05.2008, 11:24 Titel: |
|
|
hanse: ne ich habe ein entsprechendes Programm von meinem Chef auf den Cell umgeschrieben.
Soweit ich das mitbekommen habe ist das schwierige an Berechnungen auf der GPU das Abbilden des Problems auf Dreiecke und Pixelberechnungen.
Wenn man das geschafft hat sind die Dinger wahnsinnig schnell da teilweise um die 300 Kerne in den Dingern stecken die die Berechnung parallel ausführen. |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 25.05.2008, 14:42 Titel: |
|
|
Heißt das, man schickt nen vertexbuffer rein und bekommt dann nen manipulierten vertexbuffer zurück ? |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 25.05.2008, 19:33 Titel: |
|
|
Ich weiß nicht inwieweit man die GPUs mitlerweile für ganz normale Berechnungen nutzen kann..nvidia hat da mal ein Toolkit rausgebracht mit dem sowas möglich sein soll.
Bei uns am Institut wurden Wellenausbreitungen berechnet. d.h. es wurde garnix zurück geschickt an Daten, das Ergebnis wurde direkt über die Grafikkarte angezeigt. |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 26.05.2008, 10:30 Titel: |
|
|
Wurden die dann nur mithilfe des vertexshaders berechnet ?
Wenn ja, dann ist ja der Funktionsumfang sehr gering, den man hier verwenden kann (afaik max. 128 Anweisungen). |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 26.05.2008, 11:08 Titel: |
|
|
Japp. Die Berechnung wurde mit Vertex- und Pixelshadern gemacht. Wobei die neuen Shadermodels glaube ich auch wesentlich komplexere Shaderprogramme zulassen. |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 26.05.2008, 13:35 Titel: |
|
|
Und außerdem könnte man immernoch die Halbfertigen Daten noch ein zweites oder drittes mal durch di Grafikkarte schieben. Geht vielleicht nicht bei jedem Problem so, aber doch sicherlich bei sehr vielen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 26.05.2008, 14:32 Titel: |
|
|
Jupp, man hat auf jeden Fall einige Möglichkeiten. Aber beschränkt bleiben sie trotzdem. Doch wenn man das Problem auf Vertizes und Pixel formuliert bekommt sind Grafikkarten für die Berechnung sicher ne fixe Sache. |
|
Nach oben |
|
|
KI JLI Master
Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 26.05.2008, 18:05 Titel: |
|
|
CUDA ist in sofern sinnvoll/praktisch, als dass du deinen Code, der auf der Grafikkarte laufen soll, in C schreiben kannst. (allderdings hast du keinen Stack. Will man Algorithmen verwenden die auf dem Prinzip des Stacks basieren, muss man sich dann was neues überlegen.. mit Pointern oder so... Stichwort: stack-free)
Bei Problemen die sich stark parallelisieren lassen, kann man unglaubliche Geschwindigkeitsvorteile vom Faktor 100 und mehr gegenüber heutigen CPUs erzielen.
Habe gehört, es gibt von NVIDIA Bibliotheken für MATLAB (Matheprogramm), die mit CUDA geschrieben wurden und ca. 30 mal schneller sind. Also das ist dann für Matrixoperationen, Vektoroperationen,...
Ich meine von ATI gibt es sogar eine ähnliche Technologie wie CUDA...
Ich habe selber mit CUDA noch nicht gearbeitet aber es gibt da so ein SDK von NVIDIA... (Otscho: wie du sagtest. Bedingung ist Geforce 8. Ich würde aber wenn dann CUDA probieren als Vertex- und Pixelshader missbrauchen. Führt nur zu Frustration )
edit: wegen MATLAB. ok es ist ein Geschwindigkeitsvorteil vom Faktor 14 (http://developer.nvidia.com/object/matlab_cuda.html)
Ich denke es ist aber mehr drin... wenn man es direkt in MATLAB integrieren würde. |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 26.05.2008, 18:29 Titel: |
|
|
Also doch nur für High-End-Systeme sinnvoll.
Ich fands es immer komplett irre, wie so ein Trum, gebaut aus 2000 Steine, in Echtzeit zusammenfällt und das alles mithilfe von gpgpu bzw. cuda berechnet wird. Mein CPU qualmt schon, wenn ich ne Dominokette von 10 Steinen in Gang setze
Diese Art von Berechnung lassen sich ja parallelisieren, nur wenn man nur mit shadern arbeitet, wär das ja gar nicht möglich, da ja jeder Kern alle Positionen von den umliegenden Steinen kennen muss und weder der Zugriff darauf noch ein eigener Speicher in der Größe nicht möglich ist.
Hab ich das jetzt recht verstanden, oder steckt da in dem zweiten Absatz irgendwo ein Wurm drinn? Hab bisher noch keine Erfahrung mit Shaderprogramierung gemacht. |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 26.05.2008, 18:58 Titel: |
|
|
So einfach lassen sich diese Berechnungen garnicht parallelisieren. Bei jeder Bewegung kann es zu Kollisionen kommen. Um diese zu bestimmen muss man wieder auf andere Objekte zugreifen und mit diesen Synchron sein.
Man könnte da wohl mit Quadtrees oder so arbeiten um die Berechnung parallelisierbar zu machen. Dann müssen nur noch Randobjekte gemeinsam betrachtet werden. Aber so trivial ist das nicht |
|
Nach oben |
|
|
foreach ehem. hanse
Anmeldedatum: 08.05.2004 Beiträge: 183
Medaillen: Keine
|
Verfasst am: 26.05.2008, 19:45 Titel: |
|
|
Etwas Offtopic:
Zitat: |
edit: wegen MATLAB. ok es ist ein Geschwindigkeitsvorteil vom Faktor 14 (http://developer.nvidia.com/object/matlab_cuda.html)
Ich denke es ist aber mehr drin... wenn man es direkt in MATLAB integrieren würde. |
Hm ich hab mal irgendwo nen Vergleich zwischen NumPY und MATLAB gesehen. Da war NumPY
auch so um den Faktor 10 schneller.
und ontopic:
Intressant sind auch FPGAs um masiv parallele Berechnungen auszuführen. Hat damit evtl. schon mal jemand was gemacht? (Ich kam über ein Ping Pong nicht hinaus ) |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 26.05.2008, 21:47 Titel: |
|
|
Wir haben in einem Uni-Praktikum mal Signale mit FPGAs verarbeitet.
Letztenendes eigentlich eine echt geniale Erfindung. Um Größenordnungen Leistungsfähiger als General Purpose Prozessoren und trotzdem noch relativ flexibel im Gegensatz zu Hardwareimplementierungen.
(Aber eben nur für spezielle Anwendungen und Berechnungen. Nen PC kann man damit nicht betreiben ) |
|
Nach oben |
|
|
|