Zum Hauptinhalt Zur Navigation

GPU Open: AMD attackiert Cuda und Gameworks mit Open Source

Offen statt proprietär: Mit einer Software-Initiative namens GPU Open möchte AMD im HPC-, Linux- und Spiele-Segment auf Open Source setzen. In Abgrenzung von Nvidia sollen so Entwickler und Nutzer gewonnen werden.
/ Marc Sauter , Sebastian Grüner
89 Kommentare News folgen (öffnet im neuen Fenster)
Logo von GPU Open (Bild: AMD)
Logo von GPU Open Bild: AMD

AMDs hauseigene Radeon Technologies Group für Grafikkarten hat die GPU-Open-Initiative gestartet(öffnet im neuen Fenster) . Darunter versteht der Hersteller Middleware-Lösungen wie Compiler, SDK, Tools und Treiber, die quelloffen für Entwickler zur Verfügung stehen. Die Initiative richtet sich an Programmierer für HPC- und Linux-Software und an Spielestudios. Die Software ist bei Github unter MIT-Lizenz verfügbar, darf also kostenlos genutzt und verändert werden.

Heterogenes C++ statt Cuda

Gemeinsam mit Suse arbeitet AMD bereits an einem Compiler auf Basis der GCC(öffnet im neuen Fenster) , der Arbeiten auf die GPU auslagern kann. Dies wird nun um einen frei verfügbaren Heterogeneous Compute Compiler(öffnet im neuen Fenster) (HCC) erweitertet, welcher auf LLVM und Clang aufbaut. Der Heterogeneous System Architecture (HSA) folgend, also der Interaktion von CPU und GPU auf einem Die, soll der neue Compiler eine Quellcodedatei letztlich so in Binärcode umwandeln, dass ein Teil auf der CPU und der andere direkt auf der GPU ausgeführt wird. Diese Art der Code-Beschleunigung durch die GPU ist eine Alternative zu OpenCL und direkte Konkurrenz für Nvidias Cuda.

Neben Code in C soll HCC vor allem für C++ genutzt werden können. Auf einem Arbeitsgruppentreffen des Standardkomitees für C++ hat AMD die Grundzüge dieses Compilers bereits vorgestellt. Für LLVM hat sich AMD offenbar wegen dessen Flexibilität entschieden. Denn damit kann relativ leicht ein Backend erstellt werden, das den Code für die GPU in Assembly-Code für die GCN-Architektur umsetzt. Theoretisch kann dies auch für künftige Architekturen umgesetzt werden.

Darüber hinaus preist AMD die sehr gut ausgearbeiteten Fehlermeldungen von LLVM an, welche denen des proprietären Cuda-Compilers von Nvidia überlegen seien. Als Teil von HCC soll zudem HIP(öffnet im neuen Fenster) (Heterogeneous-compute Interface for Portabiliy) dafür genutzt werden können, Cuda-Code in C++-Code umzuwandeln. Laut Tests von AMD sollen bis zu 90 Prozent des Codes dabei automatisch umgewandelt werden können.

Zusätzlich zu den Compiler-Werkzeugen stellt AMD auch einige an diese angepasste Bibliotheken und Werkzeuge quelloffen bereit. Dazu gehören Implementierungen zur schnellen Fourier-Transformation, des Basic Linear Algebra Subprograms ( BLAS(öffnet im neuen Fenster) ) oder auch des Frameworks für parallele Programmierung Charm++(öffnet im neuen Fenster) . Ebenso kann das Deep-Learning-Werkzeug Caffe(öffnet im neuen Fenster) mit HCC verwendet werden. Zudem stellt AMD einige OpenCL-Frameworks bereit.

HSA für diskrete GPUs und Open Source für Spieleentwickler

AMD will außerdem das Konzept der HSA unter Linux auf diskrete GPUs erweitern, also PCIe-Grafikkarten. Gedacht ist dies zunächst nur für Hochleistungsrechner, auf denen Linux läuft, und für Aufgaben wie wissenschaftliche Modellierungen und sehr komplexe Algorithmen. Für besonders hohe Leistungen und geringen Latenzzeiten soll damit der direkte Speicherzugriff ohne Umweg über die CPU (RDMA) möglich werden. Auch sollen sehr große Speicherbereiche mit einem Mal zugewiesen werden können. Ebenso sollen die GPUs Peer-to-Peer miteinander kommunizieren können.

Ermöglicht wird das durch ein neues Treiber-Modell, welches den neuen Grafiktreiber AMDGPU mit dem HSA-Treiber AMDKFD kombiniert. Anders als bei dem umfangreichen 3D-Userspace-Treiber von Mesa, gibt es hierzu aber nur eine eher kleine Userspace-API, das genutzt werden kann, um die Operationen bei den Berechnungen zunächst ohne jegliche grafische Ausgabe durchführen zu können – also "headless" zu arbeiten. Gesteuert wird die Zusammenarbeit von Treiber und Kernel von einer Laufzeitumgebung. AMD bezeichnet dies als Radeon Open Compute Solutions(öffnet im neuen Fenster) . Der freie Code kann mit Grafikkarten wie der R9 Fury getestet werden.

Effekte, SDKs und Tools für Spielestudios

Für Games-Entwickler hat GPU Open ebenfalls Vorteile: AMD möchte den Studios eine noch stärkere Kontrolle über die Funktionen der eigenen GPUs geben, als das selbst mit Low-Level-APIs wie Direct3D 12 oder Vulkan der Fall ist. Insbesondere die Asynchronous Compute Engines sollen per Direct Access den Programmierern vollen Zugriff ermöglichen, um die Geschwindigkeit von Async Shading weiter zu steigern. Passend dazu liefert AMD beispielsweise ein Direct3-D12 -Plugin für GPU Perf Studio und den CodeXL Analyzer.

Obendrein stehen diverse Effekte und SDKs bereit, von Ersteren dürften Forks angefertigt werden. Verfügbar sind unter anderem ein Sample der Haarsimulation TressFX 3.0, eines zur Umgebungslichtverdeckung HDAO (High Definition Ambient Occlusion), eines zu weich auslaufenden Schatten (Contact Hardening Shadows), eines zur Shader-basierten Kantenglättung (Morphological Anti-Aliasing) und zum Renderer Forward+, der viele Lichtquellen in Kombination mit Multisampling Anti-Aliasing darstellt. Nvidias Gameworks, genauer VisualFX(öffnet im neuen Fenster) , mit beispielsweise Hairworks ist Closed Source.

Bei den SKDs stellt AMD beispielsweise LiquidVR zur Verfügung, außerdem etwa Firerays für Raytracing oder Firerender, eine Engine um per OpenCL mit Physically Based Rendering zu arbeiten.


Relevante Themen