ROCm

Rocm
Entwickler (en) AMD
Erstveröffentlichung 14. November 2016; vor 5 Jahren
Stabile Version
5.1.1 / 9. April 2022; vor 3 Monaten[1]
Repository Meta-Repository
Github.com/Radeonopencompute/rocm
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.Amd.com/en/Grafik/Server-Solutions-ROCM

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
Heterogener Speichermodell und gemeinsames virtuelles Speicher

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 No Current
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 Yes ?
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] Yes
  1. ^ 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]

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

  1. ^ "ROCM 5.1.1 Release". 9. April 2022. Abgerufen 1. Mai 2022.
  2. ^ "Frage: Wofür steht ROCM? · Ausgabe #1628 · Radeonopencompute/ROCM". Github.com. Abgerufen 18. Januar 2022.
  3. ^ "Debian-Details zu Paketfirmware-Amd-Graphics in Buster". Pakete.debian.org. Abgerufen 18. Januar 2022.
  4. ^ "AMD @ SC16: Radeon Open Compute -Plattform (ROCM) 1.3 veröffentlicht, Boltzmann wird verwirklicht". anandtech.com. Abgerufen 19. Januar 2022.
  5. ^ "AMD @ SC15: Boltzmann -Initiative angekündigt - C ++ und CUDA -Compiler für AMD GPUs". anandtech.com. Abgerufen 19. Januar 2022.
  6. ^ "Benutzerhandbuch für AMDGPU -Backend - LLVM 13 Dokumentation". Llvm.org. Abgerufen 18. Januar 2022.
  7. ^ a b "Die LLVM -Compiler -Infrastruktur". GitHub. 19. Januar 2022.
  8. ^ "Einführung in die AMD -GPU -Hardware" - via www.youtube.com.
  9. ^ "Grundlagen der Hip -Programmierung". AMD.
  10. ^ "Rocm ™ Learning Center". AMD.
  11. ^ "AMD ROCM / HCC -Programm: Einführung". 26. Dezember 2018.
  12. ^ "RDNA 2 Support? · Ausgabe #1180 · Radeonopencompute/Rocm". GitHub.
  13. ^ "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.
  14. ^ "AMD Radeon RX 6800 XT -Spezifikationen". TechPowerup. Abgerufen 1. Januar 2021.
  15. ^ Larabel, Michael (7. Dezember 2016). "Die besten Merkmale des Linux 4.9 -Kernels". Phoronix. Abgerufen 7. Dezember 2016.
  16. ^ "ROCM -Präsentation". Hpcwire.com. 6. Juli 2020. Abgerufen 18. Januar 2022.
  17. ^ a b "AMD führt seinen tiefgreifenden Beschleunigerinstinkt MI200-Serie GPUs ein". Infoq.com. Abgerufen 18. Januar 2022.
  18. ^ "Installation".
  19. ^ "AMD -Chips in Intel in den Top 500 Supercomputern der Welt, als der GPU -Krieg auftritt.". 16. November 2020.
  20. ^ "El Capitan Supercomputer detailliert: AMD -CPUS & GPUs, um 2 Exaflops von Computer zu fahren".
  21. ^ "Livermores El Capitan Supercomputer, um HPE 'Rabbit' in der Nähe des lokalen Node Local Storage zu debütieren.". 18. Februar 2021.
  22. ^ "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.
  23. ^ "AMD Rocm ≤ Juliagpu". Juliagpu.org.
  24. ^ "ROCM -Installation v4.3 - ROCM 4.5.0 Dokumentation". Rocmdocs.amd.com. Abgerufen 18. Januar 2022.
  25. ^ "Durch die Ausführung von wissenschaftlichen Anwendungen auf AMD -Instinktbeschleunigern wurde es einfach einfacher". Hpcwire.com. 18. Oktober 2021. Abgerufen 25. Januar 2022.
  26. ^ "Rocm für Arch Linux". Github.com. 17. Januar 2022. Abgerufen 18. Januar 2022.
  27. ^ "Gentoo Linux verpackt AMD ROCM, macht Fortschritte bei RISC-V, LTO+PGO Python". Phoronix.com. Abgerufen 18. Januar 2022.
  28. ^ "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.
  29. ^ 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.
  30. ^ Bloor, Cordell. "20211221 Verpackungssitzungsnotizen und kleines Update". [email protected] (Mailingliste). Abgerufen 18. Januar 2022.
  31. ^ "[Debian offizielle Verpackung] Wie wird ROCM LLVM Fork noch benötigt? · Ausgabe #2449 · Rocm-Entwickler-Tools/Hip". GitHub.
  32. ^ "Aomp - v 14.0-1". GitHub. 22. Januar 2022.
  33. ^ "Die LLVM -Compiler -Infrastruktur". GitHub. 10. Januar 2022.
  34. ^ "Khronos OpenCL Registry - The Khronos Group Inc". www.khronos.org.
  35. ^ "Liste der OpenCl -Konformantenprodukte - The Khronos Group Inc". www.khronos.org. 3. Februar 2022.
  36. ^ "Abbildung 3. HIPCC -Kompilierungsprozessabbildung. Der Klang Compiler".
  37. ^ "AMD veröffentlicht Open-Source" gpirfort "als neueste Anstrengung, um den Übergang von CUDA zu fördern.".
  38. ^ 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