Warum gibt es Mikroruckler bie mehr als einer grafikkarte ?

Marschel7373

PC-Selbstbauer(in)
Kann man nicht Irgednwie den Grafikkarten sagen, dass sie ein bild nach dem anderen Berechnen sollen und wenn es nicht geht, wieso geht es nicht ?
 
Nicht nur die Suchfunktion hier im Forum hätte Dir die Antwort geliefert, auch Google.
Die Antwort ist ganz banal: Es kann nicht gewährleistet werden, das die Bilder von mehreren GPUs immer in den gleichen Zeitabständen zueinander ausgegeben werden.
Oder bildlich: Abstand von Bild 1 zu Bild 2 klein, aberstand Bild 2 zu Bild 3 groß. Zwischen Bild 2 und Bild 3 kommt es zu Mikroruckler.
 
Ganz simpel:
Konventionelle Single-GPU-Lösungen gewährleisten eine gleichmäßige Bildausgabe (beispielsweise ein konstanter Abstand von 16-17 Millisekunden zwischen den einzelnen Frames entspräche in einer Sekunde? - Richtig, circa 60FPS.)
Prinzipbedingt gewährleisten Multi-GPU-Lösungen nicht eine solch ausgeglichene Frameausgabe, ergo weichen die Delays zwischen den Einzelbildern bei jenen 60 gemessenen Frames per Sekunde, stark ab - mal sind es 5ms, mal 30. Dies resultiert in einer (subjektiv) ungleichmäßig wahrgenommenen Frameausgabe, da manche Bilder zu lange angezeigt werden, andere hingegen jedoch zu kurz, um sie wahrnehmen zu können. Programmen, wie Fraps sowie anderen, konventionellen FPS-Countern berücksichtigen dies nicht, sondern messen lediglich die Frames, die pro Sekunde ausgegeben werden.

Wenngleich Nvidia-SLI-Gespanne aktuell in puncto gleichmäßiger Frameausgabe noch besser gestellt ist, hat AMD kürzlich wieder mittels des 'Frame-Pacing'-Treiber einen großen Schritt auf den richtigen Kurz gewagt - mit Erfolg :daumen:

Ich hoffe, ich konnte helfen =)
 
Die Antwort ist ganz banal: Es kann nicht gewährleistet werden, das die Bilder von mehreren GPUs immer in den gleichen Zeitabständen zueinander ausgegeben werden.

Doch, das kann man schon. Man kann...
1.) ...Renderingmodi benutzen die nicht AFR (alternate Frame Rendering - jede Karte rendert abwechselnd ein Bild) nutzen und so die Mikroruckler nahezu komplett ausschalten - dummerweise ist ein CF/SLI dann nicht mehr viel schneller als ne Einzelkarte weil man durch heutige sehr fortgeschrittene 3D-Techniken (wo jeder Pixel von einem anderen abhängt blöd ausgedrückt) die Karten dann nicht mehr ausnutzen kann (jede muss ständig auf das Berechnungsergebnis der anderen "warten"). Kein Hersteller will sich aber aufs Logo schreiben dass zwei Karten nur 20% schneller sind als eine also macht man das nicht.

2.) ...einen sehr großen Framebuffer einführen und in diesem die einzelnen Frames sauber hintereinander in gleichen Abständen anordnen und dann erst ausgeben. Technisch kein Problem (ausreichend vRAM vorausgesetzt), aber eine solche Option würde den Zeitraum von "Frame wird gerendert" bis "Frame wird ausgegeben" sehr vergrößern - und kein Hersteller will sich aufs Logo schreiben lassen dass seine Multi-GPU-Systeme nen Inputlag von 50 ms verursachen... also macht man das auch nicht. :D
 
Die Lösung dafür gab es mal von 3dfx um die 2000 mit der voodoo 3
Das verfahren weiß ich den namen nicht mehr.Und wie wir google kennen . kennst du das wort nicht findest du es nicht.

nun anstatt das jede GPU ein Vollbild erstellt berechnen beide GPU das gesamte Bild.
Dieses verfahren hat auch weniger fps als ergebniss weil eine gpu auf die daten der anderen GPu warten muss. aber es ist mehr als wenn jede gpu Einzel ein Bild berechnet.
ha
habs gefunden nennt sich sfr Split Frame Rendering
Diese methode wenden AMD und Nvidia nicht an. Wieso. nun die fps simd schlechter als mit afr
 
Zuletzt bearbeitet:
Da niemand einen entsprechenden Lag haben möchte und mit heutigen Rendertechniken was anderes Als AFR recht sinnfrei ist....mit anderen Worten: Es kann nicht gewährleistet werden. :schief:

Die Lösung dafür gab es mal von 3dfx um die 2000 mit der voodoo 3
Das verfahren weiß ich den namen nicht mehr.Und wie wir google kennen . kebnnst du das wort nicht findest du es nicht.

nun anstatt das jede GPU ein Vollbild erstellt berechneen beide GPU das gesamte bild.
Dieses verfahren hat auch weniger fps als ergebniss weil eine gpu auf die daten der anderen GPu warten muss. aber es ist mehr als wenn jede gpu einzel ein bild berechnet.
Da gibt es verschiedene:
Du kannst zeilenweise berechnen lassen.
Oder Bildabschnitte, zB oberes linkes Viertel etc.
Theoretisch könnte man auch Geometrie und Beleuchtung trennen.
Aber wie Alk schon schrieb, bei den heutigen Renderingverfahren alles sinnlos, weil keine Mehrleistung.
 
habs gefunden nennt sich sfr Split Frame Rendering
Diese methode wenden AMD und Nvidia nicht an. Wieso. nun die fps simd schlechter als mit afr

Split Frame Rendering und Tile Frame Rendering werden nicht angewendet weil es heute einfach nicht mehr funktionieren würde.
Im Jahre 2000 waren 3D Anwendungen noch (technisch gesehen) relativ simpel, im Prinzip machte eine Grafikkarte nichts außer Dreiecke Zeichnen und Texturen drübermalen. Sowas kann man innerhalb eines Bildes super auf mehrere Karten aufteilen, jede bekommt die Dreiecke die in ihrem Teil des Bildes sind und man setzts am Ende zusammen.

Heutzutage berechnen Grafikkarten hunderte von Shadern, Licht- und Schatteneffekte, Volumetrische Geschichten, Abient Occlusion, Tesselation und vieles vieles mehr. Problem daran ist: Ein Teil des Bildes welcher auf GPU1 berechnet wird kann einen Effekt auf einen anderen Teil des Bildes haben der von GPU2 berechnet werden soll. Vereinfachtes Beispiel: wenn ein Turm oben im Bild einen Schatten auf den Boden unten im Bild werfen soll müsste die GPU2 warten bis GPU1 fertig ist damit sie weiß wie der Schatten gezeichnet werden muss, erst dann könnte sie weitermachen. So wartet einmal die zweite auf die erste GPU und dann die erste auf die zweite - Ergebnis: Beide GPUs haben ne Auslastung von 40-50% und die fps sind nicht mehr als mit einer Einzelkarte bei 100% Last. Das ist natürlich schwer sinnlos - deswegen ist heutzutage eigentlich nur noch AFR sinnvoll machbar - und da nicht jeder Frame genau gleich viel Rechenzeit erfordert wie der andere je nach Bildinhalt sind die Frames auch nicht immer in den gleichen Zeitabständen fertig gerendert. Die verschiedenen Zeitabstände sind die Mikroruckler.
 
Zurück