ROCm es una pila de software desarrollada por Advanced Micro Devices (AMD) para la programación de unidades de procesamiento gráfico (GPU). Abarca varios dominios, incluyendo computación de propósito general en unidades de procesamiento gráfico (GPGPU), computación de alto rendimiento (HPC) y computación heterogénea. ROCm ofrece múltiples modelos de programación, incluyendo HIP (programación basada en núcleos de GPU), OpenMP (programación basada en directivas) y OpenCL. La pila es software libre y de código abierto, excepto por los blobs de firmware de GPU, y se distribuye bajo varias licencias. El nombre inicialmente significaba plataforma Radeon Open Compute, pero debido a que Open Compute es una marca registrada, ya no funciona como acrónimo.
ROCm está diseñado para proporcionar una plataforma unificada para que los desarrolladores aprovechen las GPU de AMD en tareas intensivas en cómputo, desde simulaciones científicas hasta cargas de trabajo de Machine learning. Incluye una gama de componentes, desde controladores de núcleo de bajo nivel hasta bibliotecas y herramientas de alto nivel, permitiendo una ejecución eficiente en diversos hardware. La pila es desarrollada activamente por AMD y la comunidad de código abierto, con soporte tanto para GPU profesionales como de consumo.
Antecedentes
La primera pila de software GPGPU de ATI/AMD fue Close to Metal, que luego se convirtió en Stream. ROCm se lanzó alrededor de 2016 con la Iniciativa Boltzmann, basándose en pilas de GPU anteriores de AMD. Algunas herramientas se remontan a GPUOpen, mientras que otras se originan en la Arquitectura de Sistemas Heterogéneos (HSA). En julio de 2026, AMD anunció que ROCm adoptaría un ciclo de lanzamiento de seis semanas, buscando actualizaciones y mejoras más frecuentes.
Lenguaje Intermedio de Arquitectura de Sistemas Heterogéneos
HSAIL fue diseñado para producir una representación intermedia de nivel medio, independiente del hardware, que pudiera ser compilada en tiempo de ejecución (JIT) al hardware final (GPU, FPGA, etc.) usando el finalizador apropiado. Este enfoque se abandonó para ROCm, que ahora construye solo código de GPU usando LLVM y su backend AMDGPU que fue incorporado al proyecto principal. Sin embargo, la investigación continúa sobre una modularidad mejorada con LLVM MLIR.
Capacidades de Programación
ROCm como pila abarca desde el controlador de núcleo hasta aplicaciones de usuario final. AMD proporciona videos introductorios sobre el hardware AMD GCN y la programación ROCm a través de su portal de aprendizaje. Una de las mejores introducciones técnicas a la pila y a la programación ROCm/HIP sigue siendo, hasta la fecha, la que se encuentra en Reddit.
Soporte de Hardware
ROCm está dirigido principalmente a GPU profesionales discretas, pero se sabe que las GPU de consumo y APU de la misma arquitectura que una GPU profesional compatible funcionan con ROCm. Por ejemplo, todas las GPU profesionales de la arquitectura RDNA 2 son oficialmente compatibles con ROCm 5.x; los usuarios informan que unidades de consumo RDNA2 como la APU Radeon 6800M y la GPU Radeon 6700XT también funcionan.
GPU de Grado Profesional
ROCm soporta oficialmente una gama de GPU profesionales, incluyendo aquellas basadas en las arquitecturas CDNA y RDNA. Estas se usan típicamente en centros de datos y estaciones de trabajo para cargas de trabajo de HPC y Artificial intelligence. El soporte se expande continuamente con cada lanzamiento.
GPU de Grado de Consumo
Aunque no está oficialmente garantizado, muchas GPU de consumo de las mismas familias de arquitectura que los modelos profesionales compatibles funcionan con ROCm. La comunidad ha documentado el uso exitoso de GPU Radeon de consumo para tareas de cómputo, aunque el rendimiento y la estabilidad pueden variar.
Ecosistema de Software
Aprendizaje Automático
Varios marcos de Deep learning tienen un backend ROCm, permitiendo la aceleración de GPU en hardware AMD. Marcos notables incluyen PyTorch, TensorFlow, ONNX, MXNet, CuPy, MIOpen, Caffe, Iree (que usa LLVM MLIR) y llama.cpp. Estas integraciones permiten a los desarrolladores ejecutar entrenamiento e inferencia de Neural network en GPU de AMD, soportando modelos como Large language model y arquitecturas Transformer (architecture).
Supercomputación
ROCm está ganando una tracción significativa en los 500 supercomputadores principales. Se usa con los supercomputadores exaescala El Capitan y Frontier. El software relacionado está disponible en AMD Infinity Hub, que proporciona aplicaciones contenedorizadas para investigación científica.
Otra Aceleración e Interoperación Gráfica
A partir de la versión 3.0, Blender puede usar núcleos de cómputo HIP para su renderizador Cycles, permitiendo renderizado acelerado por GPU en hardware AMD.
Otros Lenguajes
#### Julia
Julia tiene el paquete AMDGPU.jl, que se integra con LLVM y selecciona componentes de la pila ROCm. En lugar de compilar código a través de HIP, AMDGPU.jl usa el compilador de Julia para generar IR de LLVM directamente, que luego es consumido por LLVM para generar código de dispositivo nativo. AMDGPU.jl usa la implementación HSA de ROCr para cargar código nativo en el dispositivo y ejecutarlo, similar a cómo HIP carga su propio código de dispositivo generado. AMDGPU.jl también soporta integración con rocBLAS (para BLAS), rocRAND (para generación de números aleatorios) y rocFFT (para FFTs) de ROCm. Se planea integración futura con rocALUTION, rocSOLVER, MIOpen y otras bibliotecas de ROCm.
Distribución de Software
Oficial
Se proporcionan instrucciones de instalación para Linux y Windows en la documentación oficial de AMD ROCm. El software ROCm está actualmente distribuido en varios repositorios públicos de GitHub. Dentro del meta-repositorio público principal, hay un manifiesto XML para cada lanzamiento oficial; usar git-repo, una herramienta de control de versiones construida sobre Git, es la forma recomendada de sincronizar con la pila localmente. AMD también distribuye aplicaciones contenedorizadas para ROCm, notablemente aplicaciones de investigación científica reunidas bajo AMD Infinity Hub, y paquetes adaptados a varias distribuciones de Linux.
Terceros
Hay un ecosistema de terceros en crecimiento que empaqueta ROCm. Las distribuciones de Linux están empaquetando ROCm nativamente de forma oficial, con varios grados de avance, incluyendo Arch Linux, Gentoo, Debian, Fedora, GNU Guix y NixOS. También hay paquetes Spack para entornos HPC.
Componentes
Hay un componente en el espacio de núcleo, ROCk, y el resto - aproximadamente cien componentes en la pila - son módulos de espacio de usuario. La política tipográfica no oficial es usar ROC en mayúsculas, minúsculas para bibliotecas de bajo nivel (por ejemplo, ROCt), y lo contrario para bibliotecas orientadas al usuario (por ejemplo, rocBLAS). AMD está desarrollando activamente con la comunidad LLVM, pero la incorporación al proyecto principal no es instantánea, y a partir de enero de 2022, todavía está rezagada. AMD todavía empaqueta oficialmente varios forks de LLVM para partes que aún no se han incorporado, incluyendo optimizaciones de compilador destinadas a permanecer propietarias, soporte de depuración, offloading de OpenMP y más.
Bajo Nivel
#### ROCk - Controlador de Núcleo
El controlador de núcleo ROCk es el componente central en el espacio de núcleo que gestiona el hardware de GPU y proporciona la interfaz para las bibliotecas de espacio de usuario.
#### ROCm - Bibliotecas de Dispositivo
Bibliotecas de soporte implementadas como bitcode de LLVM. Estas proporcionan varias utilidades y funciones para operaciones matemáticas, atómicas, consultas de parámetros de lanzamiento, lanzamiento de núcleos en dispositivo y más.
#### ROCt - Thunk
El thunk es responsable de todo el pensamiento y la cola de espera que entra en la pila, manejando interacciones de bajo nivel con el controlador de núcleo.
#### ROCr - Tiempo de Ejecución
El tiempo de ejecución ROC es un conjunto de APIs y bibliotecas que permite el lanzamiento de núcleos de cómputo por aplicaciones anfitrionas. Es la implementación de AMD de la API de tiempo de ejecución HSA. Es diferente del Tiempo de Ejecución de Lenguaje Común ROC.
#### ROCm - Soporte de Compilador
El gestor de objetos de código ROCm está a cargo de interactuar con la representación intermedia de LLVM, gestionando objetos de código y su carga.
Nivel Medio
#### ROCclr Tiempo de Ejecución de Lenguaje Común
El tiempo de ejecución de lenguaje común es una capa de indirección que adapta llamadas a ROCr en Linux y PAL en Windows. Solía poder enrutar entre diferentes compiladores, como el compilador HSAIL. Ahora está siendo absorbido por las capas de indirección superiores (HIP y OpenCL).
#### OpenCL
ROCm envía su cargador de controlador de cliente instalable (ICD) y una implementación de OpenCL empaquetados juntos. A partir de enero de 2022, ROCm 4.5.2 envía OpenCL 2.2, y está rezagado frente a la competencia.
#### HIP - Interfaz Heterogénea para Portabilidad
La implementación de AMD para sus GPU se llama HIPAMD. También hay una implementación de CPU, principalmente con fines de demostración.
#### HIPCC
HIP construye un compilador HIPCC que o bien envuelve Clang y compila con el backend abierto AMDGPU de LLVM, o redirige al compilador de NVIDIA.
#### HIPIFY
HIPIFY es una herramienta de compilación de fuente a fuente. Traduce CUDA a HIP y viceversa, ya sea usando una herramienta basada en Clang, o un script Perl similar a sed.
#### GPUFORT
Como HIPIFY, GPUFORT es una herramienta que compila código fuente a otros objetivos, facilitando la portabilidad de código Fortran a ejecución en GPU.