ROCm ist ein Software-Stack, der von Advanced Micro Devices (AMD) für die Programmierung von Grafikprozessoren (GPUs) entwickelt wurde. Er umfasst mehrere Bereiche, darunter Allzweck-Computing auf Grafikprozessoren (GPGPU), High-Performance-Computing (HPC) und heterogenes Computing. ROCm bietet mehrere Programmiermodelle, darunter HIP (GPU-Kernel-basierte Programmierung), OpenMP (direktivebasierte Programmierung) und OpenCL. Der Stack ist freie und quelloffene Software, mit Ausnahme der GPU-Firmware-Binärdateien, und wird unter verschiedenen Lizenzen vertrieben. Der Name stand ursprünglich für Radeon Open Compute Platform, aber da Open Compute eine eingetragene Marke ist, fungiert er nicht mehr als Akronym.
ROCm ist darauf ausgelegt, Entwicklern eine einheitliche Plattform zu bieten, um AMD-GPUs für rechenintensive Aufgaben zu nutzen, von wissenschaftlichen Simulationen bis hin zu Machine-Learning-Workloads. Es umfasst eine Reihe von Komponenten, von Low-Level-Kernel-Treibern bis hin zu High-Level-Bibliotheken und Werkzeugen, die eine effiziente Ausführung auf verschiedener Hardware ermöglichen. Der Stack wird aktiv von AMD und der Open-Source-Gemeinschaft entwickelt und unterstützt sowohl professionelle als auch Consumer-GPUs.
Hintergrund
Der erste GPGPU-Software-Stack von ATI/AMD war Close to Metal, das später zu Stream wurde. ROCm wurde etwa 2016 mit der Boltzmann-Initiative eingeführt und baute auf früheren AMD-GPU-Stacks auf. Einige Werkzeuge gehen auf GPUOpen zurück, während andere aus der Heterogeneous System Architecture (HSA) stammen. Im Juli 2026 kündigte AMD an, dass ROCm einen sechs Wochen umfassenden Veröffentlichungszyklus übernehmen werde, um häufigere Updates und Verbesserungen zu ermöglichen.
Heterogeneous System Architecture Intermediate Language
HSAIL wurde entwickelt, um eine mittlere, hardwareunabhängige Zwischendarstellung zu erzeugen, die per JIT-Kompilierung auf die jeweilige Hardware (GPU, FPGA usw.) übertragen werden konnte. Dieser Ansatz wurde für ROCm verworfen, das nun ausschließlich GPU-Code unter Verwendung von LLVM und dessen AMDGPU-Backend erstellt, das upstream integriert wurde. Die Forschung zur verbesserten Modularität mit LLVM MLIR wird jedoch fortgesetzt.
Programmierfähigkeiten
ROCm reicht als Stack von den Kernel-Treibern bis hin zu Endbenutzeranwendungen. AMD bietet Einführungsvideos zur GCN-Hardware und zur ROCm-Programmierung über sein Lernportal an. Eine der besten technischen Einführungen in den Stack und die ROCm/HIP-Programmierung findet sich bis heute auf Reddit.
Hardware-Unterstützung
ROCm richtet sich in erster Linie an professionelle GPUs, aber auch Consumer-GPUs und APUs mit derselben Architektur wie unterstützte professionelle GPUs funktionieren bekanntermaßen mit ROCm. Beispielsweise werden alle professionellen GPUs der RDNA-2-Architektur offiziell von ROCm 5.x unterstützt; Nutzer berichten, dass auch Consumer-RDNA2-Geräte wie die Radeon 6800M APU und die Radeon 6700XT GPU funktionieren.
Professionelle GPUs
ROCm unterstützt offiziell eine Reihe professioneller GPUs, darunter solche mit CDNA- und RDNA-Architektur. Diese werden typischerweise in Rechenzentren und Workstations für HPC- und Künstliche-Intelligenz-Workloads eingesetzt. Die Unterstützung wird mit jeder Veröffentlichung kontinuierlich erweitert.
Consumer-GPUs
Obwohl nicht offiziell garantiert, funktionieren viele Consumer-GPUs mit derselben Architektur wie unterstützte professionelle Modelle mit ROCm. Die Gemeinschaft hat den erfolgreichen Einsatz von Consumer-Radeon-GPUs für Rechenaufgaben dokumentiert, wobei Leistung und Stabilität variieren können.
Software-Ökosystem
Maschinelles Lernen
Verschiedene Deep-Learning-Frameworks verfügen über ein ROCm-Backend, das GPU-Beschleunigung auf AMD-Hardware ermöglicht. Zu den bekannten Frameworks gehören PyTorch, TensorFlow, ONNX, MXNet, CuPy, MIOpen, Caffe, Iree (das LLVM MLIR verwendet) und llama.cpp. Diese Integrationen ermöglichen es Entwicklern, neuronale-Netze-Training und Inferenz auf AMD-GPUs auszuführen und Modelle wie Large-Language-Models und Transformer-Architekturen zu unterstützen.
Supercomputing
ROCm gewinnt zunehmend an Bedeutung in den Top-500-Supercomputern. Es wird in den Exascale-Supercomputern El Capitan und Frontier eingesetzt. Verwandte Software ist im AMD Infinity Hub verfügbar, das containerisierte Anwendungen für die wissenschaftliche Forschung bereitstellt.
Andere Beschleunigung und Grafik-Interoperation
Ab Version 3.0 kann Blender HIP-Compute-Kernel für seinen Cycles-Renderer verwenden, was GPU-beschleunigtes Rendering auf AMD-Hardware ermöglicht.
Andere Sprachen
#### Julia
Julia verfügt über das Paket AMDGPU.jl, das sich in LLVM integriert und Komponenten des ROCm-Stacks auswählt. Anstatt Code über HIP zu kompilieren, nutzt AMDGPU.jl den Julia-Compiler, um LLVM-IR direkt zu erzeugen, das anschließend von LLVM zur Generierung von nativem Gerätecode verwendet wird. AMDGPU.jl verwendet die ROCr-HSA-Implementierung, um nativen Code auf das Gerät zu laden und auszuführen, ähnlich wie HIP seinen eigenen generierten Gerätecode lädt. AMDGPU.jl unterstützt auch die Integration mit ROCm-Bibliotheken wie rocBLAS (für BLAS), rocRAND (für Zufallszahlengenerierung) und rocFFT (für FFTs). Die zukünftige Integration mit rocALUTION, rocSOLVER, MIOpen und anderen ROCm-Bibliotheken ist geplant.
Software-Verteilung
Offiziell
Installationsanweisungen für Linux und Windows finden sich in der offiziellen AMD-ROCm-Dokumentation. Die ROCm-Software ist derzeit über mehrere öffentliche GitHub-Repositories verteilt. Im Haupt-Repository befindet sich ein XML-Manifest für jede offizielle Veröffentlichung; die Verwendung von git-repo, einem auf Git basierenden Versionskontrollwerkzeug, ist der empfohlene Weg, um den Stack lokal zu synchronisieren. AMD vertreibt auch containerisierte Anwendungen für ROCm, insbesondere wissenschaftliche Anwendungen, die im AMD Infinity Hub gebündelt sind, sowie Pakete für verschiedene Linux-Distributionen.
Drittanbieter
Es gibt ein wachsendes Ökosystem von Drittanbietern, die ROCm verpacken. Linux-Distributionen wie Arch Linux, Gentoo, Debian, Fedora, GNU Guix und NixOS verpacken ROCm offiziell nativ, mit unterschiedlichem Fortschrittsgrad. Darüber hinaus gibt es Spack-Pakete für HPC-Umgebungen.
Komponenten
Es gibt eine Kernel-Space-Komponente, ROCk, und der Rest des Stacks – etwa hundert Komponenten – besteht aus User-Space-Modulen. Die inoffizielle typografische Richtlinie lautet, ROCk in Großbuchstaben zu schreiben, bei Low-Level-Bibliotheken Kleinbuchstaben zu verwenden (z. B. rocBLAS) und bei benutzerorientierten Bibliotheken die Großschreibung beizubehalten (z. B. ROCm). AMD arbeitet aktiv mit der LLVM-Gemeinschaft zusammen, aber die Upstream-Integration ist nicht sofort abgeschlossen; Stand Januar 2022 hinkt sie noch hinterher. AMD verpackt weiterhin offiziell verschiedene LLVM-Forks für Teile, die noch nicht upstream integriert sind, darunter Compiler-Optimierungen, die proprietär bleiben sollen, Debug-Unterstützung, OpenMP-Offloading und mehr.
Low-Level
#### ROCk – Kernel-Treiber
Der ROCk-Kernel-Treiber ist die Kernel-Space-Komponente, die die GPU-Hardware verwaltet und die Schnittstelle zu den User-Space-Bibliotheken bereitstellt.
#### ROCm – Gerätebibliotheken
Unterstützungsbibliotheken, die als LLVM-Bitcode implementiert sind. Diese bieten verschiedene Dienstprogramme und Funktionen für mathematische Operationen, Atomik, Abfragen von Startparametern, On-Device-Kernel-Start und mehr.
#### ROCt – Thunk
Der Thunk ist für die Vermittlung und Warteschlangenverwaltung im Stack verantwortlich und behandelt Low-Level-Interaktionen mit dem Kernel-Treiber.
#### ROCr – Laufzeit
Die ROC-Laufzeit ist eine Reihe von APIs und Bibliotheken, die den Start von Compute-Kerneln durch Host-Anwendungen ermöglicht. Es ist AMDs Implementierung der HSA-Laufzeit-API und unterscheidet sich von der ROC Common Language Runtime.
#### ROCm – Compiler-Unterstützung
Der ROCm-Code-Objekt-Manager ist für die Interaktion mit der LLVM-Zwischendarstellung sowie für die Verwaltung von Code-Objekten und deren Laden verantwortlich.
Mittlere Ebene
#### ROCclr Common Language Runtime
Die Common Language Runtime ist eine Abstraktionsschicht, die Aufrufe an ROCr auf Linux und an PAL auf Windows weiterleitet. Früher konnte sie zwischen verschiedenen Compilern wie dem HSAIL-Compiler vermitteln. Sie wird nun von den oberen Abstraktionsschichten (HIP und OpenCL) absorbiert.
#### OpenCL
ROCm enthält einen Installable Client Driver (ICD)-Loader und eine OpenCL-Implementierung, die gebündelt geliefert werden. Stand Januar 2022 enthält ROCm 4.5.2 OpenCL 2.2 und hinkt damit dem Wettbewerb hinterher.
#### HIP – Heterogene Schnittstelle für Portabilität
Die AMD-Implementierung für seine GPUs wird HIPAMD genannt. Es gibt auch eine CPU-Implementierung, die hauptsächlich zu Demonstrationszwecken dient.
#### HIPCC
HIP baut einen HIPCC-Compiler, der entweder Clang umschließt und mit dem LLVM-AMDGPU-Backend kompiliert oder an den NVIDIA-Compiler weiterleitet.
#### HIPIFY
HIPIFY ist ein Quell-zu-Quell-Übersetzungswerkzeug. Es übersetzt CUDA-Code in HIP und umgekehrt, entweder mit einem auf Clang basierenden Werkzeug oder einem sed-ähnlichen Perl-Skript.
#### GPUFORT
Ähnlich wie HIPIFY ist GPUFORT ein Werkzeug, das Quellcode in andere Zielformate übersetzt und die Portierung von Fortran-Code zur GPU-Ausführung erleichtert.