HLSL erweitert Vektoren auf 1024 Elemente für ML-Workloads in Shader Model 6.9

Das DirectX-Team hat am 27. Mai 2025 zwei neue Funktionen für die High Level Shading Language vorgestellt, die mit Shader Model 6.9 eingeführt werden: Native Vectors und Long Vectors. Die für Entwickler sichtbarste Änderung betrifft die maximale Vektorlänge. Bislang waren HLSL-Vektoren auf vier Elemente begrenzt, was sich aus der üblichen Verwendung für Koordinaten und Farbwerte ergab. Mit den Long Vectors steigt die Obergrenze auf 1024 Elemente, also um den Faktor 128.

Hintergrund der Erweiterung sind Rechenlasten, die sich nicht auf die klassischen geometrischen oder farblichen Anwendungsfälle abbilden lassen. Genannt werden vor allem Machine-Learning-Workloads, die im Shader ablaufen und über das Cooperative-Vectors-Feature angesprochen werden. Wie stark solche Vektor- und KI-Verfahren inzwischen Einzug in die Werkzeuge der Branche halten, zeigt sich auch außerhalb von DirectX. Lange Vektoren werden über eine Template-ähnliche Syntax deklariert, etwa per vector<TYPE, SIZE> VectorName. Auf ihnen lassen sich die nativen Operatoren für Arithmetik, Zuweisung und Vergleich sowie die elementweisen HLSL-Intrinsics anwenden.

Native Vectors lösen die Skalarisierung im DXIL ab

Die zweite Funktion, Native Vectors, arbeitet weitgehend unsichtbar für den Autor des Shaders. In DXIL 1.8 und früheren Versionen wurden Vektoroperationen skalarisiert, also in einzelne Operationen auf den jeweiligen Skalarwerten zerlegt. Ab DXIL 1.9 können Vektoren nativ in der Zwischenrepräsentation abgebildet werden. Plattformen, die DXIL verarbeiten, können die Operationen dadurch gezielter für die jeweilige Hardware optimieren. Die native Darstellung bildet zugleich die Grundlage dafür, dass die deutlich längeren Vektoren überhaupt praktikabel verarbeitet werden können.

Einschränkungen bei Speicherung und Geltungsbereich

Für den praktischen Einsatz gelten einige Vorgaben. Long Vectors lassen sich nur aus Raw Buffers laden und dorthin speichern, konkret aus ByteAddressBuffers und StructuredBuffers. Typed Buffers scheiden als Speicherort aus. Beim Geltungsbereich sind lange Vektoren als lokale Variablen, als statische globale Variablen sowie als groupshared Variablen zulässig. In Constant Buffers oder in Shader-Signaturen können sie nicht verwendet werden. Diese Grenzen ergeben sich aus der Art, wie die Daten im Speicher abgelegt und zwischen den Stufen der Pipeline ausgetauscht werden. Die Dokumentation zu Native Vectors, Long Vectors und Cooperative Vectors ist im DirectX Developer Blog zu finden.

Weitere News

Weitere News

Kommentieren Sie den Artikel

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