Chilisidian schrieb:
Also laut Igor liegt es daran, dass die Engines die vielen CUDA-Einheiten nicht gleichzeitig auslasten können.
Ich erkläre seit gut über einem Jahr immer wieder, woran es liegt, dass davor Ampere als auch nun Ada nicht ganz ihre Rechenleistung auf die Straße bringen können und warum zum Beispiuel Ampere und Ada gerade in höheren Auflösungen dann eben RDNA2 dann doch weg rennen, während es in 1080p und 1440p gerne zu einem "Gleichstand" kommt.
Tanzmusikus schrieb:
Das kann auch daran liegen, dass der Scheduler die Shader-Einheiten nicht ganz ausgelasten kann.
Nicht immer ist eine Skalierung über weitere Parallelisierung der Prozesse möglich.
Das ist bei den CPUs auch nicht anders.
Das Problem ist nicht der Sheduler, sondern wie die CUDA-Kerne organisiert werden. Grafikkarten arbeiten nach dem SIMD-Prinzip, also Single-Instruction-Multiple-Data.
NVIDIA organisiert bei Ampere und Ada die CUDA-Kerne in Vec4-ALUs und bindet die Vec4-ALUs über zwei Datenpfade an. Bei 128 CUDA-Kernen pro SM hat jeder Datenpfad 64-CUDA-Kerne oder eben 16 Vec4-ALUs. Bei NVIDIA bestimmen die Datenpfade, wie viele gleichzeitige Operationen möglich sind und die Breite der Datenpfade, wie viele Daten genutzt werden können.
Eine SM bei NVIDIA kann zwei Shader/Task/Threads verarbeiten mit bis zu 64 Werten. Um eine SM bei NVIDIA aktuell also perfekt auszulasten, benötigt man 2 Shader/Task/Threads die 64 Werte haben, erst dann kann eine NVIDIA-Karte ihre maximale Rechenleistung wirklich einsetzen.
Das Problem aktuell bei den immer moderneren Engines ist aber, dass nicht - wie früher - wenige Shader auf viele Bildpunkte angewendet werden, sondern eher immer mehr Shader auf weniger Bildpunkte. Die Anzahl der Bildpunkte steigt jedoch gleichzeitig mit der Auflösung.
Einfaches Beispiel: Wenn ein Shader in 1080p auf 16 Pixel anwendet wird, dann belegt ein Shader bei Ampere/ADA ein Datenpfad und liefert nur 16 Werte, es bleiben 48 CUDA-Kerne im Datenpfad ungenutzt, man kann diese 48 Kerne auch mit nichts anderem auslasten - theoretisch schon, aber dann muss der gleiche Operator genutzt werden. Wenn man nun den selben Shader beim Bild in 2160p berechnet, dann vervierfacht sich die Anzahl auf 64 Pixel und schon lastet man einen Datenpfad der SM "optimal" aus.
RDNA arbeitet mit 2 Datenpfaden pro CU zu 32 Werten, in 1080p sind beide Karten "gleich" schnell, weil beide pro Rutsch eben 16 Pixel im Shader bearbeiten, bei 1440p erhöht sich dann die Pixelmenge um 60 %, es kommen also 26 Pixel zusammen, die gehen auch noch in die Vec32, RDNA2 ist also immer noch ca. gleich schnell wie eben Ampere/Ada, erst bei 2160p benötigt dann RDNA einen zweiten Takt und damit fällt RDNA dann zu Ampere/Ada ab.
Das ist jetzt stark vereinfacht, zeigt aber auf, das Ampere/Ada eher auf "4k" und danach ausgelegt sind.