Wer also eine aktuelle Grafikkarte mit neuen Treiber besitzt darf jetzt auch die neusten OpenGL Funktionen mit Pascal/Delphi verwenden. Zumindest NVidia haben bereits Treiber veröffentlicht die z.B. das parallele Kompilieren von Shadern unterstützen (GL_ARB_parallel_shader_compile).
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ja, das stimmt zumindest teilweise. Maxwell hat wohl Probleme mit Async Compute, da muss man schauen dass man unter 1ms beim Wechsel bleib. Wohl weil Compute und Graphics nicht gleichzeitig geht. NVidia will das wohl im Treiber nachbessern, was dann aber natüriich wieder CPU ist und da dann Cycles kostet. Mal schaune, bisher war AMD ja besonders bei vielen DrawCalls CPU-gebunden, hoffentlich passiert bei NV nicht das selbe. Problem sind halt die Konsolen die alle mit GPUs auf GCN-Basis laufen bei denen ASync Compute dann problemlos funktioniert. Da werden die Engines also entsprechend angepasst, das könnten als auf aktuellen NV-GPUs kritisch werden.
Was das parallele Kompilieren von Shadern angeht : Auf meiner GTX980 ist das Limit bei 2, also nicht wirklich hoch. Müsste mal ausgiebig testen obs was bringt. Rein technisch sollte das ASync Compute Problem ja keine Auswirkungen auf das Kompilieren und Linken der Shader haben.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
So wie ich das verstanden habe, ist das Problem mehrschichtig. Es fehlt zum einen Schaltkreise auf der GPU und zum anderen ist der Treiber nicht auf Context switches ausgelegt. Das zweite ist wohl das Problem wieso diverse andere OGL 4.5/DX12 Sachen Performancetechnisch in den Keller gehen.
Laut Artikel hat NV auch Benchmark hersteller/Tester gebeten die entsprechenden Test aus dem Benchmarks und Artikeln raus zu lassen. Oxide(hat stark mit AMD und Mantle gearbeitet) hat diesen versuch öffentlich gemacht und darauf kamen wohl noch einige andere Firmen(was dann NV in einen schlechten Licht darstehen lässt). Der Betrug mit den 3,5GB Ram schnell Anbindung statt 4GB oder das verbauen von weniger Processing Units als in den Specs steht hat NV schon nicht gut verkraftet. Bei den geht es wohl einiges nicht mehr so richtig rund innerhalb der Firma.
Sascha Willems hat geschrieben:
Problem sind halt die Konsolen die alle mit GPUs auf GCN-Basis laufen bei denen ASync Compute dann problemlos funktioniert. Da werden die Engines also entsprechend angepasst, das könnten als auf aktuellen NV-GPUs kritisch werden.
Sind in der XBox One und PS4 sind doch AMD CPU/GPU.
Sascha Willems hat geschrieben:
Mal schaune, bisher war AMD ja besonders bei vielen DrawCalls CPU-gebunden, hoffentlich passiert bei NV nicht das selbe.
Ich hab bisher noch nie nen Punkt erreicht wo die Drawcalls auf mein AMD Systemen groß Einfluss auf die CPU hatte. Das höchste aller Gefühle in ein Game was ich an Drawcalls hatte war 5k aber um die 3k sind eher normal und das auch nur weil wir nie über OGL2 raus sind.
Sascha Willems hat geschrieben:
Was das parallele Kompilieren von Shadern angeht : Auf meiner GTX980 ist das Limit bei 2, also nicht wirklich hoch. Müsste mal ausgiebig testen obs was bringt. Rein technisch sollte das ASync Compute Problem ja keine Auswirkungen auf das Kompilieren und Linken der Shader haben.
Ich kann ja mal auf meiner Fury X testen, wenn ich Zuhause bin, auf Arbeit hab ich ne 980.
Mich interessiert ASync Compute so sehr, weil die GPUs mitlerweile so schnell sind und es beim Rendern Engpässe gibt, dass in diesen man Prima Compute Shader quetschen könnte. Wenn man von einem Pass zum nächsten geht, hat man in der Regel noch einiges auf der CPU zu tun(sortieren, raus filtern, updates,..., sync point) während dessen kann man z.B. kleine Jobs laufen lassen z.B. Texturen verarbeiten, GPU-Based Partikel simulieren oder Global Ilumination(kleine Anzahl an Rays schiessen). Bzw. wenn man OIT verwendet, kann man dann die Listen sortieren, damit beim nächsten durchlauf caches besser greifen. Die letzte Engine mit der ich gearbeitet hab war eine OGL2 Engine mit 3/4 Extensions und im Profile war die GPU vor Swap auf hochtour und danach bis zum nächsten Swap ziemliche flaute. Was an ein zu einfachen Gameloop lag und die hab ich schon zig mal in Unity Games gesehen.
Code:
for(;;){
-Update Input
-Update Logik
-Update Physic/Sound
-Renderer
-Swap
}
Wenn die CPU 5ms braucht um die ersten 3 Punkte ab zu arbeiten, dann kann im besten Fall noch 200FPS raus kommen, weil nur in "Renderer"(bei älteren OpenGL durch Sync stark ausgebremst) und "Swap" die GPU läuft. Das schlimmere, was die Designer bei der Loop nicht sehen ist, dass Physik und Sound oft Synchron/Deterministisch arbeiten, also alle Schritte nachholen, wenn sie zu spät dran sind. Wenn also 15ms in den Updates verbracht wird, dann 20ms im Rendering hat man 35ms, also ~28FPS, sollte man die Physik und Sound auf 60FPS getaktet haben, holen die im kommenden Update erstmal 1 Update nach und damit wird das ganze Update langsamer und das System schaukelt sich zusätzlich ein bisschen hoch.
Es hilft also nicht, tolle Bindless APIs, parallel Shader zu kompilieren und laufen zu lassen, wenn das Design schon hinkt.
Code:
for(;;){
-Renderer
-Update Input
-Update Logik
-Update Physic/Sound
-Swap
}
Hätte wesentlich mehr Zeit gesparrt, als alle OGL Optimierungen zusammen.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Schade, GL_MAX_SHADER_COMPILER_THREADS_ARB lässt sich auf aktuellen NVidia-Treibern nicht auslesen, obwohl die Extension dafür vorhanden ist. Gibt mir immer ein "Invalid Enum" zurück.
Eigentlich wollt ich dazu heut ne Demo basteln un den OpenGL CapsViewer erweitern :/
Außer AMD unterstützt die Extension wohl momentan eh kein anderer IHV...
Mitglieder in diesem Forum: Google [Bot] 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.