What is ROCm?

Contents

What is ROCm?#

Applies to Linux and Windows

2024-01-16

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.

With ROCm, you can customize your GPU software to meet your specific needs. You can develop, collaborate, test, and deploy your applications in a free, open source, integrated, and secure software ecosystem. ROCm is particularly well-suited to GPU-accelerated high-performance computing (HPC), artificial intelligence (AI), scientific computing, and computer aided design (CAD).

ROCm is powered by AMD’s Heterogeneous-computing Interface for Portability (HIP), an open-source software C++ GPU programming environment and its corresponding runtime. HIP allows ROCm developers to create portable applications on different platforms by deploying code on a range of platforms, from dedicated gaming GPUs to exascale HPC clusters.

ROCm supports programming models, such as OpenMP and OpenCL, and includes all necessary open source software compilers, debuggers, and libraries. ROCm is fully integrated into machine learning (ML) frameworks, such as PyTorch and TensorFlow.

ROCm projects#

ROCm consists of the following drivers, development tools, and APIs.

Project

Description

AMD Compute Language Runtimes (CLR)

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

AOMP

A scripted build of LLVM and supporting software

Asynchronous Task and Memory Interface (ATMI)

A runtime framework for efficient task management in heterogeneous CPU-GPU systems

Composable Kernel

A library that aims to provide a programming model for writing performance critical kernels for machine learning workloads across multiple architectures

Flang

An out-of-tree Fortran compiler targeting LLVM

Half-precision floating point library (half)

A 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

AMD’s GPU programming language extension and the GPU runtime

hipBLAS

A BLAS-marshaling library that supports rocBLAS and cuBLAS backends

HIPCC

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

hipCUB

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

hipFFT

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

hipfort

A Fortran interface library for accessing GPU Kernels

HIPIFY

A set of tools for translating CUDA source code into portable HIP C++

hipify-clang

A Clang-based tool for translating CUDA sources into HIP sources

hipify-perl

An autogenerated, perl-based script that translates CUDA source code into portable HIP C++

hipSOLVER

An LAPACK-marshalling library that supports rocSOLVER and cuSOLVER backends

hipSPARSE

A SPARSE-marshalling library that supports rocSPARSE and cuSPARSE backends

hipTensor

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

LLVM

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

MIGraphX

A graph inference engine that accelerates machine learning model inference

MIOpen

An open source deep-learning library

MIOpenGEMM

An OpenCL general matrix multiplication (GEMM) API and kernel generator

MIOpenTensile

Provides host-callable interfaces to Tensile library

MIVisionX

A set of comprehensive computer vision and machine learning libraries, utilities, and applications

Radeon Compute Profiler (RCP)

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

RCCL

A standalone library that provides multi-GPU and multi-node collective communication primitives

rocAL

An augmentation library designed to decode and process images and videos

rocALUTION

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

RocBandwidthTest

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

rocBLAS

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

rocFFT

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

ROCK-Kernel-Driver

An AMDGPU Driver with KFD that is used by ROCm

ROCmCC

A Clang/LLVM-based compiler

ROCm cmake

A collection of CMake modules for common build and development tasks

ROCm Data Center Tool

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

ROCm Debug Agent Library (ROCdebug-agent)

A library that can print 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)

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

ROCdbgapi

The ROCm debugger API library

rocminfo

Reports system information

ROCm SMI

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

ROCm Validation Suite

A tool for detecting and troubleshooting common problems affecting AMD GPUs running in a high-performance computing environment

rocPRIM

A header-only library for HIP parallel primitives

ROCProfiler

A profiling tool for HIP applications

rocRAND

Provides functions that generate pseudorandom and quasirandom numbers

ROCR-Runtime

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

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)

rocThrust

A parallel algorithm library

ROCT-Thunk-Interface

User-mode API interfaces used to interact with the ROCk driver

ROCTracer

Intercepts runtime API calls and traces asynchronous activity

rocWMMA

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

Tensile

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

TransferBench

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