DirectX 12/Vulkan Benchmark und Diskussions Thread

Mal eine dumme Frage.

Dieses Async Shader, gehörte das schon zu Mantle?
AMD Karten neuerem Datums sind ja auch auf Mantle optimiert worden, denke ich mal.
Wenn ja, und MS hätte Async Shader relativ kurzfristig mit in Dx12 reingenommen, wäre es doch kein Wunder wenn da nVdia versagt.
Ich denke mal, eine GPU Entwicklung dauert ja auch etwas länger.
Könntet ihr mich da mal ein bissel Aufklären?
 
Ja, es war auch in Mantle enthalten und eine mögliche Option.

Das zuständige Interface in DX12 heißt Multi-Engine und ist ein grundlegender Bestandteil von DX12, welche jeder Hersteller unterstützen muss.
Das Konzept zielt darauf ab, eine noch größere Parallelität zu erreichen, indem verschiedene Queue-Typen (Queue= Arbeitsschlange mit Befehlen für die GPU) definiert werden, welche, falls die Hardware entsprechende Schaltungen beinhaltet, parallel und asynchron zu anderen Queues berechnet werden kann.

DX12 spezifiziert dazu drei Queue-Typen.
3D (3D, Compute und Copy Aufgaben können hier eingefügt werden), Compute (Compute und Copy) und Copy (Nur Copy).

AMDs GCN Architektur beinhaltet die Möglichkeit alle drei Dinge "gleichzeitig" zu tun.
Jede GCN GPU kann 3D-Sachen rendern und pro Takt durch die ACEs Compute-Waves dazwischen schieben und zusätzlich gibt es noch zwei DMA-Engines, die sich um gewisse Speicheroperationen kümmern können.

Bei Intel ist es nicht möglich gleichzeitig oder asynchron Grafikoperationen und Compute-Berechnungen auszuführen.
Anscheinend hat die Hardware einen Arbeitsmodus der jeweils umgeschaltet werden muss, also die Grafik-Arbeit muss erst fertig werden, dann kann in den Compute-Modus geschaltet werden und dann wieder später in den Grafik-Modus.

Intel hat glaube ich eine DMA-Engine, welche aber nicht sehr schnell sein soll, jedenfalls nicht für alle Operationen.
Der Treiber wird die Entscheidung treffen, ob eine Copy-Queue z.B. von der DMA-Engine ausgeführt wird oder von dem Shader-Array.

Wie viele DMA-Engines Nvidia hat, weiß ich nicht, aber mindestens eine.
3D + Compute scheint auch bei Nvidia nicht gleichzeitig zu funktionieren.
Wird Async Compute verwendet, scheint Nvidia bisher auch ein Problem mit dem scheduling für die GPU zu haben.
Mal sehen, ob ein zukünftiger Treiber hier wenigstens für keinen bis kaum merkbaren Performanceeinbruch sorgt.

Wie Multiengine verwendet wird, ist dem Entwickler überlassen.
Möchte er verschiedene Queue-Typen verwenden, welche je nach Hardware asynchron ausgeführt werden könnten, dann muss er auch Synchronisationspunkte einfügen und darauf achten das sich nichts unnötig in die Quere kommt.

Möchte man es simpel haben, würde man alle Befehle nur in eine 3D-Queue verpacken und jeweils solche immer abschicken.
Das könnte empfehlenswert für Nvidia und Intel Hardware sein, ob strengend notwendig, ist die Gretchenfrage.
Falls ja, müsste der Entwickler seine Compute-Queues praktisch deaktivieren und den Inhalt in eine universale 3D-Queue einfügen.
Dann würden aber AMD GPUs nicht mehr von ihren ACEs profitieren.
Also entweder der Entwickler deaktiviert es für alle oder er schreibt Vendor spezifische Code-Zweige oder er lässt es aktiviert und dann müssen eben Intel und Nvidia schauen, wie das Zeug auf ihrer Hardware läuft, wenn es dem Entwickler egal ist.
 
Zuletzt bearbeitet:
Mal eine dumme Frage.

Dieses Async Shader, gehörte das schon zu Mantle?
AMD Karten neuerem Datums sind ja auch auf Mantle optimiert worden, denke ich mal.
Wenn ja, und MS hätte Async Shader relativ kurzfristig mit in Dx12 reingenommen, wäre es doch kein Wunder wenn da nVdia versagt.
Ich denke mal, eine GPU Entwicklung dauert ja auch etwas länger.
Könntet ihr mich da mal ein bissel Aufklären?

Ich für meinen Teil vermute ja immernoch das DX12 für den Desktop Markt nicht wirklich geplant und eher eine Reaktion auf Mantle war.
In meine Augen war diese API der Konsole vorbehalten, welche bekanntlich auf AMDs GCN Architektur setzt und mit dem was als DX 11.3 bekannt wurde sollte der Desktop Markt abgespeist werden. Dafür scheint der Maxwell 2 auch ausgelegt zu sein.
 
Danke
Eben das meinte ich ja, vielleicht hatte nVidia nicht mal die Möglichkeit es in Hardware zu haben.
Gut, dann müssen sie sich auf den Hosenboden setzen und es nachreichen.

Mal sehen bis wann DX12 überhaupt eine richtige Relevanz hat, dauerte bis jetzt ja immer sehr lange bis eine DX Version wirklich wichtig wurde.
NVidia hat noch Zeit und AMD kann sich solange freuen.
 
Ich für meinen Teil vermute ja immernoch das DX12 für den Desktop Markt nicht wirklich geplant und eher eine Reaktion auf Mantle war.
In meine Augen war diese API der Konsole vorbehalten, welche bekanntlich auf AMDs GCN Architektur setzt und mit dem was als DX 11.3 bekannt wurde sollte der Desktop Markt abgespeist werden. Dafür scheint der Maxwell 2 auch ausgelegt zu sein.

Danke
Eben das meinte ich ja, vielleicht hatte nVidia nicht mal die Möglichkeit es in Hardware zu haben.
Gut, dann müssen sie sich auf den Hosenboden setzen und es nachreichen.

Mal sehen bis wann DX12 überhaupt eine richtige Relevanz hat, dauerte bis jetzt ja immer sehr lange bis eine DX Version wirklich wichtig wurde.
NVidia hat noch Zeit und AMD kann sich solange freuen.

Das ist keine Sache die man relativ einfach nachreicht, dass ganze Thema schließt eine Menge Grundprinzipien der Architektur ein, Data-Handling, Dependency-Tracking, Scheduling, Wave-Size usw.
Ein kleiner Transfer, GCN ist sehr schlecht bei Geometry-Shadern und jetzt?
Ist GCN eine DX9 Architektur, weil es unter diesem Aspekt welcher mit DX10 eingeführt wurde, nicht optimale Ergebnisse zu Tage fördert?

Man kann sich im Grunde darüber streiten, ob so wie es GCN macht prinzipiell besser oder gar schlechter ist.
Worüber man sich allerdings wenig streiten kann und wieso das Thema eine größere Bedeutung genießt, ist der Fakt das GCN sich in den Konsolen befindet.
Entsprechend ist es unausweichlich das sich viele Entwickler damit beschäftigen und es (Async Compute) auch in Spielen genau nachdem Prinzip verwendet wird.

Wie die DX12 Entwicklung aussah ist natürlich etwas spekulativ.
Input gab es schon viele Jahre davor. Einige Stimmen meinen, dass der low-overhead Anteil aber durch Mantle bedingt ist.
Vielleicht ja, vielleicht nein, vielleicht etwas, in irgendeiner Form.

Es gibt DX12 Treiber, aber soweit ich weiß bisher keine DX11.3 Treiber.
Insofern ist DX12 in gewisser Art schneller da, als DX11.3.

DX12 bietet auch Features für alle IHVs, die unter DX11.3 nicht verfügbar sind.
ExecuteIndirect, dass Binding-Model, der low-level-overhead auf CPU-Seiten.
Natürlich auch Multiengine.

Es ist etwas Quatsch von DX11 oder DX12 Architekturen zu reden.
Einige stellen sich das einfacher und eindeutiger vor, als es in der Realität ist.
 
Postings nicht gelesen und deshalb keinen Plan davon worum es ging?
???
Ich habe die Postings schon gelesen, aber mit dem "keinen Plan davon worum es ging" könntest du schon Recht haben. Aber ob das an mir liegt?

Wenn doch dann wäre dir eine unbeantwortete Frage wohl kaum entgangen.
Was sollen denn "von der CPU emulierte Async Shader" sein?

... dann bist du also der Meinung das die Hardware so lahm ist dass sie nicht mit den ach so veralteten Radeon GPUs mithalten kann und für eine schlechtere Leistung sorgt als ohne.
Wie kommst du darauf?
Welche Hardware soll denn so lahm sein?

... kannst du dir Sprüche wie "Auch da wieder der Blödsinn mit der Emulation." sparen denn damit machst du dich letztendlich aufgrund fehlenden Einblicks in die Materie lächerlich.
Da du ja angeblich über den fehlenden Einblick in die Materie verfügst, erkläre uns doch mal, was "von der CPU emulierte Async Shader" sein sollen.
 
Mal eine dumme Frage.

Dieses Async Shader, gehörte das schon zu Mantle?
AMD Karten neuerem Datums sind ja auch auf Mantle optimiert worden, denke ich mal.
Wenn ja, und MS hätte Async Shader relativ kurzfristig mit in Dx12 reingenommen, wäre es doch kein Wunder wenn da nVdia versagt.
Ich denke mal, eine GPU Entwicklung dauert ja auch etwas länger.
Könntet ihr mich da mal ein bissel Aufklären?
Ja die Async Shader (nicht zu verwechseln mit Async compute) sind auch bei Mantle vorhanden.
Aber es gibt eine Sache die Mantle "anders" macht, der Dynamic VRAM ist coherent mit dem Arbeitsspeicher.
Also die Daten liegen im VRAM und dem RAM, damit lassen sich Sync Punkte besser zeitlich Abstimmen.

Aber das kommt alles noch, bisher steht nur das Gerüst von DX12 welches wir den Konsolen bzw den Mantle API Nutzung der Spiele Entwickler zu verdanken haben. *great*
 
Danke
Eben das meinte ich ja, vielleicht hatte nVidia nicht mal die Möglichkeit es in Hardware zu haben.
Gut, dann müssen sie sich auf den Hosenboden setzen und es nachreichen.

Mal sehen bis wann DX12 überhaupt eine richtige Relevanz hat, dauerte bis jetzt ja immer sehr lange bis eine DX Version wirklich wichtig wurde.
NVidia hat noch Zeit und AMD kann sich solange freuen.

Den entsprechenden Teil der Hardware Ebene kann man bei der aktuellen Generation wohl getrost vergessen, die Messe ist gelaufen. Dem zufolge bleibt letztendlich nichts anderes übrig als die fehlenden Teile zu emulieren, also z.B. von der CPU berechnen zu lassen.
Beim Nachfolger (Pascal?) werden die Karten dann wieder neu gemischt, denn dort könnten dan die Specs in die Entwicklung mit einfließen.

Von der Treiber Entwicklung erhoffe ich mir allerdings nicht allso viel.
Bestenfalls das es egal ist ob es nun aktiviert ist oder nicht, denn dann bräuchte man keine extra Wurst mehr.
Allerdings müßte man dann untersuchen wie sich diese Lösung bis einschließlich der aktuellen Generation auf andere Komponenten wie die CPU Last oder die erforderliche PCIe Bandbreite auswirkt. Ich rechne allerdings so oder so mit einer höheren CPU Last.

--- Update ---

???
Ich habe die Postings schon gelesen, aber mit dem "keinen Plan davon worum es ging" könntest du schon Recht haben. Aber ob das an mir liegt?


Was sollen denn "von der CPU emulierte Async Shader" sein?


Wie kommst du darauf?
Welche Hardware soll denn so lahm sein?


Da du ja angeblich über den fehlenden Einblick in die Materie verfügst, erkläre uns doch mal, was "von der CPU emulierte Async Shader" sein sollen.

Wie zu lesen war fällt es mir schwer zwischen Async Shader und Async Compute zu unterscheiden und mir ist noch nicht einmal klar ob beides nicht letztendlich auf das Gleiche hinaus läuft. Eine Frage die bislang unbeantwortet blieb.

Da du aber ein Meister der Vogelstrauss Taktik zu sein scheinst (na, die Äußerungen der Entwickler "übersehen" wo es darum ging dass die Performance mit async shader/compute bei der geforce deutlich einbrach, was letztendlich auch der Auslöser für die Diskussion war) und das ganze noch mit Überheblichkeit garnierst (du tust so als hättest du den vollen Durchblick, nicht ich) halte ich eine weitere Diskussion mit dir für überflüssig.

--- Update ---

Mensch, ich hatte die Tage irgendwo in nem Forum oder bei irgendwelchen News eine Auflistung gesehen wo gezeigt wurde welche Teile des Features in Hardware realisiert sind und da wurde auch gezeigt welcher Teil bei der Geforce in Software umgesetzt wird.
Hat das zufällig auch jemand gelesen und weiss noch wo das war? *suspect*
 
Es werden keine Teile vom Programmcode selber auf der CPU berechnet bzw. emuliert.
Der Treiber löst und verfolgt höchstens die Abhängigkeiten und Synchronisationspunkte für eine optimale Ausführung später.
Macht er an vielen Stellen bei allen Herstellern so oder so.
Eine große CPU-Last deswegen stelle ich mir nicht vor.

Es gibt auch keine direkten Specs, die Vorschreiben wie man das Thema zu implementieren hat.
Da es einen sehr großen Rattenschwanz mit sich ziehen würde, das Thema so wie AMD zu implementieren, nehme ich an das Pascal sich nicht grundlegend unterscheiden wird.
Im Prinzip ist es für die Hardware nur wichtig, so wenig Leerläufe wie möglich zu haben und bei Bedarf den Context schnell wechseln zu können.
Beim letzteren scheinen Nvidia GPUs ein großes Problem zu haben.


Was Async Shader/ Async Compute angeht, würde ich Async Compute bevorzugen, weil bei der ganzen Diskussion dreht es sich darum asynchron Compute-Shader einschieben zu können.

Die Auflistung bezüglich Soft/Hardware-Implementation zu Maxwell die du gesehen hast, kamen vielleicht von Mahigan.
Die aber falsch zusammengestellt sind.
Grid Unit und Work Distribution sind Hardware-Bestandteile.
 
nVidia hat,soweit ich mich erinnere, irgendwo geschrieben, dass ein Context-Wechsel relativ verlustfrei möglich ist wenn er am Ende eines DrawCalls stattfindet.
Das könnte vielleicht ein Ansatz sein, das Problem zu minimieren.
 
@Locuza
Das weiss ich leider nicht mehr denn ich habe mich die letzten Tage durch so viele Querverweise zu dem Thema geklickt das mir die Birne qualmt. :o
Da die Aktivierung allerdings zu deutliche Leistungseinbußen zu führen scheint dürfte es eine recht kritische Stelle sein.
 
Hier wird Nvidia wie folgt zitiert: “the GPU can only switch contexts at draw call boundaries” and “On future GPUs, we’re working to enable finer-grained preemption, but that’s still a long way off.”

"A long way off" was mag das bei Nvidia bedeuten?
 
Pessimistisch gesehen könnte es bedeuten das es noch nicht einmal im Pascal eingeflossen sein könnte weil dessen Entwicklung bereits abgeschlössen war oder er sich deswegen verschiebt. So oder so dürfte es noch viel Arbeit bedeuten.
 
Way off würde für mich mehr nach Volta klingen.
Aber ich erwarte schon mit Pascal Verbesserungen.
GCN Gen 3 hat bei GPU pre-emption zugelegt, Intel bei Skylake.
Nvidia wird es sich glaube ich nicht leisten, bis Volta richtig schlecht dazustehen.
 
Genaue Zahlen habe ich leider nicht, aber es war ein Thema bei der HSA-Roadmap:
http://www.abload.de/img/slide-33-102489int.jpg

Compute Context Switching findet jedenfalls seine Erwähnung bei der GCN Gen 3 Dokumentation (Seite 15):
Important differences between Generation 2 and 3 GPUs
?
Data Parallel ALU operations improve “Scan” and cross-lane operations.
?
Scalar memory writes.
?
In Generation 2, a kernel could read from a scalar data cache to retrieve
constant data. In Generation 3, that cache now supports reads and writes.
?
Compute kernel context switching.
?
Compute kernels now can be context-switched on and off the GPU
.

http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/07/AMD_GCN3_Instruction_Set_Architecture.pdf

Edit:

Just for fun, hier noch eine Carrizo Folie:
http://images.anandtech.com/doci/9612/Slide%2020%20-%20HSA%20Accel%20Features.png
 
Zuletzt bearbeitet:
nVidia hat,soweit ich mich erinnere, irgendwo geschrieben, dass ein Context-Wechsel relativ verlustfrei möglich ist wenn er am Ende eines DrawCalls stattfindet. ...
Bei nVidia ist ein "Context-Wechsel" bisher überhaupt nur am Ende eines DrawCalls möglich, d. h., man muss eventuell sehr lange warten ...
 
Win 7-9.1 mit nvidia Kernel, ab Win10 mit AMD Kernel only.
Mal sehen wie schnell die Tipper sind...
 
Hm, DX12 läuft bei mir noch bescheiden, da wirkt DX11 wirklich smooth und Frame-times lügen nicht! ;)

Valve scheint stark auf Vulkan zu setzen (ist WCCFtech, aber zitiert hauptsächlich aus einem Präsentationsvideo).
Kann ich irgenwie verstehen, der Eiertanz um DX12 scheint kein Ende zu nehmen, zumal es noch keine Hardware gibt die DX12 Voll umfänglich Unterstützt. *chatt*
 
Zurück
Oben Unten