SC16: AMD stellt Open-Source-Programmierplattform ROCm 1.3 für GPU-Beschleuniger vor
Vor einem Jahr stellte AMD mit Blick auf Hyperscale Computing die Boltzmann-Initiative auf der SC15 vor, die im Wesentlichen aus zwei Aspekten besteht. Zum einen soll für Entwickler ein Softwareökosystem mit den notwendigen Tools erschaffen werden, um CPUs effizient zusammen mit GPUs als Beschleunigern nutzen zu können. Zum anderen wird mit HIP (Heterogeneous-Compute Interface for Portability) ein möglich einfacher Portierungsweg für bestehenden CUDA-Code geboten, von wo aus GPUs sowohl von AMD (via Heterogeneous Compute Compiler, kurz HCC) als auch NVIDIA (via NVIDIA CUDA Compiler, kurz NVCC) genutzt werden können. Daraus hervorgegangen ist die Radeon Open Compute Platform oder kurz ROCm, die speziell auf große Rechensysteme (Supercomputer) abzielt. Konsequenterweise setzt die Plattform auf 64-Bit-Linux als Betriebssystem, was in diesem Umfeld De-facto-Standard ist, und Open Source. Sämtliche Teile von ROCm werden unter MIT-Lizenz auf GitHub der breiten Öffentlichkeit zur Verfügung gestellt. AMD verspricht sich hiervon schnellere Fortschritte bei der Entwicklung des Software-Stacks. Kunden profitieren nicht nur von besseren Kommunikations- und Interaktionsmöglichkeiten mit den Entwicklern, sondern können den Code auch viel einfacher auf die eigenen Bedürfnisse anpassen. ROCm ist quasi das Gegenstück zu GPUOpen, welches in erster Linie auf Entwickler von Computerspielen abzielt.
Wie passt nun das zuvor so oft verwendete Akronym HSA (Heterogeneous System Architecture) ins Bild? Die HSA-Spezifikation, die von AMD gemeinsam mit anderen Firmen über die HSA Foundation entwickelt wurde, definiert Anforderungen an die Hardware, welche die Programmierung heterogener Systeme vereinfachen sollen (z. B. Shared Virtual Memory, Signale, Paketformate, Command-Queue Interfaces und Context Switching). HSA definiert also die Hardwarebasis, welche für ROCm notwendig ist. Die ROCr-API ist im Kern die HSA-Runtime, die mit Erweiterungen für diskrete GPUs und Peer-to-Peer-Kommunikation zwischen den GPUs (innerhalb eines Knotens oder zwischen den Knoten eines Racks per RDMA oder InfiniBand) versehen wurde.
Sämtliche Treiber wurden mit Blick auf Latenzreduzierung und Durchsatzoptimierung (ohne Rücksicht auf Legacy-Kompatibilität) von Grund auf neu entwickelt und für die Nutzung mehrerer Beschleuniger pro Knoten und verteilt über das Rack ausgelegt. Wichtig ist auch, dass diese headless, also ohne an die Grafikkarte angeschlossenen Monitor, betrieben werden können. Die Peer-to-Peer-Kommunikation mit RDMA innerhalb eines Knotens und/oder Racks wurde von Anfang an eingeplant. Zudem existiert die frühere Limitierung auf 2 oder 4 GiB Grafikspeicher pro Allokation nicht länger. Mit dem neuen Software-Stack lässt sich nahezu der gesamte vorhandene Grafikspeicher für eine einzige Allokation nutzen. Außerdem kann man per GCNISA-Assembler und ‑Disassembler sogenannten Hot Code (hier wird die meiste Rechenzeit verbraten) optimieren.
Neben HIP als wichtigen Weg für bestehenden Code bietet AMD aber über ROCm auch die Möglichkeit, einen einzigen großen ISO‑C++-Quelltext zur Programmierung von CPUs und GPUs zu verwenden. Hierfür findet dann der HCC Anwendung. Für die Auslagerung der Berechnungen kann OpenMP 4.5 verwendet werden. Zudem bietet der neue Standard C++ 17 über Parallel STL neue Möglichkeiten, Parallelität auch für Beschleuniger auszudrücken. Python ist wichtig im Feld Data Science, speziell im Feld maschinelles Lernen. Für die Auswertung von großen Datenmengen kommt zumeist Python zum Zuge. Hier wird der Einsatz von GPUs als Beschleuniger mit Hilfe des Compilers NUMBA realisiert, was vom Entwickler Continuum Analytics, Inc. aus Austin beigesteuert wird und fortan Teil von ROCm ist.
Auf der SC16 in Salt Lake City stellt AMD die Version ROCm 1.3 offiziell vor, mit der die aktuelle Polaris-Architektur und LLVM als Native Compiler unterstützt werden. Eine wichtige Neuerung mit Blick auf Machine-Learning-Anwendungen ist die Compiler-seitige Unterstützung für Float16 und Integer16, was von den neuesten GPUs hardwareseitig unterstützt wird und die Beschleunigung entsprechender Anwendungen nahezu um den Faktor zwei erlaubt. Außerdem haben sämtliche Bestandteile des ROCm-Software-Stacks Updates erfahren. Genauere Informationen hierzu können den Folien entnommen werden. Die Veröffentlichung einer Windows-Version ist im Übrigen aktuell nicht geplant, aber auch nicht für alle Zeiten ausgeschlossen.
Weitere Information sowie der Quelltext zu ROCm lassen sich hier finden. Auf den nachfolgenden Folien gibt AMD zudem einen kleinen Ausblick, wie die weitere Entwicklung von ROCm aussehen soll. Hier liegt der Fokus in zunehmenden Maße nicht mehr auf den mathematischen Basisbibliotheken, sondern auf für bestimmte Anwendungen spezialisierten. Zudem erhält OpenCL einige neue Features, über ein Plugin bereitgestellt, welche von der Hardware unterstützt werden, aber eben nicht vom OpenCL-Standard.
Auf Seiten der Hardware werden von AMD offiziell nicht nur die teuren Profilösungen Radeon Pro WX und FirePro unterstützt, sondern auch als Einstiegslösung beispielsweise für Studenten die aktuellen Radeon RX 400.
CPU-seitig soll ROCm neben der Unterstützung für x86-CPUs, zu denen auch bereits die kommenden Zen-Prozessoren gehören, auch auf ARM- und Power8-Systemen laufen. Hinsichtlich der Interconnect-Technologien setzt AMD aktuell nicht auf ein einzelnes Pferd, sondern hat sich gleich bei drei Konsortien eingebracht. Hierzu gehören GenZ (Speicher-Interconnect auf Rack-Ebene), CCIX (Host I/O, P2P-Accelerator-Lösung) und OpenCAPI (Host I/O, von IBM für Power8 gepusht, jetzt in Händen eines Konsortiums, zu dessen führenden Mitgliedern neben IBM, Google, Micron und Mellanox auch AMD gehört). Als Ziel gelten 25 GBit/s pro Lane Bandbreite. Zum Vergleich: Das aktuelle PCI Express 3.0 schafft derzeit 8 GBit/s pro Lane und Richtung und der Nachfolger PCI Express 4.0 16 GBit/s. Mit diesen Technologien ließen sich sämtliche Interconnect-Topologien abdecken, die üblicherweise Anwendung finden. Interessant ist an dieser Stelle, dass Intel bei GenZ und OpenCAPI, NVIDIA bei GenZ und ARM bei OpenCAPI fehlen, ARM jedoch bei GenZ mitmischt.
Auf der nächsten Seite findet ihr sämtliche Folien als Galerie.
Links zum Thema:
- Radeon Pro WX: Neue Grafikkarten-Serie für Workstations auf Polaris-Basis ()
- Details und Analyse der Zen-Architektur nach der Hot-Chips-Konferenz ()
- AMD Athlon X4 860K, A10-7860K und A10-7870K im Test ()
- AMD stellt Radeon Pro Duo vor: 1.499 US-Dollar und zwei Fiji-GPUs (Update) ()
- Neuer Compiler GCC 6 mit HSA- und Zen-Support ()
- AMD startet Boltzmann gegen Maxwell ()
- HSA Foundation Members Preview Plans for Heterogeneous Platforms ()
- Analyse der vermuteten Zen-Architektur ()
- Radeon Technologies Group soll AMDs Grafiksparte schlagkräftiger machen ()
- AMD und PathScale treten OpenACC Standards Group bei ()
- AMD Awarded $32 Million for ‘Extreme Scale’ High-Performance Computing Research Focused on HSA, APUs and Memory ()
- AMD veröffentlicht HSA-Open-Source-Laufzeitumgebung für Linux ()