Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

ROCm

From Wikipedia, the free encyclopedia
Parallel computing platform: GPGPU libraries and application programming interface

ROCm
DeveloperAMD
Initial releaseNovember 14, 2016; 9 years ago (2016-11-14)
Stable release
7.1.0 / October 30, 2025; 27 days ago (2025-10-30)[1]
RepositoryMeta-repository
github.com/ROCm/ROCm
Written inC,C++,Python,Fortran,Julia
MiddlewareHIP
EngineAMDgpukernel driver,HIPCC, aLLVM-basedcompiler
Operating systemLinux,Windows[2]
PlatformSupported GPUs
PredecessorClose to metal,Stream,HSA
Size<2GiB
TypeGPGPU libraries and APIs
LicenseMIT License
Websitewww.amd.com/en/products/software/rocm.html

ROCm[3] is anAdvanced Micro Devices (AMD) software stack forgraphics processing unit (GPU) programming. ROCm spans several domains, includinggeneral-purpose computing on graphics processing units (GPGPU),high performance computing (HPC), andheterogeneous computing. It offers several programming models:HIP (GPU-kernel-based programming),OpenMP (directive-based programming), andOpenCL.

ROCm is free, libre andopen-source software (except the GPUfirmware blobs[4]), and it is distributed under various licenses. ROCm initially stood forRadeonOpenCompute platform; however, due toOpen Compute being a registered trademark, ROCm is no longer an acronym — it is simply AMD's open-source stack designed for GPU compute.

Background

[edit]

The first GPGPU software stack fromATI/AMD wasClose to Metal, which becameStream.

ROCm was launched around 2016[5] with theBoltzmann Initiative.[6] ROCm stack builds upon previous AMD GPU stacks; some tools trace back toGPUOpen and others to theHeterogeneous System Architecture (HSA).

Heterogeneous System Architecture Intermediate Language

[edit]

HSAIL[7] was aimed at producing a middle-level, hardware-agnostic intermediate representation that could be JIT-compiled to the eventual hardware (GPU, FPGA...) using the appropriate finalizer. This approach was dropped for ROCm: now it builds only GPU code, usingLLVM, and itsAMDGPU backend that was upstreamed,[8] although there is still research on such enhanced modularity with LLVM MLIR.[9]

Programming abilities

[edit]
[icon]
This sectionneeds expansion. You can help byadding to it.(January 2022)

ROCm as a stack ranges from the kernel driver to the end-user applications.AMD has introductory videos about AMD GCN hardware,[10] and ROCm programming[11] via its learning portal.[12]

One of the best technical introductions about the stack and ROCm/HIP programming, remains, to date, to be found on Reddit.[13]

Hardware support

[edit]

ROCm is primarily targeted at discrete professional GPUs,[14] but consumer GPUs and APUs of the same architecture as a supported professional GPU are known to work with ROCm. For example, all professional GPUs of theRDNA 2 architecture are officially supported by ROCm 5.x; users report that Consumer RDNA2 units such as the Radeon 6800M APU and the Radeon 6700XT GPU also work.[15]

See also:List of AMD graphics processing units

Professional-grade GPUs

[edit]
See also:AMD Instinct accelerators andRadeon Pro

Consumer-grade GPUs

[edit]
Name ofGPU seriesSouthern
Islands
Sea
Islands
Volcanic
Islands
Arctic
Islands/Polaris
VegaNavi 1XNavi 2XNavi 3XNavi 4X
ReleasedJan 2012Sep 2013Jun 2015Jun 2016Jun 2017Jul 2019Nov 2020Dec 2022Jan 2025
Marketing NameRadeon HD 7000Radeon Rx 200Radeon Rx 300Radeon RX 400/500Radeon RX Vega/Radeon VII(7 nm)Radeon RX 5000Radeon RX 6000Radeon RX 7000Radeon RX 9000
AMD supportNoCurrent
Instruction setGCN instruction setRDNA instruction set
MicroarchitectureGCN 1st genGCN 2nd genGCN 3rd genGCN 4th genGCN 5th genRDNARDNA 2RDNA 3RDNA 4
TypeUnified shader model
ROCmNoneedenv var in 5.x[16]dropped in 6.x[17]Yes[a]Yes
OpenCL1.2 (onLinux: 1.1 (no Image support) with Mesa 3D)2.0 (Adrenalin driver onWin7+)
(onLinux: 1.1 (no Image support) with Mesa 3D, 2.0 with AMD drivers or AMD ROCm)
2.02.1[20]
Vulkan1.0
(Win 7+ orMesa 17+)
1.2 (Adrenalin 20.1, Linux Mesa 3D 20.0)1.3
Shader model5.15.1
6.3
6.46.56.7
OpenGL4.6 (on Linux: 4.6 (Mesa 3D 20.0))
Direct3D11 (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[b]Experimental[21]Yes
  1. ^Navi 1.x support in rocBLAS was broken until version 6.1. Before version 5.3 an environmental variable could be used to force the use of gfx1030 code on these GPUs for some functionality, but version 5.3 caused gfx1030 code to no longer run on gfx1010 GPUs.[18][19]
  2. ^DRM (Direct Rendering Manager) is a component of theLinux kernel.

Software ecosystem

[edit]

Learning resources

[edit]
[icon]
This sectionneeds expansion. You can help byadding to it.(January 2022)

AMD ROCm product manager Terry Deem gave a tour of the stack.[22]

Third-party integration

[edit]

The main consumers of the stack are machine learning and high-performance computing/GPGPU applications.

Machine learning

[edit]

Variousdeep learning frameworks have a ROCm backend:[23]

Supercomputing

[edit]

ROCm is gaining significant traction in thetop 500.[25]ROCm is used with the Exascale supercomputersEl Capitan[26][27] andFrontier.

Some related software is to be found atAMD Infinity hub.

Other acceleration & graphics interoperation

[edit]

As of version 3.0,Blender can now use HIP compute kernels for itsrenderer cycles.[28]

Other Languages

[edit]
Julia
[edit]

Julia has the AMDGPU.jl package,[29] which integrates with LLVM and selects components of the ROCm stack. Instead of compiling code through HIP, AMDGPU.jl uses Julia's compiler to generate LLVM IR directly, which is later consumed by LLVM to generate native device code. AMDGPU.jl uses ROCr's HSA implementation to upload native code onto the device and execute it, similar to how HIP loads its own generated device code.

AMDGPU.jl also supports integration with ROCm's rocBLAS (for BLAS), rocRAND (for random number generation), and rocFFT (for FFTs). Future integration with rocALUTION, rocSOLVER, MIOpen, and certain other ROCm libraries is planned.

Software distribution

[edit]

Official

[edit]

Installation instructions are provided for Linux and Windows in theofficial AMD ROCm documentation. ROCm software is currently spread across several publicGitHub repositories. Within the main publicmeta-repository, there is anXML manifest for each official release: usinggit-repo, aversion control tool built on top ofGit, is the recommended way to synchronize with the stack locally.[30]

AMD starts distributing containerized applications for ROCm, notably scientific research applications gathered underAMD Infinity Hub.[31]

AMDdistributes itself packages tailored to various Linux distributions.

Further information:AMD Radeon Software

Third-party

[edit]

There is a growingthird-party ecosystem packaging ROCm.

Linux distributions are officially packaging (natively) ROCm, with various degrees of advancement:Arch Linux,[32] Gentoo,[33]Debian,Fedora,[34]GNU Guix, andNixOS.

There areSpack packages.[35]

Components

[edit]
[icon]
This sectionneeds expansion. You can help byadding to it.(January 2022)

There is one kernel-space component, ROCk, and the rest - there is roughly a hundred components in the stack - is made ofuser-space modules.

The unofficial typographic policy is to use: uppercase ROC lowercase following for low-level libraries, i.e. ROCt, and the contrary for user-facing libraries, i.e. rocBLAS.[36]

AMD is active developing with the LLVM community, but upstreaming is not instantaneous, and as of January 2022, is still lagging.[37] AMD still officially packages various LLVM forks[38][39][9] for parts that are not yet upstreamed – compiler optimizations destined to remain proprietary, debug support, OpenMP offloading, etc.

Low-level

[edit]

ROCk – Kernel driver

[edit]
Main article:AMDgpu (Linux kernel module)

ROCm – Device libraries

[edit]

Support libraries implemented as LLVM bitcode. These provide various utilities and functions for math operations, atomics, queries for launch parameters, on-device kernel launch, etc.

ROCt – Thunk

[edit]

Thethunk is responsible for all the thinking and queuing that goes into the stack.

ROCr – Runtime

[edit]

TheROC runtime is a set of APIs/libraries that allows the launch of compute kernels by host applications. It is AMD's implementation of the HSA runtime API.[40] It is different from the ROC Common Language Runtime.

ROCm – CompilerSupport

[edit]

ROCm code object manager is in charge of interacting with LLVMintermediate representation.

Mid-level

[edit]

ROCclr Common Language Runtime

[edit]

Thecommon language runtime is an indirection layer adapting calls to ROCr on Linux and PAL on windows.It used to be able to route between different compilers, like the HSAIL-compiler. It is now being absorbed by the upper indirection layers (HIP and OpenCL).

OpenCL

[edit]
Further information:OpenCL

ROCm ships its installable client driver (ICD) loader and an OpenCL[41]implementation bundled together.As of January 2022, ROCm 4.5.2 ships OpenCL 2.2, and is lagging behind competition.[42]

HIP –Heterogeneous Interface for Portability

[edit]

The AMD implementation for its GPUs is calledHIPAMD. There is also aCPU implementation mostly for demonstration purposes.

HIPCC

[edit]

HIP builds a `HIPCC` compiler that either wrapsClang and compiles with LLVM open AMDGPU backend, or redirects to theNVIDIA compiler.[43]

HIPIFY

[edit]

HIPIFY is a source-to-source compiling tool. It translates CUDA to HIP and reverse, either using a Clang-based tool, or a sed-likePerl script.

GPUFORT

[edit]

Like HIPIFY,GPUFORT is a tool compiling source code into other third-generation-language sources, allowing users to migrate from CUDA Fortran to HIP Fortran. It is also in the repertoire of research projects, even more so.[44]

High-level

[edit]

ROCm high-level libraries are usually consumed directly by application software, such asmachine learning frameworks. Most of the following libraries are in theGeneral Matrix Multiply (GEMM) category, which GPU architecture excels at.

The majority of these user-facing libraries comes in dual-form:hip for the indirection layer that can route to Nvidia hardware, androc for the AMD implementation.[45]

rocBLAS / hipBLAS

[edit]

rocBLAS andhipBLAS are central in high-level libraries, it is the AMD implementation forBasic Linear Algebra Subprograms.It uses the libraryTensile privately.

rocSOLVER / hipSOLVER

[edit]

This pair of libraries constitutes theLAPACK implementation for ROCm and is strongly coupled to rocBLAS.

Utilities

[edit]
  • ROCm developer tools: Debug, tracer, profiler, System Management Interface, Validation suite, Cluster management.
  • GPUOpen tools: GPU analyzer, memory visualizer...
  • External tools: radeontop (TUI overview)

Comparison with competitors

[edit]

ROCm competes with other GPU computing stacks: NvidiaCUDA andIntel OneAPI.

Nvidia CUDA

[edit]
Main article:CUDA

Nvidia's CUDA is closed-source, whereas AMD ROCm is open source. There is open-source software built on top of the closed-source CUDA, for instanceRAPIDS.

CUDA is able to run on consumer GPUs, whereas ROCm support is mostly offered for professional hardware such asAMD Instinct andAMD Radeon Pro.

Nvidia provides a C/C++-centered frontend and itsParallel Thread Execution (PTX) LLVM GPU backend as theNvidia CUDA Compiler (NVCC).

Intel OneAPI

[edit]
Main article:OneAPI (compute acceleration)

All the oneAPI corresponding libraries are published on itsGitHub Page.

Unified Acceleration Foundation (UXL)

[edit]

Unified Acceleration Foundation (UXL) is a new technology consortium that are working on the continuation of the OneAPI initiative, with the goal to create a new open standard accelerator software ecosystem, related open standards and specification projects through Working Groups and Special Interest Groups (SIGs). The goal will compete with Nvidia's CUDA. The main companies behind it are Intel, Google, Arm, Qualcomm, Samsung, Imagination, and VMware.[46]

See also

[edit]
  • AMD Software – a general overview of AMD's drivers, APIs, and development endeavors.
  • GPUOpen – AMD's complementary graphics stack
  • AMD Radeon Software – AMD's software distribution channel

References

[edit]
  1. ^"ROCm 7.1.0 Release".GitHub. RetrievedOctober 30, 2025.
  2. ^"New HIP SDK helps democratize GPU Computing". July 27, 2023.
  3. ^"Question: What does ROCm stand for? · Issue #1628 · RadeonOpenCompute/ROCm".Github.com. RetrievedJanuary 18, 2022.
  4. ^"Debian -- Details of package firmware-amd-graphics in buster".Packages.debian.org. RetrievedJanuary 18, 2022.
  5. ^"AMD @ SC16: Radeon Open Compute Platform (ROCm) 1.3 Released, Boltzmann Comes to Fruition".anandtech.com. Archived fromthe original on November 14, 2016. RetrievedJanuary 19, 2022.
  6. ^"AMD @ SC15: Boltzmann Initiative Announced - C++ and CUDA Compilers for AMD GPUs".anandtech.com. Archived fromthe original on November 17, 2015. RetrievedJanuary 19, 2022.
  7. ^"HSA Programmer's Reference Manual: HSAIL Virtual ISA and Programming Model, Compiler Writer, and Object Format (BRIG)"(PDF). HSA Foundation. May 2, 2018. RetrievedAugust 1, 2023.
  8. ^"User Guide for AMDGPU Backend — LLVM 13 documentation".Llvm.org. RetrievedJanuary 18, 2022.
  9. ^ab"The LLVM Compiler Infrastructure".GitHub. January 19, 2022.
  10. ^"Introduction to AMD GPU Hardware". June 12, 2020 – via www.youtube.com.
  11. ^"Fundamentals of HIP Programming". Archived fromthe original on February 7, 2023.
  12. ^"ROCm™ Learning Center".AMD.
  13. ^"AMD ROCm / HCC programming: Introduction". December 26, 2018.
  14. ^"ROCm Getting Started Guide v5.2.3". Archived fromthe original on October 2, 2022.
  15. ^"Here's something you don't see every day: PyTorch running on top of ROCm on a 6800M (6700XT) laptop! Took a ton of minor config tweaks and a few patches but it actually functionally works. HUGE!". December 10, 2021.
  16. ^"HOW-TO: Stable Diffusion on an AMD GPU". September 23, 2022.ROC_ENABLE_PRE_VEGA
  17. ^"Changelog — ROCm 6.0.0 Documentation".rocm.docs.amd.com.AMD Instinct MI50, Radeon Pro VII, and Radeon VII products (collectively gfx906 GPUs) enters maintenance mode in ROCm 6.0. [...] end of maintenance [EOM] will be aligned with the closest ROCm release [...] Distribution and operating system updates will continue per the ROCm release cadence for gfx906 GPUs until EOM.
  18. ^"PSA: RDNA1 (gfx1010/gfx101*) GPUs should start working soon with official packages, hopefully with ROCm 6.1".www.reddit.com.
  19. ^"Any update on 5700 Xt support?".GitHub.
  20. ^"AMD Radeon RX 6800 XT Specs".TechPowerUp. RetrievedJanuary 1, 2021.
  21. ^Larabel, Michael (December 7, 2016)."The Best Features of the Linux 4.9 Kernel".Phoronix. RetrievedDecember 7, 2016.
  22. ^"ROCm presentation".HPCwire.com. July 6, 2020. RetrievedJanuary 18, 2022.
  23. ^"AMD Introduces Its Deep-Learning Accelerator Instinct MI200 Series GPUs".Infoq.com. RetrievedJanuary 18, 2022.
  24. ^"Using CuPy on AMD GPU (experimental)".
  25. ^"AMD Chips Away at Intel in World's Top 500 Supercomputers as GPU War Looms". November 16, 2020.
  26. ^"El Capitan Supercomputer Detailed: AMD CPUs & GPUs to Drive 2 Exaflops of Compute". Archived fromthe original on May 4, 2021.
  27. ^"Livermore's el Capitan Supercomputer to Debut HPE 'Rabbit' Near Node Local Storage". February 18, 2021.
  28. ^"Blender 3.0 takes support for AMD GPUs to the next level. Beta support available now!".Gpuopen.com. November 15, 2021. RetrievedJanuary 18, 2022.
  29. ^"AMD ROCm ⋅ JuliaGPU".juliagpu.org. Archived fromthe original on June 13, 2020. RetrievedJanuary 23, 2022.
  30. ^"ROCm Installation v4.3 — ROCm 4.5.0 documentation".Rocmdocs.amd.com. RetrievedJanuary 18, 2022.
  31. ^"Running Scientific Applications on AMD Instinct Accelerators Just Got Easier".HPCwire.com. October 18, 2021. RetrievedJanuary 25, 2022.
  32. ^"ROCm for Arch Linux".Github.com. January 17, 2022. RetrievedJanuary 18, 2022.
  33. ^"Gentoo Linux Packages Up AMD ROCm, Makes Progress On RISC-V, LTO+PGO Python".Phoronix.com. RetrievedJanuary 18, 2022.
  34. ^"Fedora & Debian Developers Look At Packaging ROCm For Easier Radeon GPU Computing Experience".Phoronix.com. RetrievedJanuary 18, 2022.
  35. ^Gamblin, Todd; LeGendre, Matthew; Collette, Michael R.; Lee, Gregory L.; Moody, Adam; de Supinski, Bronis R.; Futral, Scott (November 15, 2015)."The Spack Package Manager: Bringing Order to HPC Software Chaos" – via GitHub.
  36. ^Bloor, Cordell."20211221 Packaging session notes and small update".debian-ai@lists.debian.org (Mailing list). RetrievedJanuary 18, 2022.
  37. ^"[Debian official packaging] How is ROCm LLVM fork still needed? · Issue #2449 · ROCm-Developer-Tools/HIP".GitHub.
  38. ^"Aomp - V 14.0-1".GitHub. January 22, 2022.
  39. ^"The LLVM Compiler Infrastructure".GitHub. January 10, 2022.
  40. ^"HSA Runtime Programmer's Reference Manual"(PDF). HSA Foundation. May 2, 2018. RetrievedAugust 1, 2023.
  41. ^"Khronos OpenCL Registry - The Khronos Group Inc".www.khronos.org.
  42. ^"List of OpenCL Conformant Products - The Khronos Group Inc".www.khronos.org. February 3, 2022.
  43. ^"Figure 3. HIPCC compilation process illustration. The clang compiler".
  44. ^"AMD Publishes Open-Source "GPUFORT" as Newest Effort to Help Transition Away from CUDA".
  45. ^Maia, Julio; Chalmers, Noel; T. Bauman, Paul; Curtis, Nicholas; Malaya, Nicholas; McDougall, Damon; van Oostrum, Rene; Wolfe, Noah (May 2021).ROCm Library Support & Profiling Tools(PDF). AMD.
  46. ^Cherney, Max A.; Cherney, Max A. (March 26, 2024)."Exclusive: Behind the plot to break Nvidia's grip on AI by targeting software".Reuters. RetrievedApril 5, 2024.

External links

[edit]
Products
Architecture
Processors
Desktop
Server
Technologies
Graphics
Processor
Memory
Sockets
Sockets without existing articles (e.g. FP4) are omitted from this section.
Desktop
Pin grid array (PGA)
Land grid array (LGA)
Other
Mobile
Pin grid array (PGA)
Ball grid array (BGA)
Server
Pin grid array (PGA)
Land grid array (LGA)
Mixed
Pin grid array (PGA)
Product lists
People
Founders
CEOs
Acquisitions
Joint ventures
Litigation
Related
  • Italics indicates an unreleased product (e.g. socket)
  • Strikethrough indicates a product that was never released.
  • Mixed indicates sockets that are designed for or integrated with one or more platforms.
AMD technology
Software
Platforms
Current
Obsolete
Technology
Instructions
AMD graphics
Fixed pipeline
Vertex and fragment shaders
Unified shaders
TeraScale
Unified shaders &memory
GCN
RDNA
Current technologies and software
Audio/video acceleration
GPU technologies
Software
Current
Obsolete
Other brands and products
Workstations
&supercomputers
Current
Obsolete
Consoles
&handheld PCs
GPU
Desktop
Mobile
Architecture
Components
Memory
Form factor
Performance
Misc
General
Levels
Multithreading
Theory
Elements
Coordination
Programming
Hardware
APIs
Problems
Models
Architecture
Instruction set
architectures
Types
Instruction
sets
Execution
Instruction pipelining
Hazards
Out-of-order
Speculative
Parallelism
Level
Multithreading
Flynn's taxonomy
Processor
performance
Types
By application
Systems
on chip
Hardware
accelerators
Word size
Core count
Components
Functional
units
Logic
Registers
Control unit
Datapath
Circuitry
Power
management
Related
Key concepts
Problems
Hardware
Software
Portals:
Retrieved from "https://en.wikipedia.org/w/index.php?title=ROCm&oldid=1323474120"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp