Werbung
Bisher konzentrierte sich vieles bei der Berichterstattung über DirectX 12 auf die Low-Level-Natur der API sowie den geringeren Overhead und damit das freiwerdende Leistungspotenzial. Auch wir haben bereits einige Tests durchgeführt – einmal zum entsprechenden Draw-Call-Test des 3DMark von Futuremark und inzwischen gehört ein DirectX-12-Benchmark zum Grafikkarten-Testparcours. Über die gemeinsame Nutzung der Grafik-API von AMD- und NVIDIA-Grafikkarten haben wir bereits berichtet, aber bis auf die theoretische Möglichkeit war davon bisher wenig zu sehen.
DirectX 12 Multi-GPU Explicit Multi-Adapter oder Multi Display Adapter – so die meistgenannten Namen der Methode der gemeinsamen Zusammenarbeit unterschiedlicher GPUs – wird durch die tiefere Kontrolle der API durch die Entwickler möglich. Sie haben eine weitergehende Kontrolle über den Zugriff auf den Speicher und viele andere Elemente der Hardware. Der Betrieb eines Multi-GPU-Systems lag unter DirectX 11 in den Händen der Treiber-Entwickler. Mit DirectX 12 geht die Kontrolle auf die Spiele-Entwickler über. Anandtech hat nun erste Tests des Multi-GPU Explicit Multi-Adapter durchgeführt. Dazu hat man einen speziellen Build von Ashes of Singularity von Oxide Games erhalten.
[h3]Die Multi-GPU-Technik[/h3]
Doch zunächst noch ein paar Worte zur Historie der Multi-GPU-Technik: Die Entwicklung von PCI-Express als Interface zur Kommunikation der Grafikkarten mit dem restlichen System hat dazu geführt, dass sowohl AMD als auch NVIDIA mithilfe des AFR (Alternate Frame Rendering) eine relativ einfache Implementation der Multi-GPU-Technik einführen konnten. Beim AFR wird jeweils ein Frame von einer GPU berechnet. Anpassungen des Spiels oder der Game-Engine sind nicht notwendig. Einzig AMD und NVIDIA müssen ihre Treiber entsprechend anpassen, damit Unterschiede im Rendering einzelner Frames nicht zu störenden Effekten führen. AMD führte dazu das Frame Pacing ein, bei NVIDIA sind entsprechende Techniken ebenfalls bereits in Hard- und Software gegossen. Die Synchronisation zwischen GPU und Display-Panel in Form von FreeSync und G-Sync hat dazu geführt, das weitere störende Effekte zumindest minimiert werden konnten.
Allerdings sind die Hardwaremöglichkeiten relativ eingeschränkt. NVIDIA erlaubt nur die Zusammenarbeit zwischen identischen Grafikkarten, während AMD etwas flexibler zumindest die Möglichkeit bietet unterschiedliche Grafikkarten einzusetzen, die auf der gleichen GPU basieren (z.B: Radeon R9 290 und Radeon R9 290X). Der wichtigste Grund für diese Einschränkung ist natürlich die Tatsache, dass so die Frames im AFR immer ähnlich schnell berechnet werden können. Anläufe mit dem SFR (Spit Frame Rendering) wurden zwar gemacht, setzten sich aber nicht durch. Zum SFR aber später mehr.
Doch abgesehen von den offiziellen Modi SLI und CrossFire gab es auch Anläufe Grafikkarten verschiedener Hersteller und unterschiedlicher Leistung zu kombinieren. 2010 führte LucidLogix die Hydra-Technologie ein. Mit einem Zusatzchip und dazugehöriger Software setzte sich die Technologie zwischen die Calls von DirectX und OpenGL und führte diese den kompatiblen Grafikkarten zu. Allerdings gab es auch große Einschränkungen, sowohl auf Seiten der Hardware, als auch auf Seiten der Software. Letztendlich führte dies dazu, dass sich die Hydra-Technologie nicht durchsetzen konnte und wieder in der Versenkung verschwand.
[h3]DirectX 12 und Multi-Adapter[/h3]
Mit DirectX 12 führt Microsoft drei Multi-Adapter-Modi ein. Der einfachste beschreibt dabei die bereits bekannte Funktionalität im AFR mit gleichen Grafikkarten wie bisher bei AMD und NVIDIA. Dieser Modus limitiert allerdings die Möglichkeiten der Entwickler, reduziert aber auch das Fehlerpotenzial bei tiefergehenden Zugriffen auf die Hardware. Weiterhin wird ein Großteil der Arbeit vom Treiber übernommen und nicht von DirectX 12.
Präsentation zu EMA in DirectX 12
DirectX 12 ermöglicht einen tiefergehenden Zugriff auf die Hardware, auch in einem Multi-GPU-System. Dazu hat Microsoft auch den Explicit-Multi-Adapter-(EMA)-Modus eingeführt. Dazu müssen die Spieleentwickler explizit auf eine Multi-GPU-Unterstützung hinarbeiten. Jede einzelne GPU, die Speicherzugriffe und wie die GPUs untereinander kommunizieren – all dies muss zuvor festgelegt werden. Die Verantwortung der Funktionalität liegt vollständig in Händen der Spieleentwickler, was auch gewisse Gefahren birgt. Der Aufwand dieser expliziten Anpassungen darf nicht unterschätzt werden und Fehler müssen von den Entwickler und nicht durch Microsoft, AMD oder NVIDIA korrigiert werden.
Der EMA-Modus bietet aber auch noch zwei unterschiedliche Wege der Implementation: Linked Mode und Unlinked Mode. Der Unlinked Mode stellt die Basis der Funktionalität von EMA dar. Der Linked Mode auf der anderen Seite bietet eine höhere Funktionalität, schränkt dann aber auch die kombinierbare Hardware deutlich stärker ein – ist wie ein festgelegtes SLI und CrossFire für DirectX 12 zu verstehen. Der Unlinked Mode hingegen kann dazu verwendet werden, unterschiedliche Grafikkarten, auch von unterschiedlichen Herstellern, miteinander zu kombinieren. Auch die Kombination zwischen diskreten und integrierten GPUs ist möglich.
Im Unlinked Mode wird jede Grafikkarte als eigenständige Hardware, mit eigenem Speicher, eigenem Commandprozessor, etc. angesehen. Das EMA in DirectX 12 ermöglicht aber nun den Datenaustausch zwischen diesen Instanzen und dies tiefergehend als nur der Austausch fertig gerenderter Frames. Teilweise gerenderte Frames oder Daten in den Buffern können nun ausgetauscht werden, was völlig neue Wege des Renderings auf mehreren GPUs ermöglicht. Was auf den ersten Blick aber wie eine einfache Möglichkeit des Datenaustausches darstellt und damit weiter als alles geht was bisher möglich war, wird auf den zweiten Blick doch etwas komplizierter. So werden die Daten über das PCI-Express-Interface ausgetauscht, was im Vergleich zur Kommunikation zwischen GPU und dem Grafikspeicher deutlicher langsamer ist und zudem über eine recht hohe Latenz verfügt. Die Entwickler müssen sich also überlegen, welche Daten sie wann austauschen wollen, damit das PCI-Express-Interface nicht zum Flaschenhals wird. Ebenfalls darauf geachtet werden muss, in welcher Form diese Daten ausgetauscht werden. Die verschiedenen Hersteller und GPU-Generationen und Varianten legen oftmals unterschiedliche Datenformate an, die dann nicht so einfach untereinander verwendet werden können. Hier wird dann die Arbeit ersichtlich, die bei der Implementation von EMA im Unlinked Mode notwendig ist. Der Fokus des Unlinked Mode innerhalb des EMA liegt auf der bereits besagten Unterstützung von dGPUs und iGPUs, aber natürlich lassen sich hier auch unterschiedliche GPUs unterschiedlicher Hersteller kombinieren.
Der Linked Mode stellt wie gesagt in einfachster Form ein SLI oder CrossFire unter DirectX 12 dar, allerdings wird im Linked Mode die Hardware zu einer "Grafikkarte" zusammengefasst. Für das Spiel und den Nutzer sind nur noch eine GPU und ein Speicher sichtbar. Die Hardware muss dazu deutlich enger miteinander verknüpft werden, was deutlich mehr Möglichkeiten zulässt, allerdings auch für die Einschränkungen bei der Hardware sorgt. Das größte Leistungspotenzial liegt durch die Freiheiten sicherlich im Linked Mode, die größte Flexibilität bietet der Unlinked Mode. Entwickler, die möglichst wenig Arbeit haben möchten und dennoch eine Basisfunktionalität für ein Multi-GPU-System bieten wollen, unterstützen einfach nur das EMA und überlassen die Arbeit den Treiberentwicklern von AMD und NVIDIA. Da aber nur die Entwickler selbst den besten Einblick in die eigene Arbeit haben, ist sicherlich ein Angebot aus Linked und Unlinked Mode zu bevorzugen.
[h3]EMA in Ashes of Singularity[/h3]
Oxide Games hat Ashes of Singularity in der vergangenen Woche in den Early Access von Steam gebracht. 2016 soll das Echtzeit-Strategiespiel dann fertig sein. Als erstes seiner Art setzt es auf DirectX 12 und als erster Entwickler hat Oxide Games die Möglichkeiten von DirectX 12 vollständig ausgenutzt. AMD und Microsoft nutzen das Entwicklerstudio bzw. das Spiel als Technologiedemo. Zur Demonstration von EMA hat Oxide Games das Spiel auf eine AFR-Implementierung hin angepasst. Die Entwickler können jeden Frame einer bestimmten GPU zuteilen – eine Arbeit die zuvor vom Treiber übernommen wurde. Außerdem übernehmen sie die Übertragung der Frames von der sekundären zur primären GPU und auch das Frame Pacing wird nun vom Entwickler übernommen. Das AFR funktioniert am besten, wenn ähnlich starke Grafikkarten eingesetzt werden, da die Frames hier in ähnlicher Zeit berechnet werden. Dennoch geht die Implementation weiter als das, was AMD und NVIDIA derzeit bieten. Nicht nur lassen sich unterschiedliche GPUs unterschiedlicher Hersteller kombinieren, auch möglich ist der Betrieb einer GeForce GTX Titan X mit einer GeForce GTX 980 Ti. Funktionieren sollten alle Grafikkarten, die DirectX 12 unterstützen. Dies zu testen machte sich Anandtech nun zur Aufgabe und führte zahlreiche Benchmarks durch.
Ashes of Singularity befindet sich in der Gesamtheit noch in einem Alpha-Status. Der Unlinked Mode von EMA ist noch weitaus experimenteller. Nur eine bestimmte Kombination aus AMD- und NVIDIA-Treibern funktioniert, aber das Ergebnis ist weitaus besser als man dies zum aktuellen Zeitpunkt erwarten könnte. Laut Oxide Games soll der Unlinked Mode weiter verbessert werden, bevor man sich an die Arbeit mit dem Linked Mode macht. Von ihm erwartet man sich eine Leistungssteigerung im Bereich von 5 bis 10 Prozent.
Die Ergebnisse der ersten Tests sehen wie folgt aus:
Ein paar Worte zu den Ergebnissen: Zum einen werden die Leistungszuwächse durch die Kombination einer Radeon R9 Fury X und Radeon R9 Fury deutlich und vor allem der Mixed-Mode mit Radeon R9 Fury X und GeForce GTX 980 Ti zeigt beachtliche Ergebnisse. Relativ gering sind die Unterschiede hingegen bei der Wahl der jeweils primären Grafikkarte. Selbst ältere Grafikkarten können vom Unlinked Mode profitieren.
Auch wenn es bereits zur BUILD 2015 bei Microsoft in die Theorie einen funktionierenden Unlinked Mode gab und dieser auch präsentiert wurde, so sind die unabhängigen Messungen dennoch ein gutes Zeichen für die aktuelle Entwicklung. Wir befinden uns aber in einem recht frühen Stadium des Wechsels von DirectX11 auf DirectX 12. Es wird noch einige Monate dauern bis alleine eine Handvoll Spiele am Markt sein werden. Bis alle Entwickler auf DirectX 12 setzen werden, werden noch Jahre vergehen. Ebenso verhält es sich mit der Umsetzung der dazugehörigen Technologien. Die Leistungssteigerung durch den geringeren Overhead werden die meisten Entwickler sicherlich recht schnell mitnehmen – bis EMA sowie der Unlinked und Linked Mode allerdings überall zu finden sein werden, wird noch einmal deutlich mehr Zeit vergehen. Als Spieler kann man dieser Entwicklung aber erst einmal gelassen entgegensehen.