2015-11-03 18 views
5

Mit dem Aufstieg der unteren Grafik-APIs wie DirectX 12, Mantle und Vulkan, frage ich mich, wie diese (wenn überhaupt) mit einer heterogenen Systemarchitektur (HSA) interagieren?DirectX 12/Mantle/Vulkan und HSA

Wie ich es verstehe, erforderte die Unterstützung von HSA einige Entwicklerbeteiligung, aber ich bin neugierig, ob irgendwelche der Low-Level-Grafik-APIs jetzt selbst damit umgehen, oder ob die Last auf dem Entwickler bleibt, ihn voll auszunutzen?

HSA ist besonders interessant für Funktionen wie die vereinfachte gemeinsame Nutzung von Daten zwischen Systemspeicher und Grafikspeicher, insbesondere wenn diese den gleichen physischen Arbeitsspeicher verwenden.

Da diese Frage wahrscheinlich spezifisch für den aktuellen Stand der Dinge ist, bin ich gut mit dieser Art von Überblick (obwohl Informationen über zukünftige Roadmaps wäre nett), und ich werde eine Antwort akzeptieren, die nur eine einzige Grafik-API umfasst (da ich viele bezweifle, wenn überhaupt, sind die Leute mit allen drei plus HSA vertraut). Auch wenn ich völlig missverstanden habe, wie es funktioniert, dann kannst du das auch darauf hinweisen; Ich bin mit beiden Technologien nicht besonders vertraut, würde aber gerne wissen, wie sie derzeit interagieren.

Antwort

7

Mit Blick auf die Diagramme auf der wiki page sind die Low-Level-APIs näher an das, was sie ein Nicht-HSA-System nennen.

enter image description here

Jede Operation (Speicher zu kopieren, einen Job zu starten, ...) hat durch die Anwendung ausdrücklich versendet werden. Die Anwendung kann zwar die sequenziellen Operationen in einem Befehlspuffer gruppieren und den gesamten Puffer auf einmal versenden und mit etwas anderem fortfahren, während die Befehle asynchron ausgeführt werden.

Das herkömmliche openGL/DirectX9 ist andererseits näher an einem HSA, indem es alle Versenden und Kopieren verbirgt. Dies führt jedoch zu zusätzlichen Kosten bei der Verifizierung und dem Versuch, vorherzusagen, was die Anwendung als nächstes tun wird, um die Latenz zu minimieren. Ganz zu schweigen davon, dass es sehr wenig Option gibt, um zu überprüfen, ob die Operationen abgeschlossen sind, wobei die API synchrone Wurzeln hat. Das heißt, wenn Sie eine Methode aufrufen, die das Ergebnis einer Operation benötigt, blockiert der (HSA) -Treiber, bis diese Operation abgeschlossen ist.

enter image description here

Dass der neue Low-Level-APIs mehr Kontrolle für die Anwendungsprogrammierer geben und stoppen Sie die winzigsten versteckt ist in der Tat ein wichtiges Verkaufsargument.

+0

Große Antwort, aber wie denken Sie, dass dies für andere Funktionen von HSA gilt, wie in der Lage, den gleichen Speicher zwischen einer CPU und einer iGPU zu teilen? Kann DirectX 12 etc. dasselbe tun, ohne Dinge kopieren zu müssen, die bereits im Hauptspeicher (auf der CPU-Seite) geladen sind? – Haravikk

+0

@Haravikk hängt davon ab, wie die Hardware ausgelegt ist, integrierte GPUs verfügen oft nicht über dedizierten Speicher, so dass sie den physischen RAM verwenden. Und das kann wie von der CPU zugegriffen werden. Caching bedeutet zwar, dass die Zugriffe synchronisiert und überwacht werden müssen. –