24

AMD streicht den eigenen Treiberpfad für die "Primitive Shaders" von Vega

Aus unserem Forum kommen derzeit eine vielbeachtete Aussage von Marc Sauter von Golem.de, welcher neues über das Vega-Feature der "Primitive Shaders" zu berichten hat. Mittels jener Primitive Shaders soll laut dem Vega-Architektur White Paper (PDF) die Effektivität der Geometrie-Berechnung maßgeblich gesteigert werden – was ein Grund dafür sein dürfte, wieso AMD für den Vega-10-Chip weiterhin (und trotz der hohen Anzahl an Shader-Einheiten) an nur 4 Raster-Engines festgehalten hatte. Die damit verbundenen 4 Geometrie-Engines ergeben nominell einen Output von 4 Primitives per Takt – mittels Primitive Shaders wäre dies jedoch bis auf 17 Primitives per Takt zu steigern gewesen. Ursprünglich wollte AMD hierfür einen extra Treiberpfad anbieten, mittels welchem der Spieleentwickler also entweder den normalen Pipeline-Weg oder aber den "NGG Fast Path" bei Vega-Grafikchips wählen hätte können. Jener extra Treiberpfad hat es bis jetzt aber nicht in die Vega-Treiber geschafft – und wird dies laut einer Planänderung seitens AMD nun auch nicht mehr schaffen:

AMDs letzte Aussage war, der alternative Treiber-Pfad für Primitive Shaders wurde verworfen, stattdessen halt direkt per API via Entwickler ... was wohl noch keiner (in einem bereits veröffentlichtem Spiel) gemacht hat.
Quelle: y33H@ aka Marc Sauter von Golem.de @ 3DCenter-Forum

Selbige AMD-Aussage wurde auf AMDs TechDay kurz vor der CES 2018 getätigt und ist natürlich nicht mit einem völligen Abgesang auf die Primitive Shaders zu verwechseln – allerdings wird es den Spieleentwicklern deutlich schwieriger gemacht, selbige zu nutzen. Mit der alten Planung hätten die Spieleentwickler das Feature faktisch nur einmalig ansprechen müssen, um danach dessen Performancegewinne einzusacken – nunmehr dürfte das ganze mit einer größeren Arbeit verbunden sein. Leider ist die hierzu bislang vorliegende Formulierung arg ungenau – es ist nicht klar, welche API hiermit gemeint ist und wer den jeweiligen Job machen muß. Auch das inzwischen von AMD hierzu herumgereichte "Radeon RX Vega Features Update" ist mittels der Formulierung "Exposing primitive shaders to developers requires API changes" nicht wirklich präziser:

Somit kann derzeit nur davon ausgegangen werden, daß die Einbindung von Primitive Shaders in eine reale Anwendung einfach deutlich schwieriger ist, was also die reale Nutzung des Features entsprechend unwahrscheinlicher macht. Der aktuelle Markt-Mißerfolg der bisherigen Vega-basierten Grafikkarten (sei es nun durch das nicht erreichte Performanceziel oder deren anhaltende Lieferschwäche) macht es zudem auch nicht gerade wahrscheinlicher, das ein Spieleentwickler hier eine Extrawurst brät – wenn, dann wird das Feature vielleicht einmal genutzt werden, wenn die aktuellen Vega-Grafikkarten wohl schon wieder ausgelaufen sind. Die Primitive Shaders reihen sich damit ein in eine Reihe von ansprechend aussehenden Features der Vega-Grafikchiparchitektur, welche oftmals nicht in diesem Maße gezündet haben wie es von AMD gedacht war. Dabei ist die Vega-Architektur sicherlich kein totaler Fehlschlag, einige der gesetzten Ziele hat man durchaus erreicht – aber wenn man gegen nVidia mit deren aktuellem Vorsprung antritt, dann muß eben wirklich alles funktionieren, um konkurrrenzfähig herauszukommen.

Ob AMD die Primitive Shaders weiterhin im Grafikchip-Design behält, wird man sehen müssen – sofern es richtiggehend Transistoren kostet, lohnen sich natürlich solcherart Features, die viel Arbeit seitens der Spieleentwickler erfordern, eigentlich nicht. Sofern AMD hingegen mit seinen vorherigen Aussagen gemeint hat, das zugunsten der Primitive Shaders schlicht an den Grafik-APIs DirectX und Vulkan gearbeitet werden muß, wäre dies eine eher lösbare Aufgabe, da wohl nur einmalig zu erbringen. Größere Verbesserungen dürfte man sich jetzt so oder so zugunsten von neuen Grafikchips aufsparen – sprich entweder Vega 20 oder dann eben die nachfolgende Navi-Generation. Jene erscheint aus unserer Sicht immer mehr als der Feature-Fix zur Vega-Generation – Navi muß schon kaum eigene Feature mitbringen, sondern sollte zuerst einmal alle Vega-Feature aktiviert an Bord haben. Eventuell ist dies von AMD sogar exakt so geplant, denn üblicherweise schiebt AMD nach einer Grafikchip-Generation mit größeren Änderungen erst einmal ein paar Generationen mit eher kleineren Änderungen ein.

Nachtrag vom 24. Januar 2018

Bezüglich AMDs Entscheidung, das Vega-Feature der "Primitive Shaders" mehr oder weniger abzusägen, kommen aus der Diskussion in unserem Forum wertvolle Einwürfe zur besseren Einordnung. So kann mittels des Twitter-Posting eines AMD-Mitarbeiters im Treiberteam erst einmal bestätigt werden, das AMD im letzten August den Spieleentwicklern durchaus versprochen hatte, jenes Feature einfachstmöglich nutzen zu können – sogar ohne manuelles Aktivieren, augenscheinlich sollte der Treiber selbständig entscheiden, welcher Pfad gewählt wird. Dies ist wie bekannt nunmehr gestrichen und wartet daher augenscheinlich auf API-Änderungen – welche gar nicht so einfach zu realisieren sind, denn speziell in DirectX sind Hersteller-spezifische Subroutinen eigentlich gar nicht gern gesehen. Sofern wirklich DirectX und Vulkan angepasst werden müssen, geht dies sowieso nicht über Nacht, sondern erst durch reihenweise entsprechende Gremien durch, wird also massiv an Zeit benötigen und damit für die Vega-Generation selber kaum noch praxisrelevant werden. Man kann nur hoffen, das AMD jenes Feature dann wenigstens bei der 2019er Navi-Generation auf die Reihe bekommt.

Und dies könnte unter Umständen hochwichtig für AMD sein, denn AMD hat im originalen GCN-Design einige Limitationen stecken, welche den Winkelzug mit den Primitive Shaders erst notwendig gemacht haben – und auch jetzt immer noch als notwendig erscheinen lassen. Denn die GCN-Architektur ist wohl tiefliegend auf maximal vier Shader-Arrays mit jeweils einem Rasterizer und einem Geometrie-Prozessor beschränkt. Jenes Niveau hatte AMD allerdings schon mit dem Hawaii-Chip der Radeon R9 290/290X erreicht, danach konnte man die (relative) Raster- und Geometrie-Power nicht mehr wirklich großartig steigern. Bei Vega hat man sich augenscheinlich genau aus diesem Grund die "Primitive Shaders" ausgedacht – eben um trotz der Design-Limitationen (wesentlich) mehr Geometrie-Power bieten zu können. Das Feature ist aus dieser Sicht also nicht einfach nur eine nette Dreingabe, sondern wahrscheinlich sogar wesentlich, damit die Vega-Architektur (zumindest bei Vega 10) überhaupt auf Touren kommt. Das praktische Fehlen dieses Features könnte also einer der Hautpunkte für die (klare) Verfehlung des Performanceziels bei Vega 10 sein.

Im übrigen ist der seinerzeitigen AMD-Präsentation zu den GCN-Limitierungen auch zu entnehmen, das die CGN-Architektur eigentlich auf 16 Shader-Cluster pro Shader-Array beschränkt ist – was bei 64 Shader-Einheiten pro Shader-Cluster auf maximal 4096 Shader-Einheiten hinausläuft, wie es schon vom Fiji-Chip erreicht wurde. Sofern AMD nicht mehr Shader-Einheiten in einen Shader-Cluster pressen wollte (derzeit geht man aus Auslastungsgründen eher den umgekehrten Weg), sind AMDs GCN-Grafikchips damit auch auf maximal 4096 Shader-Einheiten beschränkt. Dies läßt die alte AMD-Angabe zur Navi-Generation, das AMD sich dort verstärkt um "Skalierbarkeit" kümmern will, in einem ganz neuen Licht erscheinen: Verschiedentlich wurde hierzu von MultiChip-Konstruktionen fabuliert – AMD dürfte aber wohl "nur" gemeint haben, das man bei Navi mit den bisherigen GCN-Limits brechen will. Denn gänzlich in Stein gemeißelt sind die bisherigen GCN-Limitationen natürlich nicht, nur wird deren Überwindung einen höheren Aufwand erfordern, was wohl erst mit Navi und damit mehr als 4096 Shader-Einheiten seitens AMD auf dem Plan steht.

Nachtrag vom 26. Januar 2018

Zu den "Primitive Shaders" von Vega (bzw. der Einstellung des AMD-eigenen Treiberpfades für selbige) wird derzeit immer noch angeregt diskutiert, inwiefern AMD eine solch einfache Form der Nutzung für die Spieleentwickler überhaupt jemals offiziell angekündigt hatte. Es gibt zwar ein entsprechendes Twitter-Posting eines AMD-Mitarbeiters vom Treiberteam, aber eine offizielle Ankündigung wäre dann noch einmal etwas ganz anderes. Und in der Tat hat sich AMD seinerzeit vornehm mit genaueren Formulierungen zurückgehalten, rein offiziell also nie eine möglichst einfache Implementierung zugunsten der Spieleentwickler versprochen. Da eine solche einfache Implementierung direkt im Treiber zumindest in AMDs interner Planung war, ist dagegen ziemlich unstrittig – ansonsten würden das Twitter-Postinmg wie auch die Formulierung "wurde verworfen" keinen Sinn ergeben. Insofern hat AMD das Feature zwar offiziell nie versprochen, es aber durchaus so geplant, das es möglichst einfach zu erreichen ist – und so wurde es auch verstanden. Ansonsten hätte AMD schließlich glatt "vergessen" zu erwähnen, das jenes Feature erst einmal bedeutsame API-Umbauten erfordert – im Fall von DirectX sogar wahrscheinlich das Warten auf eine regelrecht neue DirectX-Version, denn bei Microsoft sind Hersteller-spezifische Extensions sehr ungern gesehen.

Dies wäre eine durchaus wichtige Information zur Beurteilung der Schlagkraft des Features gewesen – denn daran hätte man umgehend ermessen können, das jenes Feature voraussichtlich zur Lebensdauer von Vega kaum eine Rolle spielen kann, sondern eher der langfristigen Strategie dient. Damit wären die Performance-Erwartungen an Vega niedriger ausgefallen – gerade wenn AMD im Vorfeld genauer angesagt hätte, was an den ganzen anderen Vega-Features sowieso erst nachträglich bzw. langfristig wirksam wird. AMDs Vega-Architektur sieht in der Zwischenzeit immer mehr aus wie einer der Grafikchips aus der Anfangszeit der 3D-Entwicklung, als gerade nVidia mit immer wieder neuen, dicken Featuresets anrückte – deren Möglichkeiten sich regelmäßig immer nur in Technik-Demos aufzeigen ließen, die Implementation der Features in echte Spiele jedoch oftmals Jahre entfernt lag. Dabei war jener Entwicklungsweg seinerzeit wohl sogar notwendig, um die Grafikchip-Entwicklung auf jene Höhen zu bringen, welche inzwischen erreicht wurden. Insofern kann man nur hoffen, das AMD aus dem mit der Vega-Architektur eingeführten Feature-Pack wirklich irgendwann einmal Nutzen ziehen kann. Für die aktuelle Situation sind die meisten der Vega-Feature jedoch mehr oder weniger nutzlos, agiert Vega grob immer noch nur wie ein Fiji-Chip auf (deutlich) höheren Taktraten.