Nvidia konzeptionell schlechtes Abschneiden bei Nutzung von AC liegt nicht an der stärke von AMD sondern einfach nur daran, dass Nvidias AC Implementation schlicht nicht vorhanden ist. Und dies können sie offensichtlich auch nicht hinter ihrem Treiber verstecken.
Wenn bei jeder Queue Nutzung grundsätzlich erst einmal ein Kontextwechsel nötig ist braucht man über deren parallele Verarbeitung (wenn sie es denn könnten) noch nicht einmal nachdenken, egal wie viel Hardware Ressourcen ungenutzt vorhanden sind oder nicht.
Die AC-Implementierung ist schon vorhanden - sonst dürften die Treiber keinen DX12-Support melden und das würde selbst Microsoft bestimmt bemerkt haben. Und wenn die nicht, dann AMD, die M$ was gesteckt hätten.
Da die Diskussion aufgrund sich ständig wiederholender und daher im Kreise drehender Argumente eh nichts bringt, mal zwei grundlegende, eher rhetorisch gemeinte Aspekte:
- Warum kann concurrent execution und in Folge AC überhaupt zusätzliche Leistung bringen? Und die Folgefrage daraus: Wieviel davon ist auf AMDs überlegene Implementierung und wieviel auf in erster Linie überhaupt vorhandenes Potential zurückzuführen.
- Wie parallel ist die parallele Verarbeitung? Spätestens bei den einzelnen ALUs hört's ja auf. Also beschränkt sich AC am Ende auf (per Software signalisiertes) OOO und (in Hardware mögliches) Zero-Overhead-Context-Switch?
- Das ganze Trara um eine sinnvolle Option in DX12 kommt mir in etwa so aufgeblasen vor, wie Nvidias glorfiziertes Vertex-Handling +1 Attribut, was dann auf etlichen Slides als „Multi Projection Acceleration“ betrommelt wurde.
Hmm, habe ich in Bezug auf die DMA Grenze für Preemption diese Analyse bei Anandtech falsch verstanden:
Preemption Improved: Fine-Grained Preemption for Time-Critical Tasks - The NVIDIA GeForce GTX 1080 & GTX 1070 Founders Editions Review: Kicking Off the FinFET Generation
Ist Pascal damit nicht auch in der Lage, unterhalb der DMA Buffer-Ebene Preemption zu betreiben? Oder ist das einfach noch nicht im Treiber freigeschaltet und deshalb in der Tabelle entsprechend aufgeführt? Nur für mein Verständnis, da sich ja nun viele Diskussionen um die Qualität der Preemption und die Effektivität von Async Compute drehen ...
Laut Nvidia (das haben Ingenieure auch uns gegenüber im Gespräch bestätigt) soll das zumindest unter Cuda (irgendwann) bis zur Instruktionsebene herunter möglich sein. Hier geht es darum, was von all den schönen Versprechungen der Treiber
aktuell unter DirectX (12) implementiert wird.
Die API muss aber unter jedem Hersteller funktionieren.
Die Erklärung das es auch von Treiber-Seite aus aktiviert werden muss ist halt intransparent und wirkt noch undurchsichtiger wenn z.B. Kepler und Maxwell für eigene Spiele sogar eine Compute-Queue verwenden.
Welche sind das by the way?
Ja, muss sie und tut sie idR auch. Und ja, es ist intransparent und das vermutlich auch mit voller Absicht.
Welches Programme genau, dafür müsste ich jetzt mal tief in den Archiven wühlen - und dafür fehlt in der Abgabewoche mit mehreren offenen Tests leider die Zeit.
--
Und damit/deswegen hänge ich mich vorerst mal hier wieder aus. Sorry.