Articulo de referencia

ROCm

{{cite web |url=https://community.amd.com/t5/rocm/available-now-new-hip-sdk-helps-democratize-gpu-computing/ba-p/621029/jump-to/first-unread-message |title=New HIP SDK helps dem...

ROCm es un conjunto de software de Advanced Micro Devices (AMD) para la programación de unidades de procesamiento gráfico (GPU). ROCm 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 . Ofrece varios modelos de programación: HIP ( programación basada en el kernel de la GPU ), OpenMP ( programación basada en directivas ) y OpenCL .

ROCm es software libre, de código abierto y gratuito (excepto los blobs de firmware de la GPU [ 3 ] ), y se distribuye bajo diversas licencias. Inicialmente, el nombre significaba plataforma Radeon Open Compute; [ 4 ] sin embargo, debido a que Open Compute es una marca registrada, el nombre ya no funciona como acrónimo. [ 5 ]

Fondo

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 [ 6 ] con la Iniciativa Boltzmann . [ 7 ] La pila ROCm se basa en pilas de GPU AMD anteriores; algunas herramientas se remontan a GPUOpen y otras a la Arquitectura de Sistema Heterogéneo (HSA).

Lenguaje intermedio de arquitectura de sistemas heterogéneos

HSAIL [ 8 ] tenía como objetivo producir una representación intermedia de nivel medio, independiente del hardware, que pudiera compilarse JIT al hardware final (GPU, FPGA...) utilizando el finalizador apropiado. Este enfoque se abandonó para ROCm: ahora solo compila código para GPU, utilizando LLVM y su backend AMDGPU que se incorporó al proyecto principal, [ 9 ] aunque todavía se investiga sobre esta modularidad mejorada con LLVM MLIR. [ 10 ]

Habilidades de programación

ROCm, como pila, abarca desde el controlador del kernel hasta las aplicaciones de usuario final. AMD ofrece vídeos introductorios sobre el hardware AMD GCN [ 11 ] y la programación de ROCm [ 12 ] a través de su portal de aprendizaje [ 13 ] .

Una de las mejores introducciones técnicas sobre la pila y la programación ROCm/HIP se sigue encontrando, hasta la fecha, en Reddit. [ 14 ]

Soporte de hardware

ROCm está dirigido principalmente a GPU profesionales discretas, [ 15 ] pero se sabe que las GPU y APU de consumo con la misma arquitectura que una GPU profesional compatible funcionan con ROCm. Por ejemplo, todas las GPU profesionales con arquitectura RDNA 2 son compatibles oficialmente con ROCm 5.x; los usuarios informan que las unidades RDNA2 de consumo, como la APU Radeon 6800M y la GPU Radeon 6700XT, también funcionan. [ 16 ]

GPU de nivel profesional

GPUs de gama de consumo

  1. La compatibilidad con Navi 1.x en rocBLAS estuvo rota hasta la versión 6.1. Antes de la versión 5.3, se podía usar una variable de entorno para forzar el uso del código gfx1030 en estas GPU para algunas funcionalidades, pero la versión 5.3 provocó que el código gfx1030 dejara de ejecutarse en las GPU gfx1010. [ 19 ] [ 20 ]
  2. DRM ( Direct Rendering Manager ) es un componente del kernel de Linux .

Ecosistema de software

Aprendizaje automático

Varios marcos de aprendizaje profundo tienen un backend ROCm: [ 23 ]

Supercomputación

ROCm está ganando una tracción significativa en el top 500. [ 25 ] ROCm se utiliza con las supercomputadoras de exaescala El Capitan [ 26 ] [ 27 ] y Frontier .

Algunos programas relacionados se pueden encontrar en el centro AMD Infinity .

Otras operaciones de aceleración y gráficos

A partir de la versión 3.0, Blender puede utilizar núcleos de cómputo HIP para sus ciclos de renderizado . [ 28 ]

Otros idiomas

Julia

Julia cuenta con el paquete AMDGPU.jl [ 29 ] , que se integra con LLVM y selecciona componentes de la pila ROCm. En lugar de compilar el código mediante HIP, AMDGPU.jl utiliza el compilador de Julia para generar directamente LLVM IR, que posteriormente es utilizado por LLVM para generar código nativo para el dispositivo. AMDGPU.jl emplea la implementación HSA de ROCr para cargar el código nativo en el dispositivo y ejecutarlo, de forma similar a como HIP carga su propio código generado para el dispositivo.

AMDGPU.jl también admite la integración con rocBLAS (para BLAS), rocRAND (para generación de números aleatorios) y rocFFT (para FFT) de ROCm. Se prevé la integración futura con rocALUTION, rocSOLVER, MIOpen y otras bibliotecas de ROCm.

Distribución de software

Oficial

Las instrucciones de instalación para Linux y Windows se encuentran en la documentación oficial de AMD ROCm . El software ROCm se distribuye actualmente en varios repositorios públicos de GitHub . Dentro del principal meta-repositorio público , existe un manifiesto XML para cada versión oficial: se recomienda utilizar git-repo , una herramienta de control de versiones basada en Git , para sincronizar localmente con la pila. [ 30 ]

AMD comienza a distribuir aplicaciones en contenedores para ROCm, en particular aplicaciones de investigación científica agrupadas en AMD Infinity Hub . [ 31 ]

AMD distribuye paquetes adaptados a diversas distribuciones de Linux.

Tercero

Existe un ecosistema creciente de terceros que empaquetan ROCm .

Las distribuciones de Linux están empaquetando oficialmente (de forma nativa) ROCm, con varios grados de avance: Arch Linux , [ 32 ] Gentoo, [ 33 ] Debian , Fedora , [ 34 ] GNU Guix y NixOS .

Existen paquetes Spack . [ 35 ]

Componentes

Existe un componente en el espacio del kernel, ROCk, y el resto —aproximadamente un centenar de componentes en la pila— está formado por módulos en el espacio de usuario .  

La política tipográfica no oficial es usar: ROC en mayúsculas, seguido de minúsculas para bibliotecas de bajo nivel, es decir, ROCt, y lo contrario para bibliotecas orientadas al usuario, es decir, rocBLAS. [ 36 ]

AMD está desarrollando activamente con la comunidad LLVM, pero la incorporación al proyecto principal no es instantánea y, a enero de 2022, todavía está retrasada. [ 37 ] AMD todavía empaqueta oficialmente varias bifurcaciones de LLVM [ 38 ] [ 39 ] [ 10 ] para partes que aún no se han incorporado al proyecto principal : optimizaciones del compilador destinadas a permanecer propietarias, soporte de depuración, descarga de OpenMP, etc. 

Nivel bajo

ROCK – Controlador del núcleo

ROCm – Bibliotecas de dispositivos

Las bibliotecas de soporte se implementan como bitcode de LLVM. Estas proporcionan diversas utilidades y funciones para operaciones matemáticas, operaciones atómicas, consultas de parámetros de lanzamiento, lanzamiento del kernel en el dispositivo, etc.

ROCt – Pensar

El thunk es responsable de todo el procesamiento y la gestión de colas que se realizan en la pila.

ROCr – Tiempo de ejecución

El entorno de ejecución ROC es un conjunto de API/bibliotecas que permite el lanzamiento de núcleos de cómputo por parte de las aplicaciones host. Es la implementación de AMD de la API de entorno de ejecución HSA. [ 40 ] Es diferente del entorno de ejecución de lenguaje común ROC.

ROCm – CompilerSupport

El gestor de objetos de código ROCm se encarga de interactuar con la representación intermedia de LLVM .

Nivel medio

Entorno de ejecución de lenguaje común ROCclr

El Common Language Runtime es una capa de indirección que adapta las llamadas a ROCr en Linux y PAL en Windows. Antes podía gestionar el enrutamiento entre diferentes compiladores, como el compilador HSAIL. Ahora está siendo absorbido por las capas de indirección superiores (HIP y OpenCL).

OpenCL

ROCm incluye su cargador de controlador de cliente instalable (ICD) y una implementación de OpenCL [ 41 ] empaquetada conjuntamente . A enero de 2022, ROCm 4.5.2 incluye OpenCL 2.2 y se encuentra rezagado con respecto a la competencia. [ 42 ]

HIP Interfaz heterogénea para la portabilidad

La implementación de AMD para sus GPU se llama HIPAMD . También existe una implementación para CPU, principalmente con fines demostrativos.

HIPCC

HIP crea un compilador HIPCC que envuelve Clang y compila con el backend AMDGPU abierto de LLVM, o redirige al compilador NVIDIA . [ 43 ]

Hipify

HIPIFY es una herramienta de compilación de código fuente a código fuente. Traduce CUDA a HIP y viceversa, ya sea utilizando una herramienta basada en Clang o un script Perl similar a sed .

GPUFORT

Al igual que HIPIFY, GPUFORT es una herramienta que compila código fuente a otros lenguajes de tercera generación, lo que permite a los usuarios migrar de CUDA Fortran a HIP Fortran. También forma parte del repertorio de proyectos de investigación, incluso más. [ 44 ]

De alto nivel

Las bibliotecas de alto nivel de ROCm suelen ser utilizadas directamente por software de aplicación, como los marcos de aprendizaje automático . La mayoría de las siguientes bibliotecas pertenecen a la categoría de Multiplicación General de Matrices (GEMM), en la que la arquitectura GPU destaca.

La mayoría de estas bibliotecas orientadas al usuario vienen en formato dual: hip para la capa de indirección que puede enrutar al hardware de Nvidia, y roc para la implementación de AMD. [ 45 ]

rocBLAS / hipBLAS

rocBLAS e hipBLAS son bibliotecas de alto nivel fundamentales; se trata de la implementación de AMD para los subprogramas básicos de álgebra lineal . Utiliza la biblioteca Tensile de forma privada.

rocSOLVER / hipSOLVER

Este par de bibliotecas constituye la implementación de LAPACK para ROCm y está estrechamente vinculado a rocBLAS.

Servicios públicos

  • Herramientas para desarrolladores de ROCm : Depuración, rastreo, análisis de rendimiento, interfaz de administración del sistema, conjunto de validación, administración de clústeres.
  • Herramientas GPUOpen : analizador de GPU, visualizador de memoria...
  • Herramientas externas: radeontop ( descripción general de la interfaz de usuario de texto )

Comparación con la competencia

ROCm compite con otras plataformas de computación GPU: Nvidia CUDA e Intel OneAPI .

Nvidia CUDA

CUDA de Nvidia es de código cerrado, mientras que AMD ROCm es de código abierto. Existe software de código abierto desarrollado sobre CUDA, como por ejemplo RAPIDS .

CUDA puede ejecutarse en GPU de consumo, mientras que la compatibilidad con ROCm se ofrece principalmente para hardware profesional como AMD Instinct y AMD Radeon Pro .

Nvidia proporciona una interfaz centrada en C/C++ y su backend de GPU LLVM de ejecución de subprocesos paralelos (PTX) como el compilador Nvidia CUDA (NVCC).

Intel OneAPI

Todas las bibliotecas correspondientes de oneAPI están publicadas en su página de GitHub .

Fundación de Aceleración Unificada (UXL)

Unified Acceleration Foundation (UXL) es un nuevo consorcio tecnológico que trabaja en la continuación de la iniciativa OneAPI, con el objetivo de crear un nuevo ecosistema de software acelerador de estándares abiertos, estándares abiertos relacionados y proyectos de especificación a través de Grupos de Trabajo y Grupos de Interés Especial (SIG). El objetivo es competir con CUDA de Nvidia. Las principales empresas que lo respaldan son Intel, Google, Arm, Qualcomm, Samsung, Imagination y VMware. [ 46 ]

Véase también

  • Software de AMD : una descripción general de los controladores, las API y los proyectos de desarrollo de AMD.
  • GPUOpen : la pila de gráficos complementaria de AMD
  • AMD Radeon Software : el canal de distribución de software de AMD.

Referencias

  1. "Lanzamiento de ROCm 7.2.4" . 29 de mayo de 2026. Consultado el 29 de mayo de 2026 .
  2. "El nuevo SDK de HIP ayuda a democratizar la computación con GPU" . 27 de julio de 2023.
  3. "Detalles del paquete firmware-amd-graphics en buster" . Debian . Consultado el 18 de enero de 2022 .
  4. Crider, Michael (29 de agosto de 2025). "Mira: AMD habla sobre ROCm y cómo supone un cambio radical para los PC con Radeon" . PC World . Consultado el 30 de enero de 2026 .
  5. "Pregunta: ¿Qué significan las siglas ROCm? · Problema n.° 1628" . RadeonOpenCompute/ROCm . Github.com . Consultado el 18 de enero de 2022 .
  6. "AMD @ SC16: Se lanza Radeon Open Compute Platform (ROCm) 1.3, Boltzmann llega a buen término" . anandtech.com . Archivado del original el 14 de noviembre de 2016. Consultado el 19 de enero de 2022 .
  7. "AMD @ SC15: Anunciada la iniciativa Boltzmann: compiladores C++ y CUDA para GPU AMD" . anandtech.com . Archivado del original el 17 de noviembre de 2015. Consultado el 19 de enero de 2022 .
  8. "Manual de referencia del programador de HSA: HSAIL Virtual ISA y modelo de programación, compilador, escritor y formato de objeto (BRIG)" (PDF) . Fundación HSA. 2 de mayo de 2018. Consultado el 1 de agosto de 2023 .
  9. "Guía del usuario para el backend AMDGPU — Documentación de LLVM 13" . Llvm.org . Consultado el 18 de enero de 2022 .
  10. 1 2 "La infraestructura del compilador LLVM" . GitHub . 19 de enero de 2022.
  11. "Introducción al hardware de GPU de AMD" . 12 de junio de 2020 vía www.youtube.com.
  12. "Fundamentos de la programación HIP" . Archivado del original el 7 de febrero de 2023.
  13. "Centro de aprendizaje ROCm™" . AMD .
  14. "Programación AMD ROCm / HCC: Introducción" . 26 de diciembre de 2018.
  15. "Guía de inicio rápido de ROCm v5.2.3" . Archivado del original el 2 de octubre de 2022.
  16. "Esto no se ve todos los días: ¡PyTorch funcionando sobre ROCm en una laptop 6800M (6700XT)! Requirió un montón de ajustes de configuración menores y algunos parches, pero funciona perfectamente. ¡Genial!" 10 de diciembre de 2021.
  17. "CÓMO: Difusión estable en una GPU AMD" . 23 de septiembre de 2022. ROC_ENABLE_PRE_VEGA
  18. "Registro de cambios — Documentación de ROCm 6.0.0" . rocm.docs.amd.com . Los productos AMD Instinct MI50, Radeon Pro VII y Radeon VII (GPU gfx906 en conjunto) entran en modo de mantenimiento en ROCm 6.0. [...] el fin del mantenimiento [EOM] se alineará con la versión de ROCm más próxima [...] Las actualizaciones de distribución y del sistema operativo continuarán según la cadencia de lanzamiento de ROCm para las GPU gfx906 hasta EOM.
  19. "PSA: Las GPU RDNA1 (gfx1010/gfx101*) deberían empezar a funcionar pronto con paquetes oficiales, con suerte con ROCm 6.1" . www.reddit.com .
  20. "¿Alguna novedad sobre la compatibilidad con 5700 Xt?" . GitHub .
  21. "Especificaciones de la AMD Radeon RX 6800 XT" . TechPowerUp . Consultado el 1 de enero de 2021 .
  22. Larabel, Michael (7 de diciembre de 2016). "Las mejores características del kernel de Linux 4.9" . Phoronix . Consultado el 7 de diciembre de 2016 .
  23. "AMD presenta sus GPU Instinct MI200 Series, aceleradoras de aprendizaje profundo" . Infoq.com . Consultado el 18 de enero de 2022 .
  24. "Uso de CuPy en GPU AMD (experimental)" .
  25. "AMD recorta distancias con Intel en el ranking de las 500 supercomputadoras más potentes del mundo mientras se avecina una guerra de GPU" . 16 de noviembre de 2020.
  26. "Detalles sobre la supercomputadora El Capitan: CPU y GPU de AMD para lograr 2 exaflops de capacidad de cálculo" .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  27. "La supercomputadora El Capitan de Livermore estrenará HPE 'Rabbit' cerca del almacenamiento local de nodos" . 18 de febrero de 2021.
  28. "Blender 3.0 lleva la compatibilidad con las GPU de AMD al siguiente nivel. ¡Soporte beta disponible ahora!" . AMD GPUOpen . 15 de noviembre de 2021 . Consultado el 18 de enero de 2022 .
  29. "AMD ROCm ⋅ JuliaGPU" . juliagpu.org . Archivado del original el 13 de junio de 2020. Consultado el 23 de enero de 2022 .
  30. "Instalación de ROCm v4.3 — Documentación de ROCm 4.5.0" . Rocmdocs.amd.com . Consultado el 18 de enero de 2022 .
  31. "Ejecutar aplicaciones científicas en aceleradores AMD Instinct ahora es más fácil" . HPCwire.com . 18 de octubre de 2021. Consultado el 25 de enero de 2022 .
  32. "ROCm para Arch Linux" . Github.com . 17 de enero de 2022. Consultado el 18 de enero de 2022 .
  33. "Gentoo Linux incorpora AMD ROCm y avanza en RISC-V y Python LTO+PGO" . Phoronix.com . Consultado el 18 de enero de 2022 .
  34. "Desarrolladores de Fedora y Debian estudian la posibilidad de empaquetar ROCm para facilitar la experiencia de computación con GPU Radeon" . Phoronix.com . Consultado el 18 de enero de 2022 .
  35. Gamblin, Todd; LeGendre, Matthew; Collette, Michael R.; Lee, Gregory L.; Moody, Adam; de Supinski, Bronis R.; Futral, Scott (15 de noviembre de 2015). "El gestor de paquetes Spack: poniendo orden en el caos del software HPC" vía GitHub.
  36. Bloor, Cordell. "Notas de la sesión de empaquetado del 21 de enero de 2021 y pequeña actualización" . debian-ai@lists.debian.org (Lista de correo) . Consultado el 18 de enero de 2022 .
  37. " [ Empaquetado oficial de Debian ] ¿Cómo es que todavía se necesita la bifurcación de ROCm LLVM? · Problema #2449" . ROCm-Developer-Tools/HIP . GitHub .
  38. "Aomp - V 14.0-1" . GitHub . 22 de enero de 2022.
  39. "La infraestructura del compilador LLVM" . GitHub . 10 de enero de 2022.
  40. "Manual de referencia del programador de HSA Runtime" (PDF) . Fundación HSA. 2 de mayo de 2018. Consultado el 1 de agosto de 2023 .
  41. "Registro Khronos OpenCL - The Khronos Group Inc" . www.khronos.org .
  42. "Lista de productos compatibles con OpenCL" . The Khronos Group Inc. 3 de febrero de 2022.
  43. "Figura 3. Ilustración del proceso de compilación de HIPCC. El compilador clang" .
  44. "AMD publica "GPUFORT" de código abierto como su más reciente iniciativa para ayudar en la transición hacia una economía sin CUDA" .
  45. Maia, Julio; Chalmers, Noel; T. Bauman, Paul; Curtis, Nicholas; Malaya, Nicholas; McDougall, Damon; van Oostrum, Rene; Wolfe, Noah (mayo de 2021). Soporte de la biblioteca ROCm y herramientas de perfilado (PDF) . AMD.
  46. Cherney, Max A.; Cherney, Max A. (26 de marzo de 2024). "Exclusiva: Detrás del complot para romper el dominio de Nvidia sobre la IA mediante ataques al software" . Reuters . Consultado el 5 de abril de 2024 .
  • "Documentación oficial de ROCm" . AMD . 10 de febrero de 2022.
  • Centro de aprendizaje ROCm . AMD . 25 de enero de 2022.
  • "Documentación oficial de ROCm en el superproyecto de GitHub" . AMD . 25 de enero de 2022.
  • "Documentación oficial de ROCm - pre 5.0" . AMD . 19 de enero de 2022.
  • "Aplicaciones aceleradas por GPU con los aceleradores AMD Instinct y el software AMD ROCm" (PDF) . AMD . 25 de enero de 2022.
  • "AMD Infinity Hub" . AMD . 25 de enero de 2022.Contenedores Docker para aplicaciones científicas.