3D Grafikberechnungen über CPU??

mcgene

Enthusiast
Thread Starter
Mitglied seit
13.02.2007
Beiträge
4.664
Ort
Österreich
Hallo,

ich würde gerne rein aus Interesse wissen ob es möglich ist 3D Grafikberechnungen (zb ein Spiel) vollständig über die CPU zu berechnen bzw. das die CPU die GPU unterstützt. Ist sowas möglich?

mfg
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Ja, es ist möglich. Das hat doch Intel schon getan, um ihre Grafikchips besser dastehen zu lassen.
 
Zuletzt bearbeitet:
oder siehe zeit vor den dedizierten 3D-Grakas.
auch wenn damals die CPU im vergleich zu heute echt lahm waren...
 
danke für die links!

wie läuft denn da das ganze ab? als CPU habe ich leider "nur" einen Q9550 @ 4GHz zur verfügung. kann die CPU auch einfach als "unterstützung" der gpu dienen?

mfg
 
Swiftshader ersetzt die GPU komplett und führt alle Berechnungen auf der CPU aus.
Unterstützend würde es bei heutigen GPUs gar nix bringen, da die Rechenleistung von Swiftshader selbst mit einem übertakteten Core i7 bestenfalls nur auf dem Niveau einer GeForce FX 5200 liegt. Heutige integrierte Grafikprozessoren sind schon deutlich schneller.
Intel lagert beim GMA X3100 und X4500HD im Grafiktreiber einige Berechnungen auf die CPU aus. Das bringt aber auch nur in 3DMark deutliche Vorteile, in Spielen bleibt in der Regel zu wenig CPU-Leistung für eine sinnvolle Unterstützung der GPU bei Grafikberechnungen übrig. Man kann ja auch nicht beliebig die Arbeit zwischen GPU und CPU aufteilen, am Ende bremst das noch statt zu beschleunigen, weil der Datenaustausch zwischen GPU und CPU zu langsam erfolgt.
 
Zuletzt bearbeitet:
Software-Renderer sind älter als GPUs ;) Grundsätzlich kann man alles was eine GPU kann auch auf einer CPU ausführen. Nur ist die Geschwindigkeit einfach unterirdisch.
 
Früher konnte man in jedem Spiel zwischen "Software" und "Hardware" Renderer auswählen (z.B. Quake II).

Wählte man Software aus, wurde alles von der CPU berechnet. Damals besaßen viele GraKas noch keine 3D Beschleunigung, das fing dann langsam mit den Vodoo, NV Riva 128 und ATI Xpert GraKas an.

Bekannte Vertreter der CPU Render Spiele zu einer Zeit wo 3D Beschleuniger schon Gang und Gäbe waren sind z.B. Commanche, aber vor allem Outcast. Welches damalige CPUs gnadenlos in die Knie zwang.
 
Zuletzt bearbeitet:
sehr interessant! wieso ist denn die gute alte cpu in sachen 3D berechnungen der gpu so extrem unterlegen?

mfg
 
Es ist eher andersrum, die GPU ist der CPU überlegen. ;)

Weil sie spezialisiert und optimiert ist auf alles was mit Grafik zu tun hat und die entsprechenden Befehle schneller ausführen kann. Die Architektur ist eine andere.

Früher hatte eine Grafikkarte nicht viel mehr Aufgabe als ein Bild auszugeben, im Laufe der Zeit kamen mehr Farben und höhere Auflösungen dazu, und als sich aufgrund höherer Leistungsfähigkeit der CPUs auch anspruchsvollere, vor allem 3D Spiele hervortaten, hat die GraKa Industrie sich gedacht, bauen wir GraKas, die der CPU Arbeit abnehmen, somit die Performance verbessern aber gleichzeitig auch neue Grafikfeatures hinzufügen.

Und das hat sich dann immer weiter entwickelt.

Da man mittlerweile diese Chips in sehr kleinen Fertigungsverfahren herstellen kann, gibts jetzt von Intel CPUs die eine GPU integriert haben. Das ist im Prinzip so, als wolle man die (Grund)Fähigkeiten einer GPU in eine CPU stecken. Die Leistungsfähigkeit ist natürlich vergleichsweise eingeschränkt.
 
Zuletzt bearbeitet:
mich würde intressieren wie es umgekehrt möglich wäre? also das die gpu die arbeit der cpu abnimmt. ich muss viel rendern und da wird die cpu stark beansprucht. da gpus schneller sind, wäre es von vorteil wenn meine graka was zu tun bekommen würde
 
sehr interessant! wieso ist denn die gute alte cpu in sachen 3D berechnungen der gpu so extrem unterlegen?

mfg

Das liegt daran, dass die CPU ein größtenteils serielles Rechenwerk ist, welches serielle Berechnungen durchführen soll. Beispiel: ein laufendes Programm erfordert die Berechnung von A+B. Die CPU ermittelt das Ergebnis. Erst jetzt, wo das Ergebnis bekannt ist, kann eine Fallentscheidung durchgeführt werden, um zu ermitteln, was das Programm als nächstes tut. Und erst wenn die Fallentscheidung abgeschlossen wurde, ist klar, was als nächstes berechnet werden muss.

Das ist das Grundprinzip einer x86 In-Order Architektur. Heutzutage ist das ganze stark erweitert (Out-Of-Order mit Branch Prediction und Speculative Execution und so weiter und so fort), und man hat mehrere Kerne, die jeweils mehrere Ausführungseinheiten enthalten, aber das Grundprinzip ist dasselbe: die Ausführung von seriell aufeinanderfolgenden Einzelschritten, deren Ausgangsbedingungen oft von vorhergehenden Ergebnissen abhängen.

Das ist auch der Grund, warum es so schwer ist, Software vernünftig auf Multicores zu optimieren: wie soll man drei andere Kerne arbeiten lassen, wenn der erste noch kein Ergebnis geliefert hat?

GPUs dagegen sind massiv parallele Rechenwerke. Wenn du dir eine Grafikkarte mit 1600 Shadern anguckst, kannst du dir im Grunde einen Prozessor mit 1600 Kernen vorstellen... 1600 richtig simple, langsame und extrem beschränkte Kerne. Aber wenn z.B. ein Bild in Full-HD berechnet werden soll, dann gibt es halt fast 24 Millionen Pixel, von denen jeder für sich allein steht... kein Pixel beeinflusst irgend einen anderen, die Rechenaufgabe ist 100% parallel. Die 1600 Shader-"Kerne" können also sich beliebig Arbeit aus dem Haufen herausziehen und sich ihrer simplen, beschränkten Aufgabe ungestört widmen.

Das ist auch der Grund, warum sich nur sehr wenige Programme auf der GPU ausführen lassen: die Shader sind für sich allein lahm und dumm, und haben mit seriellen Aufgaben nichts am Hut. Dann sitzen 1599 "Kerne" gelangweilt herum, weil einer ewig braucht, um ein Ergebnis zu ermitteln, von dem alles weitere abhängt. Da ist die hochgetaktete, moderne x86-CPU dutzendmal schneller.
 
Zuletzt bearbeitet:
mich würde intressieren wie es umgekehrt möglich wäre? also das die gpu die arbeit der cpu abnimmt. ich muss viel rendern und da wird die cpu stark beansprucht. da gpus schneller sind, wäre es von vorteil wenn meine graka was zu tun bekommen würde

Einige Leute haben mit Cuda und ATI Stream noch gewartet, bis sich OpenCL langsam durchsetzt und ne vernünftige Schnittstelle zur Verfügung steht.
Fängt grade erst so langsam an sich durchzusetzen.
Probleme sind, dass man in der Regel den ganzen Code umschreiben muss wenn man GPU-Beschleunigung will, dass die Verbindung zwischen CPU und Graka bremst, dass Grakas nicht viel Cache haben und der Speicherzugriff bremst...
Allgemein darf man aber wohl durchaus erwarten, dass man wieder bei nem Speedup von 10 oder 20 oder so landet, d.h. Graka kann 20x schneller als CPU sein.

Octane Render (CUDA only)
http://www.refractivesoftware.com/

Bei Luxrender gibt es auch schon erste Versuche, teilweise auf der GPU zu rechnen, ist aber noch experimentell.

Ich denke, dass es nicht mehr lange dauert bis auch die ganzen konventionellen kommerziellen Tools GPU unterstützt rendern werden.
Zwar sind da die Hardware- und Stromkosten im Vergleich zu den Lizenzgebühren gar nicht mehr sooo wichtig, allerdings schadet etwas
mehr Effizienz wohl nie.
 
Eines der Hauptprobleme bei den Berechnungen auf der Grafikkarte ist die Tatsache, dass alle Daten in den Ram der Grafikkarte passen müssen. Sobald der Zwang besteht irgendwas über den Bus schaufeln zu müssen, brechen die Vorteile der massiv-parellelen Threads gnadenlos ein.

Es gibt schon heute eine ganze Reihe von praktischen Anwendungen, die davon satt profitieren. Aber das ist bei weitem kein Massenmarkt und wird es IMHO auch kurzfristig nicht werden.

Backbone
 
@ KeinNameFrei

sehr schön erklärt! wo gibts den "Danke"-Button?!?
 
Muss mich da einfach anschließen, super erklärt!
Eine Frage habe ich dennoch. Du redest von Full HD(1920*1080) Das macht doch einen Pixelbrei von ~2millionen Pixeln und keine 24. Oder was kommt hier noch dabei? Alpha kanäle? Farben? Kenne mich nicht so aus, deswegen frage ich eher verdutzt :)

MFG Jubeltrubel
 
jep sehr schön erklärt. jetzt wird mir die sache zunehmend klarer. finde das thema sehr interessant.

intel hat ja bereits gpu und cpu in einem (leider noch getrennte DIEs). in zukunft könnte man mit solchen hybridchips doch einigens an performance gewinnen. wenn man es denn softwareseitig auf die reihe bekommt, die aufgaben sinnvoll aufzuteilen.

mfg
 
Der Stromverbrauch und die Abwärme wäre zu hoch und die Leistung im Vergleich zu dedizierten Grafiklösungen zu gering.
 
naja die clarkdales sind ja extrem sparsam und mit der GPU kann man zumindest im HTPC bereich sehr viel anfangen.

klar das passt jetzt nicht unbedingt zum thema aber ich finde den schritt in richtung hybridchips schon sehr interessant und sinnvoll.

mfg
 
sehr schön erklärt! wo gibts den "Danke"-Button?!?

Nur beim Startpost ;)

Eine Frage habe ich dennoch. Du redest von Full HD(1920*1080) Das macht doch einen Pixelbrei von ~2millionen Pixeln und keine 24. Oder was kommt hier noch dabei? Alpha kanäle? Farben? Kenne mich nicht so aus, deswegen frage ich eher verdutzt

Puh, ich hab 2000x1100 im Kopf überschlagen und mich vielleicht in einer Null vertan :o Ich wollte halt keinen vollkommen frei erfundenen Wert hinschreiben, aber ich wollte jetzt auch nicht groß recherchieren gehen.

Es ist aber richtig, dass nicht nur die Pixel selbst berechnet werden müssen, es gehört mehr zu einem 3D-Frame. Was genau, darüber gibt's ganze Fachartikel :eek:
 
Alles klar dann weiß ich bescheid :)
Wollte es auch nicht genau wissen was da jetzt noch genau zugehört. Fakt ist das irgendwas noch dazugehört :P
Und recherchieren...hab einfach mal mein Taschenrechner angeworfen :P

MFG Jubeltrubel
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh