D3D12 Work Graphs 1.0 freigegeben: GPU plant Compute-Arbeit selbstständig

Das DirectX-Team von Microsoft hat am 11. März 2024 die Freigabe von D3D12 Work Graphs 1.0 bekannt gegeben. Hinter dem Programmiermodell steckt ein simpler Gedanke: Shader-Threads auf der GPU duerfen selbst neue Arbeit anfordern, ohne dafür den Umweg über die CPU zu nehmen. So entsteht ein gerichteter azyklischer Graph aus Compute-Knoten, in dem erzeugende Knoten ihre Nachfolger asynchron aufrufen. Ablaufplanung und Datenfluss zwischen den Aufgaben regelt das System selbst. Geschrieben haben den Beitrag die DirectX-Ingenieure Amar Patel und Tex Riddell.

Drei Knotentypen und ein Graph, der sich selbst aufruft

Für den Start von Arbeit kennt Work Graphs drei Knotentypen. Der Broadcasting Launch arbeitet mit einem festen Gitter. Der Coalescing Launch fasst mehrere Datensaetze in einer Thread-Gruppe zusammen. Der Thread Launch verarbeitet einen Thread pro Eingabe. Azyklisch ist der Graph mit einer Ausnahme: Knoten duerfen sich selbst referenzieren. Die maximale Tiefe liegt bei 32 Ebenen, Rekursion eingerechnet. Daten wandern entweder über Records mit Größenbegrenzung direkt von Knoten zu Knoten oder, bei größeren Mengen, über UAV-Zugriffe.

Wie genau geplant wird, entscheidet die Hardware. Fortgeschrittene Architekturen verteilen die Planung, statt seriell abzuarbeiten, wie es bei ExecuteIndirect der Fall ist. Die Spezifikation sieht außerdem künftige Graphics Nodes als Blattknoten vor. Damit könnten Work Graphs die Grafikpipeline direkt ansteuern. Diese Mesh-Nodes zeigte Microsoft auf der GDC 2024 als Ausblick, während Version 1.0 zunächst bei Compute-Shadern bleibt. Wer die Pipeline tiefer verstehen will, findet weitere Grundlagen bei XboxDev.

Was man braucht und wie die Branche reagiert

Vorausgesetzt werden das Agility SDK ab Version 1.613, die aktuelle Fassung des DirectX Shader Compilers sowie Shader Model 6.8 mit dem Ziel lib_6_8 für Node-Shader. Bei den Treibern nannte Microsoft zum Freigabezeitpunkt für AMD den Adrenalin-Treiber 23.40.14.01, mit öffentlicher Unterstützung im zweiten Quartal 2024 für die Radeon-RX-7000-Serie. NVIDIA unterstützt die GeForce-RTX-30-Serie und neuer ab Treiber 551.76. Wer keine passende Hardware hat, kommt mit WARP weiter, das Shader Model 6.8 samt Work Graphs in Software abdeckt.

Graham Wihlidal, Engineering Fellow im Bereich Graphics bei Epic Games, kommentierte die Entwicklung so: „With the proliferation of GPU-driven rendering techniques such as Nanite in Unreal Engine 5, the role of the CPU is trending towards primarily resource management and hazard tracking, with only a fraction of time spent generating GPU commands.“ Andrej Zdravkovic, SVP und Chief Software Officer bei AMD, erklärte, das Unternehmen arbeite mit Microsoft am Produktionsstart der Work-Graphs-API. Sie solle Entwicklern eine neue und effiziente Bearbeitung von Grafik- und KI-Lasten auf der GPU ermöglichen.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein