What is ROCm?#

2024-12-19

9 min read time

Applies to Linux and Windows

ROCm is a software stack, composed primarily of open-source software, that provides the tools for programming AMD Graphics Processing Units (GPUs), from low-level kernels to high-level end-user applications.

AMD's ROCm software stack and enabling technologies.

Specifically, ROCm provides the tools for HIP (Heterogeneous-computing Interface for Portability), OpenCL and OpenMP. These include compilers, libraries for high-level functions, debuggers, profilers and runtimes.

ROCm components#

ROCm consists of the following components. For information on the license associated with each component, see ROCm licensing.

Libraries#

Machine Learning & Computer Vision#

Component

Description

Composable Kernel

Provides a programming model for writing performance critical kernels for machine learning workloads across multiple architectures

MIGraphX

Graph inference engine that accelerates machine learning model inference

MIOpen

An open source deep-learning library

MIVisionX

Set of comprehensive computer vision and machine learning libraries, utilities, and applications

ROCm Performance Primitives (RPP)

Comprehensive high-performance computer vision library for AMD processors with HIP/OpenCL/CPU back-ends

rocAL

An augmentation library designed to decode and process images and videos

rocDecode

High-performance SDK for access to video decoding features on AMD GPUs

rocJPEG

Library for decoding JPG images on AMD GPUs

rocPyDecode

Provides access to rocDecode APIs in both Python and C/C++ languages

Communication#

Component

Description

RCCL

Standalone library that provides multi-GPU and multi-node collective communication primitives

Math#

Component

Description

half

C++ header-only library that provides an IEEE 754 conformant, 16-bit half-precision floating-point type, along with corresponding arithmetic operators, type conversions, and common mathematical functions

hipBLAS

BLAS-marshaling library that supports rocBLAS and cuBLAS backends

hipBLASLt

Provides general matrix-matrix operations with a flexible API and extends functionalities beyond traditional BLAS library

hipFFT

Fast Fourier transforms (FFT)-marshalling library that supports rocFFT or cuFFT backends

hipfort

Fortran interface library for accessing GPU Kernels

hipRAND

Ports CUDA applications that use the cuRAND library into the HIP layer

hipSOLVER

An LAPACK-marshalling library that supports rocSOLVER and cuSOLVER backends

hipSPARSE

SPARSE-marshalling library that supports rocSPARSE and cuSPARSE backends

hipSPARSELt

SPARSE-marshalling library with multiple supported backends

rocALUTION

Sparse linear algebra library for exploring fine-grained parallelism on ROCm runtime and toolchains

rocBLAS

BLAS implementation (in the HIP programming language) on the ROCm runtime and toolchains

rocFFT

Software library for computing fast Fourier transforms (FFTs) written in HIP

rocRAND

Provides functions that generate pseudorandom and quasirandom numbers

rocSOLVER

An implementation of LAPACK routines on ROCm software, implemented in the HIP programming language and optimized for AMD’s latest discrete GPUs

rocSPARSE

Exposes a common interface that provides BLAS for sparse computation implemented on ROCm runtime and toolchains (in the HIP programming language)

rocWMMA

C++ library for accelerating mixed-precision matrix multiply-accumulate (MMA) operations

Tensile

Creates benchmark-driven backend libraries for GEMMs, GEMM-like problems, and general N-dimensional tensor contractions

Primitives#

Component

Description

hipCUB

Thin header-only wrapper library on top of rocPRIM or CUB that allows project porting using the CUB library to the HIP layer

hipTensor

AMD’s C++ library for accelerating tensor primitives based on the composable kernel library

rocPRIM

Header-only library for HIP parallel primitives

rocThrust

Parallel algorithm library

Tools#

System Management#

Component

Description

AMD SMI

C library for Linux that provides a user space interface for applications to monitor and control AMD devices

ROCm Data Center Tool

Simplifies administration and addresses key infrastructure challenges in AMD GPUs in cluster and data-center environments

rocminfo

Reports system information

ROCm SMI

C library for Linux that provides a user space interface for applications to monitor and control GPU applications

ROCm Validation Suite

Detects and troubleshoots common problems affecting AMD GPUs running in a high-performance computing environment

Performance#

Component

Description

ROCm Bandwidth Test

Captures the performance characteristics of buffer copying and kernel read/write operations

ROCm Compute Profiler

Kernel-level profiling for machine learning and high performance computing (HPC) workloads

ROCm Systems Profiler

Comprehensive profiling and tracing of applications running on the CPU or the CPU and GPU

ROCProfiler

Profiling tool for HIP applications

ROCprofiler-SDK

Toolkit for developing analysis tools for profiling and tracing GPU compute applications. This toolkit is in beta and subject to change

ROCTracer

Intercepts runtime API calls and traces asynchronous activity

Development#

Component

Description

HIPIFY

Translates CUDA source code into portable HIP C++

ROCm CMake

Collection of CMake modules for common build and development tasks

ROCdbgapi

ROCm debugger API library

ROCm Debugger (ROCgdb)

Source-level debugger for Linux, based on the GNU Debugger (GDB)

ROCr Debug Agent

Prints the state of all AMD GPU wavefronts that caused a queue error by sending a SIGQUIT signal to the process while the program is running

Compilers#

Component

Description

HIPCC

Compiler driver utility that calls Clang or NVCC and passes the appropriate include and library options for the target compiler and HIP infrastructure

ROCm compilers

ROCm LLVM compiler infrastructure

FLANG

An out-of-tree Fortran compiler targeting LLVM

Runtimes#

Component

Description

AMD Compute Language Runtime (CLR)

Contains source code for AMD’s compute language runtimes: HIP and OpenCL

HIP

AMD’s GPU programming language extension and the GPU runtime

ROCR-Runtime

User-mode API interfaces and libraries necessary for host applications to launch compute kernels on available HSA ROCm kernel agents