JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=d7b7c294d0801c7d7aceb160f433dad2Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Graphikkarte für andere Berechnungen missbrauchen
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 24.05.2008, 11:47    Titel: Graphikkarte für andere Berechnungen missbrauchen Antworten mit Zitat

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 Crying or Very sad ).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
foreach
ehem. hanse



Anmeldedatum: 08.05.2004
Beiträge: 183

Medaillen: Keine

BeitragVerfasst am: 24.05.2008, 12:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Deviloper
Junior JLI'ler



Anmeldedatum: 31.05.2006
Beiträge: 77

Medaillen: Keine

BeitragVerfasst am: 25.05.2008, 09:24    Titel: Antworten mit Zitat

GPU Gems 3 ... letzte Sektion ... nen paar sehr nette Berechnungen werden vorgeführt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 37
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 25.05.2008, 11:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 25.05.2008, 14:42    Titel: Antworten mit Zitat

Heißt das, man schickt nen vertexbuffer rein und bekommt dann nen manipulierten vertexbuffer zurück ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
xardias
JLI Master


Alter: 37
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 25.05.2008, 19:33    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 26.05.2008, 10:30    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
xardias
JLI Master


Alter: 37
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 26.05.2008, 11:08    Titel: Antworten mit Zitat

Japp. Die Berechnung wurde mit Vertex- und Pixelshadern gemacht. Wobei die neuen Shadermodels glaube ich auch wesentlich komplexere Shaderprogramme zulassen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 26.05.2008, 13:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
xardias
JLI Master


Alter: 37
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 26.05.2008, 14:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
KI
JLI Master


Alter: 38
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 26.05.2008, 18:05    Titel: Antworten mit Zitat

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 Smile )

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 26.05.2008, 18:29    Titel: Antworten mit Zitat

Also doch nur für High-End-Systeme sinnvoll. Crying or Very sad
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 Crying or Very sad Crying or Very sad Crying or Very sad

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
xardias
JLI Master


Alter: 37
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 26.05.2008, 18:58    Titel: Antworten mit Zitat

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 Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
foreach
ehem. hanse



Anmeldedatum: 08.05.2004
Beiträge: 183

Medaillen: Keine

BeitragVerfasst am: 26.05.2008, 19:45    Titel: Antworten mit Zitat

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 Sad)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 37
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 26.05.2008, 21:47    Titel: Antworten mit Zitat

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 Wink)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum