# ROCm

ROCm és una pila de programari Advanced Micro Devices (AMD) per a la programació d'unitats de processament gràfic (GPU). ROCm abasta diversos dominis: informàtica de propòsit general en unitats de processament gràfic (GPGPU), informàtica d'alt rendiment (HPC), informàtica heterogènia. Ofereix diversos models de programació: HIP (programació basada en el nucli de GPU), OpenMP / Message Passing Interface (MPI) (programació basada en directives) i OpenCL.
ROCm és programari lliure, lliure i de codi obert (excepte els blobs de firmware de la GPU), es distribueix sota diverses llicències. ROCm inicialment significava Radeon Open Compute platform; tanmateix, com que Open Compute és una marca registrada, ROCm ja no és un acrònim, sinó que és simplement la pila de codi obert d'AMD dissenyada per a càlcul GPU.

## Rerefons

La primera pila de programari GPGPU d'ATI /AMD va ser Close to Metal, que es va convertir en Stream.
ROCm es va llançar al voltant de 2016 amb la Iniciativa Boltzmann. La pila ROCm es basa en piles anteriors de GPU d'AMD, algunes eines es remunten a GPUOpen, d'altres a l'Arquitectura de sistema heterogeni (HSA).

### Arquitectura de sistemes heterogenis Llenguatge intermedi

HSAIL tenia com a objectiu produir una representació intermèdia de nivell mitjà, independent del maquinari, que es podria compilar amb JIT al maquinari eventual (GPU, FPGA...) utilitzant el finalitzador adequat. Aquest enfocament es va abandonar per a ROCm: ara només construeix codi GPU, utilitzant LLVM, i el seu backend AMDGPU que es va actualitzar, encara que encara hi ha investigacions sobre aquesta modularitat millorada amb LLVM MLIR.

### Habilitats de programació

ROCm com a pila va des del controlador del nucli fins a les aplicacions d'usuari final. AMD té vídeos introductoris sobre el maquinari AMD GCN, i la programació ROCm a través del seu portal d'aprenentatge.
Una de les millors presentacions tècniques sobre la pila i la programació ROCm/HIP es troba, fins ara, a Reddit.

## Suport de maquinari

ROCm està dirigit principalment a GPU professionals discretes, però el suport no oficial inclou les GPU de consum de la família Vega i RDNA 2.
Les unitats de processador accelerat (APU) estan "habilitades", però no s'admeten oficialment. Hi ha implicat tenir ROCm funcional.

## Referències

* ↑ «Question: What does ROCm stand for? · Issue #1628 · RadeonOpenCompute/ROCm» (en anglès). Github.com. [Consulta: January 18, 2022].
* ↑ «Debian -- Details of package firmware-amd-graphics in buster» (en anglès). Packages.debian.org. [Consulta: January 18, 2022].
* ↑ «AMD @ SC16: Radeon Open Compute Platform (ROCm) 1.3 Released, Boltzmann Comes to Fruition» (en anglès). anandtech.com. [Consulta: January 19, 2022].
* ↑ «AMD @ SC15: Boltzmann Initiative Announced - C++ and CUDA Compilers for AMD GPUs» (en anglès). anandtech.com. [Consulta: January 19, 2022].
* ↑ «HSA Programmer's Reference Manual: HSAIL Virtual ISA and Programming Model, Compiler Writer, and Object Format (BRIG)» (en anglès). HSA Foundation, May 2, 2018. [Consulta: August 1, 2023].
* ↑ «User Guide for AMDGPU Backend — LLVM 13 documentation» (en anglès). Llvm.org. [Consulta: January 18, 2022].
* ↑ «The LLVM Compiler Infrastructure» (en anglès). GitHub, January 19, 2022.
* ↑ «Introduction to AMD GPU Hardware» (en anglès).
* ↑ «Fundamentals of HIP Programming» (en anglès). Arxivat de l'original el 2023-02-07.
* ↑ «ROCm™ Learning Center» (en anglès). AMD.
* ↑ «AMD Documentation - Portal» (en anglès).