ROCm
Entwickler (en) | AMD |
---|---|
Erstveröffentlichung | 14. November 2016 |
Stabile Version | 5.1.1 / 9. April 2022[1] |
Repository | Meta-Repository Github |
Geschrieben in | C, C ++, Python, Forran, Julia |
Middleware | HÜFTE |
Motor | AMDGPU Kernelfahrer, HIPCC, a Llvm-basierend Compiler |
Betriebssystem | Linux, Fenster |
Plattform | Unterstützter GPUs |
Vorgänger | In der Nähe von Metall, Strom, HSA |
Größe | <2 Gib |
Typ | Gpgpu Bibliotheken und APIs |
Lizenz | Libre |
Webseite | www |
Rocm[2] ist ein moderne Mikrogeräte (AMD) Software -Stack für Grafikkarte (GPU) Programmierung. ROCM umfasst mehrere Domänen: Allzweck-Computing auf Grafikverarbeitungseinheiten (Gpgpu), High Performance Computing (HPC), Heterogenes Computer. Es bietet mehrere Programmiermodelle: HÜFTE (GPU-Kernel-basierte Programmierung), OpenMP/Schnittstelle zur Nachrichtenübergabe (MPI) (Richtlinienbasierte Programmierung), OpenCL.
Rocm ist frei, libre und Quelloffene Software (außer der GPU Firmware -Blobs[3]), es wird unter verschiedenen Lizenzen verteilt.
Hintergrund
Der erste GPGPU -Software -Stack von Ati/AMD war In der Nähe von Metall, welches wurde Strom.
ROCM wurde um 2016 gestartet[4] mit dem Boltzmann -Initiative.[5] Rocm Stack baut auf früheren AMD -GPU -Stapeln auf Gpuopen, andere zum Heterogene Systemarchitektur (HSA).
Heterogene Systemarchitektur
Die HSA zielte darauf ab, eine mittelware-agnostische Zwischendarstellung zu erzeugen, die mit dem entsprechenden Finalizer mit dem entsprechenden Finalizer an die eventuelle Hardware (GPU, FPGA ...) zusammengefasst werden konnte. Dieser Ansatz wurde für ROCM fallen gelassen: Jetzt erstellt er nur einen GPU -Code mit Verwendung Llvm, und sein AMDGPU -Backend das war stromaufwärts,[6] Obwohl es immer noch Forschungen zu einer solchen verbesserten Modularität mit LLVM -MLIR gibt.[7]
Microsoft AMP C ++ 1.2
Programmierfähigkeiten
Rocm als Stapel reicht vom Kernel-Treiber bis zu den Endbenutzeranwendungen. AMD hat Einführungsvideos über AMD GCN -Hardware,[8] und ROCM -Programmierung[9] über sein Lernportal.[10]
Eine der besten technischen Einführungen in die Stapel- und ROCM/HIP -Programmierung bleibt bis heute auf Reddit zu finden.[11]
Programmierung auf hoher Ebene
Hüftprogrammierung
Hip (HCC) Kernelsprache
Speicherzuweisung
Numa
ROCM -Codeobjekte
Berechnung/Grafikinterop
Programmierung mit niedriger Ebene
Hardwareunterstützung
ROCM richtet sich hauptsächlich auf diskrete professionelle GPUs, aber jedoch Die offizielle Unterstützung ist breiterund erstreckt sich auf Produkte der Verbraucherqualität.
Die wichtigsten Mikroarchitekturen, bei denen die Unterstützung implementiert wird CDNA 1 & 2 (Profi), Rdna 1 & 2 (Verbraucher/Prosumer), GCN 4. und 5..
RDNA2 ist bereits "aktiviert", aber offizielle Unterstützung ist für 2022 geplant.[12]
Beschleunigte Prozessoreinheiten (APU) sind "aktiviert", aber nicht offiziell unterstützt. Es ist mit ROCM -Funktionsfunktion beteiligt.[13]
Professioneller GPUs
AMD -Instinkt Beschleuniger sind die erstklassigen Rocm-Bürger neben dem Prosumer Radeon Pro GPU -Serie: Sie sehen meistens volle Unterstützung.
Die einzige GPU der Verbraucherqualität, die relativ gleich unterstützt, ist ab Januar 2022 der Radeon VII (GCN 5 - Vega).
GPUs der Verbraucherqualität
Name von GPU Serie | Süd Inseln | Meer Inseln | Vulkan Inseln | Arktis Inseln/Polaris | Vega | Navi 1x | Navi 2x |
---|---|---|---|---|---|---|---|
Veröffentlicht | Januar 2012 | September 2013 | Jun 2015 | Jun 2016 | Jun 2017 | Jul 2019 | Nov 2020 |
Marketingname | Radeon HD 7000 | Radeon RX 200 | Radeon RX 300 | Radeon RX 400/500 | Radeon RX Vega/Radeon VII (7 nm) | Radeon RX 5000 | Radeon RX 6000 |
AMD -Unterstützung | ![]() | ![]() | |||||
Befehlssatz | GCN -Anweisungssatz | RDNA -Anweisungssatz | |||||
Mikroarchitektur | GCN 1. Gen | GCN 2. Gen | GCN 3. Gen | GCN 4. Gen | GCN 5. Gen | Rdna | Rdna 2 |
Typ | Unified Shader -Modell | ||||||
Rocm / HSA | ![]() | ? | |||||
OpenCL | 1.2 (on Linux: 1.1 (keine Bildunterstützung) mit Mesa 3D) | 2.0 (Adrenalin -Treiber auf Win7+) (an Linux: 1.1 (keine Bildunterstützung) mit MESA 3D, 2.0 mit AMD -Treibern oder AMD ROCM) | 2.0 | 2.1 [14] | |||
Vulkan | 1.0 (Gewinnen Sie 7+ oder Mesa 17+)) | 1.2 (Adrenalin 20.1, Linux Mesa 3d 20.0) | |||||
Shadermodell | 5.1 | 5.1 6.3 | 6.4 | 6.5 | |||
OpenGL | 4.6 (unter Linux: 4.6 (MESA 3D 20.0)) | ||||||
Direct3d | 11 (11_1) 12 (11_1)) | 11 (12_0) 12 (12_0)) | 11 (12_1) 12 (12_1)) | 11 (12_1) 12 (12_2)) | |||
/DRM/AMDGPU [a] | Experimental[15] | ![]() |
- ^ DRM (Direkter Rendering -Manager) ist eine Komponente der Linux Kernel.
Software -Ökosystem
Lernmittel
AMD Rocm Product Manager machte einen Tour durch den Stapel.[16]
Integration von Drittanbietern
Die Hauptverbraucher des Stacks sind maschinelles Lernen und leistungsstarke Computer-/GPGPU-Anwendungen.
Maschinelles Lernen
Verschiedene Deep -Learning -Frameworks haben ein ROCM -Backend:[17]
- Pytorch
- Tensorflow
- Onnx
- Mxnet
- Cupy[18]
- Miopen
- Kaffe
- Iree (die LLVM Multi-Level Intermediate Repräsentation (MLIR) verwendet))
Supercomputing
ROCM gewinnt erhebliche Traktion in der Top 500.[19] ROCM wird mit dem Exascale Supercomputer Elcapitan verwendet[20][21] und Grenze.
Einige verwandte Software sind bei gefunden Amd Infinity Hub.
Andere Beschleunigungs- und Grafikinteroperation
Ab Version 3.0, Mixer kann jetzt Hüftberechnungskerne für seine verwenden Renderer Fahrräder.[22]
Andere Sprachen
Julia
Julia hat das AMDGPU.jl -Paket,[23] Dies integriert sich in LLVM und wählt Komponenten des ROCM -Stacks aus. Anstatt Code über HIP zu kompilieren, verwendet AMDGPU.jl Julias Compiler, um LLVM IR direkt zu generieren, das später von LLVM zu generieren ist, um nativen Gerätecode zu generieren. AMDGPU.JL verwendet die HSA -Implementierung von ROCR, um nativen Code auf das Gerät hochzuladen und ihn auszuführen.
AMDGPU.JL unterstützt auch die Integration mit den Rocblas von ROCM (für BLAS), ROCRAND (für die Zufallszahlengenerierung) und ROCFFT (für FFTS). Zukünftige Integration mit Rokalution, Rocsolver, Miopen und bestimmten anderen ROCM -Bibliotheken ist geplant.
Softwareverteilung
Offiziell
Die ROCM -Software wird derzeit über Dutzende von öffentlichen Verbreitungen verteilt GitHub Repositorys. Innerhalb der Hauptpublikum Meta-Repository, Da ist ein XML Manifest Für jede offizielle Veröffentlichung: Verwenden Git-Repo, a Versionskontrolle Werkzeug aufgebaut auf Git, ist die empfohlene Methode, um mit dem Stapel lokal zu synchronisieren.[24]
Die Veröffentlichung von ROCM 5.1 steht unmittelbar bevor, wahrscheinlich Mitte Februar mit einer geringfügigen Veröffentlichung jeden Monat.[17]
Stapelbereich | Öffentliche Github -Organisation |
---|---|
Niedrig (meistens) | https://github.com/radeonopencompute |
Mittelstufe (meistens) | https://github.com/rocm-developer-tools |
Hochrangiger (meistens) | https://github.com/rocmsoftwareplatform/ |
AMD beginnt mit der Verteilung von Containeranwendungen für ROCM, insbesondere wissenschaftliche Forschungsanwendungen, die unter gesammelt wurden Amd Infinity Hub.[25]
AMD verteilt sich Pakete, die auf verschiedene Linux -Verteilungen zugeschnitten sind.
Dritte Seite
Es wächst ein Wachstum ROCM von Drittanbietern Ökosystemverpackung.
Linux -Verteilungen sind offiziell (nativ) ROCM mit verschiedenen Fortschrittsgraden: Arch,[26] Gentoo,[27] Debian und Fedora,[28] GNU Guix, Nixos.
Es gibt Spackpakete.[29]
Komponenten
Es gibt einen Kernel -Raum Benutzerraum Module.
Die inoffizielle typografische Richtlinie besteht darin,: Großbuchstaben in Großbuchstaben für Bibliotheken auf niedriger Ebene, d. H. RoCT, und das Gegenteil für benutzergerichtete Bibliotheken, d. H. Rocblas, zu verfolgen.[30]
AMD entwickelt sich aktiv mit der LLVM -Community, aber stromaufwärts ist nicht augenblicklich und lag ab Januar 2022 immer noch zurück.[31] AMD Pakete immer noch offiziell verschiedene LLVM -Gabeln[32][33][7] Für Teile, die noch nicht vorgelöst sind - Compiler -Optimierungen, die dazu bestimmt sind, proprietär zu bleiben, Debug -Unterstützung, OpenMP -Ausladung ...
Niedriger Ebene
Rock - Kernelfahrer
ROCM - Gerätebibliotheken
Support Libraries implementiert als LLVM -Bitcode. Diese bieten verschiedene Versorgungsunternehmen und Funktionen für Mathematikoperationen, Atomik, Abfragen für Startparameter, Kernel-Start für On-Device-Kern usw.
RoCT - Thunk
Das Thunk ist verantwortlich für all das Denken und die Warteschlange, die in den Stapel einfließen.
ROCR - Laufzeit
Das ROC -Laufzeit unterscheidet sich von der Runtime der ROC -Gemeinsame Sprache, da es nicht dasselbe ist.
ROCM - CompilerSupport
ROCM -Code -Objektmanager ist für die Interaktion mit LLVM verantwortlich Zwischendarstellung.
Mittlere Stufe
ROCCLR Common Language Runtime
Das Gemeinsame Sprachlaufzeit ist eine indirekte Schicht, die Aufrufe an ROCR unter Linux und Pal unter Windows anpasst. Früher konnte es zwischen verschiedenen Compilern wie dem Hsail-Compiler weiterleiten. Es wird jetzt von den oberen Indirektionschichten (Hüfte, OpenCL) absorbiert.
OpenCL
ROCM versendet seinen installierbaren Client -Treiber -ICD -Lader und einen OpenCL[34] Implementierung miteinander gebündelt. Seit Januar 2022 wird ROCM 4.5.2 OpenCL 2.2 ausgeliefert und bleibt hinter dem Wettbewerb zurück.[35]
HÜFTE - Heterogene Schnittstelle für die Portabilität
Die AMD -Implementierung für ihren GPUs heißt Hipamd. Da ist auch ein CPU -Implementierung Meistens zu Demonstrationszwecken.
HIPCC
Die Hüfte baut einen "Hipcc` Klang und kompiliert mit LLVM Open AMDGPU -Backend oder leitet sie auf die Nvidia Compiler.[36]
Hipify
Hipify ist ein Kompilierwerkzeug zur Quelle zu Quelle und übersetzt CUDA in Hip und Rückwärts, entweder mit einem Clang-basierten Tool oder einem SED-ähnlichen Perl-Skript.
GPEFORT
Wie Hipify, GPEFORT ist ein Tool-Kompilierungs-Quellcode in andere Quellen der dritten Generation, mit der Benutzer von Cuda Forran zu Hip Forran migrieren können. Es ist auch im Repertoire von Forschungsprojekten, noch mehr.[37]
Hohes Level
ROCM hochrangige Bibliotheken werden normalerweise direkt von Anwendungssoftware konsumiert, wie z. maschinelles Lernen Frameworks. Die meisten der folgenden Bibliotheken sind in der Allgemeine Matrix multiplizieren (GEMM) Kategorie, in der die GPU -Architektur auszeichnet.
Die Mehrheit dieser benutzergerichteten Bibliotheken ist in zwei Formulierungen erhältlich: Hüfte Für die Indirektionschicht, die zur Nvidia -Hardware übergehen kann, und Roc Für die AMD -Implementierung.[38]
Rocblas / Hipblas
Rocblas und Hipblas sind zentral in hochrangigen Bibliotheken, es ist die AMD-Implementierung für Lineare lineare Algebra -Unterprogramme. Es verwendet die Bibliothek Zug privat.
ROCSOLVER / HIPSOLVER
Dieses Bibliothekspaar ist die Lapack Implementierung für ROCM und ist stark an Rocblas gekoppelt.
Dienstprogramme
- ROCM -Entwickler -Tools: Debug, Tracer, Profiler, Systemverwaltungsschnittstelle, Validierungssuite, Clustermanagement.
- GPUOPEN -Werkzeuge: GPU Analyzer, Speichervisualisierer ...
- Externe Werkzeuge: Radeontop (Tui Überblick)
Vergleich mit Wettbewerbern
ROCM ist ein Wettbewerber ähnlicher Stapel, die sich an GPU Computing richten: Nvidia CUDA und Intel Oneapi.
Nvidia Cuda
NVIDIA ist bis zu Krublas und so hochrangigen Bibliotheken in der Nähe.
Nvidia -Anbieter der Clang -Frontend und dessen Parallele Thread -Ausführung (PTX) LLVM GPU -Backend als das Nvidia Cuda Compiler (NVCC).
Zum Beispiel befindet sich eine Open-Source-Schicht darüber Stromschnellen.
Intel Oneapi
Siehe auch
- AMD -Software - Ein allgemeiner Überblick über AMDs Treiber, APIs und Entwicklungsbemühungen.
- Gpuopen - Komplementäres Grafikstapel von AMD
- AMD Radeon Software - AMD -Softwareverteilungskanal von AMD
Verweise
- ^ "ROCM 5.1.1 Release". 9. April 2022. Abgerufen 1. Mai 2022.
- ^ "Frage: Wofür steht ROCM? · Ausgabe #1628 · Radeonopencompute/ROCM". Github.com. Abgerufen 18. Januar 2022.
- ^ "Debian-Details zu Paketfirmware-Amd-Graphics in Buster". Pakete.debian.org. Abgerufen 18. Januar 2022.
- ^ "AMD @ SC16: Radeon Open Compute -Plattform (ROCM) 1.3 veröffentlicht, Boltzmann wird verwirklicht". anandtech.com. Abgerufen 19. Januar 2022.
- ^ "AMD @ SC15: Boltzmann -Initiative angekündigt - C ++ und CUDA -Compiler für AMD GPUs". anandtech.com. Abgerufen 19. Januar 2022.
- ^ "Benutzerhandbuch für AMDGPU -Backend - LLVM 13 Dokumentation". Llvm.org. Abgerufen 18. Januar 2022.
- ^ a b "Die LLVM -Compiler -Infrastruktur". GitHub. 19. Januar 2022.
- ^ "Einführung in die AMD -GPU -Hardware" - via www.youtube.com.
- ^ "Grundlagen der Hip -Programmierung". AMD.
- ^ "Rocm ™ Learning Center". AMD.
- ^ "AMD ROCM / HCC -Programm: Einführung". 26. Dezember 2018.
- ^ "RDNA 2 Support? · Ausgabe #1180 · Radeonopencompute/Rocm". GitHub.
- ^ "Hier ist etwas, das Sie nicht jeden Tag sehen: Pytorch läuft auf einem 6800 m (6700xt) Laptop! Erzählte eine Menge kleinerer Konfigurationsverbesserungen und ein paar Patches, aber es funktioniert tatsächlich funktionell. RIESIG!". 10. Dezember 2021.
- ^ "AMD Radeon RX 6800 XT -Spezifikationen". TechPowerup. Abgerufen 1. Januar 2021.
- ^ Larabel, Michael (7. Dezember 2016). "Die besten Merkmale des Linux 4.9 -Kernels". Phoronix. Abgerufen 7. Dezember 2016.
- ^ "ROCM -Präsentation". Hpcwire.com. 6. Juli 2020. Abgerufen 18. Januar 2022.
- ^ a b "AMD führt seinen tiefgreifenden Beschleunigerinstinkt MI200-Serie GPUs ein". Infoq.com. Abgerufen 18. Januar 2022.
- ^ "Installation".
- ^ "AMD -Chips in Intel in den Top 500 Supercomputern der Welt, als der GPU -Krieg auftritt.". 16. November 2020.
- ^ "El Capitan Supercomputer detailliert: AMD -CPUS & GPUs, um 2 Exaflops von Computer zu fahren".
- ^ "Livermores El Capitan Supercomputer, um HPE 'Rabbit' in der Nähe des lokalen Node Local Storage zu debütieren.". 18. Februar 2021.
- ^ "Blender 3.0 unterstützt AMD GPUs auf die nächste Stufe. Beta -Unterstützung jetzt verfügbar!". Gpuopen.com. 15. November 2021. Abgerufen 18. Januar 2022.
- ^ "AMD Rocm ≤ Juliagpu". Juliagpu.org.
- ^ "ROCM -Installation v4.3 - ROCM 4.5.0 Dokumentation". Rocmdocs.amd.com. Abgerufen 18. Januar 2022.
- ^ "Durch die Ausführung von wissenschaftlichen Anwendungen auf AMD -Instinktbeschleunigern wurde es einfach einfacher". Hpcwire.com. 18. Oktober 2021. Abgerufen 25. Januar 2022.
- ^ "Rocm für Arch Linux". Github.com. 17. Januar 2022. Abgerufen 18. Januar 2022.
- ^ "Gentoo Linux verpackt AMD ROCM, macht Fortschritte bei RISC-V, LTO+PGO Python". Phoronix.com. Abgerufen 18. Januar 2022.
- ^ "Fedora & Debian Developers sehen sich die Verpackung von ROCM für eine leichtere Erfahrung von Radeon GPU Computing an". Phoronix.com. Abgerufen 18. Januar 2022.
- ^ Gamblin, Todd; Legendre, Matthew; Collette, Michael R.; Lee, Gregory L.; Moody, Adam; de Supinsski, Bronis R.; Futral, Scott (15. November 2015). "The Spack Package Manager: Bestellung für HPC -Software -Chaos einbringen" - über Github.
- ^ Bloor, Cordell. "20211221 Verpackungssitzungsnotizen und kleines Update". [email protected] (Mailingliste). Abgerufen 18. Januar 2022.
- ^ "[Debian offizielle Verpackung] Wie wird ROCM LLVM Fork noch benötigt? · Ausgabe #2449 · Rocm-Entwickler-Tools/Hip". GitHub.
- ^ "Aomp - v 14.0-1". GitHub. 22. Januar 2022.
- ^ "Die LLVM -Compiler -Infrastruktur". GitHub. 10. Januar 2022.
- ^ "Khronos OpenCL Registry - The Khronos Group Inc". www.khronos.org.
- ^ "Liste der OpenCl -Konformantenprodukte - The Khronos Group Inc". www.khronos.org. 3. Februar 2022.
- ^ "Abbildung 3. HIPCC -Kompilierungsprozessabbildung. Der Klang Compiler".
- ^ "AMD veröffentlicht Open-Source" gpirfort "als neueste Anstrengung, um den Übergang von CUDA zu fördern.".
- ^ Maia, Julio; Chalmers, Noel; T. Bauman, Paul; Curtis, Nicholas; Malaya, Nicholas; McDougall, Damon; Van Oostrum, Rene; Wolfe, Noah (Mai 2021). ROCM -Bibliotheksunterstützung und Profiling -Tools (PDF). AMD.
Externe Links
- "ROCM Offizielle Dokumentation". AMD. 2022-02-10.
- "Rocm Learning Center". AMD. 2022-01-25.
- "ROCM Offizielle Dokumentation zum GitHub Super-Project". AMD. 2022-01-25.
- "ROCM Offizielle Dokumentation - vor 5.0". AMD. 2022-01-19.
- "GPU-beschleunigte Anwendungen mit AMD Instinct Accelerators & AMD ROCM-Software" (PDF). AMD. 2022-01-25.
- "Amd Infinity Hub". AMD. 2022-01-25. — Docker -Container Für wissenschaftliche Anwendungen.