AMD Catalyst Omega: Spezialedition vom Treiberpaket bringt Downsampling für Radeons und viele weitere Neuerungen
OpenCL 2.0 & Entwickler-Tools
Tools für Spieleentwickler
Im Gegensatz zu NVIDIAs Black-Box-Strategie bei der Implementierung von GameWorks-Effekten in PC-Spiele setzt AMD beim eigenen Radeon SDK auf die frei zugängliche Bereitstellung von Quellcode für die einzelnen Effekte. Entwicklerstudios können diesen Code als Basis verwenden und nach den eigenen Bedürfnissen anpassen und optimieren. Teil dieser Effekte ist auch die Haarsimulation TressFX, mit der Lara Croft 2013 erstmals realitätsnahe Haare erhielt. Mit der Version 3.0 kann TressFX jetzt auch für die Simulation von Fell verwendet werden. Ein einsprechendes Demovideo soll im Laufe des Tages verfügbar werden. Selbiges gilt für den Quellcode.
Für die Optimierung von PC-Spielen und anderen 3D-Anwendungen stellt AMD das Tool GPU PerfStudio bereit. Die wichtigste Neuerung in Version 3.1 dürfte die Unterstützung für die eigene 3D-API Mantle sein. Zudem wurde neben allgemeinen Optimierungen ein GPU Shader Analyzer integriert und die OpenGL-Unterstützung auf Version 4.4 erweitert. Die neue Version soll noch heute zum Download auf der Entwicklerseite von AMD bereitgestellt werden.
OpenCL 2.0
Abseits von 3D-Anwendungen setzt AMD für die Auslagerung von Berechnungen von der CPU auf die GPU in erster Linie auf OpenCL. Mit dem Catalyst Omega liefert der kleine x86-Riese den ersten stabilen Treiber mit vollständiger Unterstützung für die OpenCL‑2.0‑Core-Features und einige herstellerspezifische Erweiterungen. Das zugehörige APP SDK 3.0 mitsamt der für Entwickler wichtigen aktualisierten Dokumentation wird ebenfalls im Laufe des Tages veröffentlicht. Darin sollen dann auch Codebeispiele enthalten sein, um interessierten Entwicklern den Einstieg in Version 2.0 der Open Computing Language zu erleichtern. Welche Hardware kompatibel zum OpenCL‑2.0‑Standard ist, bleibt bis dahin ungeklärt. Aktuell deutet alles darauf hin, dass lediglich die Kaveri-APUs sowie Grafikkarten auf Basis der jüngeren GCN-GPUs (Tonga, Hawaii und Bonaire) über die notwendigen Hardware-Voraussetzungen verfügen – gänzlich klar ist die Situation aber nicht. Im Vorlauf wurden bereits Blogs zu einigen wichtigen Neuerungen veröffentlicht (Shared Virtual Memory, Pipes, Device Enqueue and Workgroup Built-in Functions).
Anhand der Anwendung Corel AfterShot Pro 2.1.1.9 (64-Bit-Version), die dem Hersteller zufolge OpenCL 2.0 nutzen kann, haben wir einen Vergleich (Testsystem) zwischen den Laufzeitumgebungen mit (OpenCL 2.0 Version 1642.5, Catalyst Omega) und ohne Unterstützung für OpenCL 2.0 (OpenCL 1.2 Version 1445.5, Catalyst 14.4 WHQL) vorgenommen. Da uns keine genaue Auflistung darüber vorliegt, welche Filter von Corel wie umgesetzt wurden, haben wir uns für den Filter “lokaler Kontrast” entschieden. Dieser wurde nämlich zum “Kaveri”-Start von AMD zur Demonstration der HSA-beschleunigten OpenCL-Laufzeitumgebung herangezogen. Laut damaligem Reviewer Guide soll die Implementierung des Filters von Shared Virtual Memory profitieren können, was Teil von OpenCL 2.0 ist und von “Kaveri” in Form des HSA-Features hUMA unterstützt wird. Damals war dieser Filter noch nicht Bestandteil von AfterShot Pro, weshalb von der Presse Modifikationen am Programm vorgenommen werden mussten, um den Filter verwenden zu können. In Version 2.x gehört er jetzt aber zum normalen Funktionsumfang des Bildbearbeitungsprogramms. Als Benchmark dient die Anwendung des bereits erwähnten Filters “lokaler Kontrast” auf 21 Bilder, die im RAW-Format vorliegen und ebenfalls aus dem damaligen Benchmarkpaket von AMD stammen, sowie deren Ausgabe im JPEG-Format. Nach Beendigung der Umwandlung zeigt AfterShot Pro die benötigte Gesamtzeit an, welche wir notieren.
Kommen allein die zwei “Steamroller”-Module der APU A10-7850K zum Einsatz, dauert die Umwandlung zwischen 12,952 und 13,406 s, wobei alle vier x86-Kerne voll ausgelastet werden. Mit Hilfe der OpenCL‑1.2‑Beschleunigung halbiert sich die Berechnungszeit auf 5,909 bis 7,660 s, was auf dem Niveau liegt, welches damals mit der AfterShot-Pro-Presseversion und der HSA-beschleunigten OpenCL-Laufzeitumgebung erzielt werden konnte. Hierbei spielt es in unseren Messungen keine Rolle, welche OpenCL-Beschleunigungsstufe in AfterShot Pro 2 gewählt ist. Daran ändert sich bei Verwendung der OpenCL‑2.0‑Laufzeitumgebung des Catalyst Omega kaum etwas. Auch hier beobachten wir starke Schwankungen zwischen den einzelnen Messungen bei gleicher Beschleunigungsstufe. Welche OpenCL-Stufe aktiviert ist, spielt ebenfalls kaum eine Rolle. Über alle vier Stufen mit jeweils drei Messungen schwanken die Ergebnisse zwischen 5,845 und 6,989 s.
Eine mögliche Erklärung für dieses Ergebnis ist, dass laut dem damaligen Reviewer Guide Shared Virtual Memory in erster Linie als Möglichkeit beschrieben wird, die Entwicklungszeit zu verkürzen und Optimierungen zu vereinfachen. Wird demnach entsprechend viel Zeit in die Optimierung der OpenCL‑1.2‑Implementierung gesteckt, kann diese eine mit einer OpenCL‑2.0‑Implementierung vergleichbare Performance erreichen. Hauptvorteil von OpenCL 2.0 wäre demnach die verkürzte Entwicklungszeit, welche für die Erreichung eines bestimmten Ziels benötigt wird.
Was allerdings weiterhin auf sich warten lässt, ist die HSA-Laufzeitumgebung als optimierter Unterbau für OpenCL. HSA existiert abgesehen von der Open-Source-Implementierung für Linux, die sich aktuell ausschließlich an Entwickler richtet, somit für den Endkunden weiterhin nur auf bunten Folien. AMD hat uns in diesem Zusammenhang bestätigt, dass der mit dem Catalyst-Treiberpaket ausgelieferte JPEG-Decoder OpenCL nutzt und nicht wie anfangs komuniziert HSA.
CodeXL 1.6
Das Tool AMD CodeXL, welches kostenlos zum Analysieren und Debuggen von OpenCL-Kernel bereitgestellt wird, bietet mit der neuen Version 1.6 neben der Unterstützung für OpenCL 2.0 auch die Möglichkeit zur Messung von Leistungsaufnahme, Taktfrequenzen, Spannungen und Temperaturen einzelner Funktionseinheiten einer APU an. Damit können Entwickler fortan nicht nur die Ausführungsgeschwindigkeit des Codes analysieren, sondern auch dessen Energieeffizienz. Dies dürfte insbesondere bei der Entscheidung wichtig sein, welche Teilberechnungen auf den CPU-Kernen ausgeführt und welche auf die GPU ausgelagert werden. Die Version 1.6 von CodeXL unterstützt diese Funktionalität für die APUs Kaveri und Mullins/Beema. Veröffentlicht werden soll die neue Version am 15. Dezember.
Auf der letzten Seite findet Ihr schließlich den vollständigen Foliensatz.