Registriert: Mo Mai 29, 2006 21:13 Beiträge: 142 Wohnort: Ballenstedt/Sachsen-Anhalt
Wir erfinden da grade viele schöne Sachen (irgendwie hat Crytek das auch nicht zuende gedacht... aber hey, die verwenden ja auch SSAO ), aber um nochmal auf die eigentliche Frage zurückzukommen.
Haben GPUs etwas analoges wie Cachelines auf CPUs? Sprich, spielt es eine Rolle wie man seine Befehle sortiert? Auf modernen CPUs wird ja z.B. erst auf einen Speicherlesevorgang gewartet, wenn das Zielregister auch benutzt wird, so dass man durch geschicktes Gruppieren einiges rausholen kann. Gibt es solche Effekte auch auf GPUs? Dann könnte man alle Texturlookups weit vorne machen, dann erstmal andere Berechnungen zwischenschieben und erst dann mit den Texturdaten arbeiten. Hab ich jetzt mal so gemacht, aber kaum einen messbaren Unterschied bemerkt.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Martok hat geschrieben:
Gibt es solche Effekte auch auf GPUs? Dann könnte man alle Texturlookups weit vorne machen, dann erstmal andere Berechnungen zwischenschieben und erst dann mit den Texturdaten arbeiten. Hab ich jetzt mal so gemacht, aber kaum einen messbaren Unterschied bemerkt.
Solche Effekte gibt es auch auf GPUs. Habe mal irgendeinen Vortrag von Nvidia gehört, wo das erwähnt wurde (frag mich nicht nach nem Link, das ist schon 'ne Weile her). Dass du es nicht merkst, liegt wohl daran, dass der Treiber solche Optimierungen selbst vornimmt. Manchmal optimiert der Treiber sogar zu viel. Nämlich dann, wenn du einen Texturefetch nur unter einer bestimmten Bedingung ausführst und der Treiber die Wahrscheinlichkeit dafür, dass die Bedingung erfüllt ist, zu hoch einschätzt. Er wird den Texturefetch dann ganz an den Anfang schieben, auch wenn er unter Umständen nicht gebraucht wird - in der Hoffnung, dass es im Schnitt schneller ist. Verschätzt sich der Treiber hier, wird's durch diese "Optimierung" langsamer.
Du kannst ja mal probieren, ob du mit
Code:
#pragma optimize(off)
einen Unterschied messen kannst.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.