What is ROCm?

What is ROCm?#

Applies to Linux and Windows

2024-03-04

8 min read time

ROCm is an open-source stack, composed primarily of open-source software, designed for graphics processing unit (GPU) computation. ROCm consists of a collection of drivers, development tools, and APIs that enable GPU programming from low-level kernel to end-user applications.

ROCm is powered by Heterogeneous-computing Interface for Portability (HIP); it supports programming models, such as OpenMP and OpenCL, and includes all necessary open source software compilers, debuggers, and libraries. It’s fully integrated into machine learning (ML) frameworks, such as PyTorch and TensorFlow.

Tip

If you’re using Radeon GPUs, refer to the Radeon-specific ROCm documentation.

ROCm project list#

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

Project

Type

Description

AMD Compute Language Runtimes (CLR)

Runtime

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

AMD SMI

Tool

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

AOMP

Compiler

Scripted build of LLVM and supporting software

Composable Kernel

Library (AI/ML)

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

FLANG

Compiler

An out-of-tree Fortran compiler targeting LLVM

half

Library (math)

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

HIP

Runtime

AMD’s GPU programming language extension and the GPU runtime”

hipBLAS

Library (math)

BLAS-marshaling library that supports rocBLAS and cuBLAS backends

hipBLASLt

Library (math)

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

hipCC

Compiler

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

hipCUB

Library (C++ primitive)

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

hipFFT

Library (math)

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

hipfort

Library (math)

Fortran interface library for accessing GPU Kernels

HIPIFY

Compiler

Translates CUDA source code into portable HIP C++

hipRAND

Library (math)

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

hipSOLVER

Library (math)

An LAPACK-marshalling library that supports rocSOLVER and cuSOLVER backends

hipSPARSE

Library (math)

SPARSE-marshalling library that supports rocSPARSE and cuSPARSE backends

hipSPARSELt

Library (math)

SPARSE-marshalling library with multiple supported backends

hipTensor

Library (C++ primitive)

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

LLVM (amdclang)

Compiler

Toolkit for the construction of highly optimized compilers, optimizers, and run-time environments

MIGraphX

Library (AI/ML)

Graph inference engine that accelerates machine learning model inference

MIOpen

Library (AI/ML)

An open source deep-learning library

MIVisionX

Library (AI/ML)

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

Radeon Compute Profiler (RCP)

Tool

Performance analysis tool that gathers data from the API run-time and GPU for OpenCL and ROCm/HSA applications

RCCL

Library (communication)

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

rocAL

Library (AI/ML)

An augmentation library designed to decode and process images and videos

rocALUTION

Library (math)

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

RocBandwidthTest

Tool

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

rocBLAS

Library (math)

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

rocFFT

Library (math)

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

ROCmCC

Tool

Clang/LLVM-based compiler

ROCm CMake

Tool

Collection of CMake modules for common build and development tasks

ROCm Data Center Tool

Tool

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

ROCm Debug Agent (ROCdebug-agent)

Tool

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

ROCm debugger (ROCgdb)

Tool

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

ROCdbgapi

Tool

ROCm debugger API library

rocminfo

Tool

Reports system information

ROCm Performance Primitives (RPP)

Library (AI/ML)

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

ROCm SMI

Tool

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

ROCm Validation Suite

Tool

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

rocPRIM

Library (C++ primitive)

Header-only library for HIP parallel primitives

ROCProfiler

Tool

Profiling tool for HIP applications

rocRAND

Library (math)

Provides functions that generate pseudorandom and quasirandom numbers

ROCR-Runtime

Runtime

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

rocSOLVER

Library (math)

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

rocSPARSE

Library (math)

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

rocThrust

Library (C++ primitive)

Parallel algorithm library

ROCTracer

Tool

Intercepts runtime API calls and traces asynchronous activity

rocWMMA

Library (math)

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

Tensile

Library (math)

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

TransferBench

Tool

Utility to benchmark simultaneous transfers between user-specified devices (CPUs/GPUs)