.. meta:: :description: What is ROCm :keywords: ROCm components, ROCm projects, introduction, ROCm, AMD, runtimes, compilers, tools, libraries, API *********************************************************** What is ROCm? *********************************************************** 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. .. image:: data/rocm-software-stack-7_0_0.jpg :width: 800 :alt: AMD's ROCm software stack and enabling technologies. :align: center Specifically, ROCm provides the tools for :doc:`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 :doc:`ROCm licensing <./about/license>`. Libraries ----------------------------------------------- Machine Learning & Computer Vision ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. csv-table:: :header: "Component", "Description" ":doc:`Composable Kernel `", "Provides a programming model for writing performance critical kernels for machine learning workloads across multiple architectures" ":doc:`MIGraphX `", "Graph inference engine that accelerates machine learning model inference" ":doc:`MIOpen `", "An open source deep-learning library" ":doc:`MIVisionX `", "Set of comprehensive computer vision and machine learning libraries, utilities, and applications" ":doc:`ROCm Performance Primitives (RPP) `", "Comprehensive high-performance computer vision library for AMD processors with HIP/OpenCL/CPU back-ends" ":doc:`rocAL `", "An augmentation library designed to decode and process images and videos" ":doc:`rocDecode `", "High-performance SDK for access to video decoding features on AMD GPUs" ":doc:`rocJPEG `", "Library for decoding JPG images on AMD GPUs" ":doc:`rocPyDecode `", "Provides access to rocDecode APIs in both Python and C/C++ languages" .. note:: `rocCV `_ is an efficient GPU-accelerated library for image pre- and post-processing. rocCV is in an early access state. Using it on production workloads is not recommended. Communication ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. csv-table:: :header: "Component", "Description" ":doc:`RCCL `", "Standalone library that provides multi-GPU and multi-node collective communication primitives" ":doc:`rocSHMEM `", "An intra-kernel networking library that provides GPU-centric networking through an OpenSHMEM-like interface" Math ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. csv-table:: :header: "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" ":doc:`hipBLAS `", "BLAS-marshaling library that supports :doc:`rocBLAS ` and cuBLAS backends" ":doc:`hipBLASLt `", "Provides general matrix-matrix operations with a flexible API and extends functionalities beyond traditional BLAS library" ":doc:`hipFFT `", "Fast Fourier transforms (FFT)-marshalling library that supports rocFFT or cuFFT backends" ":doc:`hipfort `", "Fortran interface library for accessing GPU Kernels" ":doc:`hipRAND `", "Ports CUDA applications that use the cuRAND library into the HIP layer" ":doc:`hipSOLVER `", "An LAPACK-marshalling library that supports :doc:`rocSOLVER ` and cuSOLVER backends" ":doc:`hipSPARSE `", "SPARSE-marshalling library that supports :doc:`rocSPARSE ` and cuSPARSE backends" ":doc:`hipSPARSELt `", "SPARSE-marshalling library with multiple supported backends" ":doc:`rocALUTION `", "Sparse linear algebra library for exploring fine-grained parallelism on ROCm runtime and toolchains" ":doc:`rocBLAS `", "BLAS implementation (in the HIP programming language) on the ROCm runtime and toolchains" ":doc:`rocFFT `", "Software library for computing fast Fourier transforms (FFTs) written in HIP" ":doc:`rocRAND `", "Provides functions that generate pseudorandom and quasirandom numbers" ":doc:`rocSOLVER `", "An implementation of LAPACK routines on ROCm software, implemented in the HIP programming language and optimized for AMD's latest discrete GPUs" ":doc:`rocSPARSE `", "Exposes a common interface that provides BLAS for sparse computation implemented on ROCm runtime and toolchains (in the HIP programming language)" ":doc:`rocWMMA `", "C++ library for accelerating mixed-precision matrix multiply-accumulate (MMA) operations" ":doc:`Tensile `", "Creates benchmark-driven backend libraries for GEMMs, GEMM-like problems, and general N-dimensional tensor contractions" Primitives ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. csv-table:: :header: "Component", "Description" ":doc:`hipCUB `", "Thin header-only wrapper library on top of :doc:`rocPRIM ` or CUB that allows project porting using the CUB library to the HIP layer" ":doc:`hipTensor `", "AMD's C++ library for accelerating tensor primitives based on the composable kernel library" ":doc:`rocPRIM `", "Header-only library for HIP parallel primitives" ":doc:`rocThrust `", "Parallel algorithm library" Tools ----------------------------------------------- System Management ^^^^^^^^^^^^^^^^^ .. csv-table:: :header: "Component", "Description" ":doc:`AMD SMI `", "System management interface to control AMD GPU settings, monitor performance, and retrieve device and process information" ":doc:`ROCm Data Center Tool `", "Simplifies administration and addresses key infrastructure challenges in AMD GPUs in cluster and data-center environments" ":doc:`rocminfo `", "Reports system information" ":doc:`ROCm SMI `", "C library for Linux that provides a user space interface for applications to monitor and control GPU applications" ":doc:`ROCm Validation Suite `", "Detects and troubleshoots common problems affecting AMD GPUs running in a high-performance computing environment" Performance ^^^^^^^^^^^ .. csv-table:: :header: "Component", "Description" ":doc:`ROCm Bandwidth Test `", "Captures the performance characteristics of buffer copying and kernel read/write operations" ":doc:`ROCm Compute Profiler `", "Kernel-level profiling for machine learning and high performance computing (HPC) workloads" ":doc:`ROCm Systems Profiler `", "Comprehensive profiling and tracing of applications running on the CPU or the CPU and GPU" ":doc:`ROCProfiler `", "Profiling tool for HIP applications" ":doc:`ROCprofiler-SDK `", "Toolkit for developing analysis tools for profiling and tracing GPU compute applications. This toolkit is in beta and subject to change" ":doc:`ROCTracer `", "Intercepts runtime API calls and traces asynchronous activity" .. note:: - `ROCprof Compute Viewer `_ is a tool for visualizing and analyzing GPU thread trace data collected using :doc:`rocprofv3 `. Note that `ROCprof Compute Viewer `_ is in an early access state. Running production workloads is not recommended. - ROCm Optiq (Beta) provides deep insights into system-level performance for applications running on the ROCm stack. It serves as the GUI to visualize traces collected by ROCm profiling tools, specifically `ROCm Systems Profiler `_. Development ^^^^^^^^^^^ .. csv-table:: :header: "Component", "Description" ":doc:`HIPIFY `", "Translates CUDA source code into portable HIP C++" ":doc:`ROCm CMake `", "Collection of CMake modules for common build and development tasks" ":doc:`ROCdbgapi `", "ROCm debugger API library" ":doc:`ROCm Debugger (ROCgdb) `", "Source-level debugger for Linux, based on the GNU Debugger (GDB)" ":doc:`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 ----------------------------------------------- .. csv-table:: :header: "Component", "Description" ":doc:`HIPCC `", "Compiler driver utility that calls Clang or NVCC and passes the appropriate include and library options for the target compiler and HIP infrastructure" ":doc:`ROCm compilers `", "ROCm LLVM compiler infrastructure" "`FLANG `_", "An out-of-tree Fortran compiler targeting LLVM" Runtimes ----------------------------------------------- .. csv-table:: :header: "Component", "Description" ":doc:`AMD Compute Language Runtime (CLR) `", "Contains source code for AMD's compute language runtimes: HIP and OpenCL" ":doc:`HIP `", "AMD's GPU programming language extension and the GPU runtime" ":doc:`ROCR-Runtime `", "User-mode API interfaces and libraries necessary for host applications to launch compute kernels on available HSA ROCm kernel agents"