stringtranslate.com

ROCM

ROCm [3] es una pila de software de Advanced Micro Devices (AMD) para la programación de unidades de procesamiento gráfico (GPU). ROCm abarca varios dominios: computación de propósito general en unidades de procesamiento gráfico (GPGPU), computación de alto rendimiento (HPC), computación heterogénea . Ofrece varios modelos de programación: HIP ( programación basada en núcleo de GPU ), OpenMP ( programación basada en directivas ) y OpenCL .

ROCm es un software libre, gratuito y de código abierto (excepto los blobs de firmware de GPU [4] ), y se distribuye bajo varias licencias. ROCm inicialmente significaba Radeon Open Compute platform ; sin embargo, debido a que Open Compute es una marca registrada, ROCm ya no es un acrónimo: es simplemente la pila de código abierto de AMD diseñada para computación de GPU.

Fondo

La primera pila de software GPGPU de ATI /AMD fue Close to Metal , que se convirtió en Stream .

ROCm se lanzó alrededor de 2016 [5] con la Iniciativa Boltzmann . [6] 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 la arquitectura de sistemas heterogéneos

HSAIL [7] tenía como objetivo producir una representación intermedia de nivel medio, independiente del hardware, que pudiera compilarse mediante JIT en el hardware final (GPU, FPGA...) utilizando el finalizador adecuado. Este enfoque se abandonó para ROCm: ahora solo crea código de GPU, utilizando LLVM y su backend AMDGPU que se envió en sentido ascendente, [8] aunque todavía hay investigación sobre dicha modularidad mejorada con LLVM MLIR. [9]

Habilidades de programación

ROCm como pila abarca desde el controlador del núcleo hasta las aplicaciones de usuario final. AMD tiene videos introductorios sobre el hardware AMD GCN [10] y la programación ROCm [11] a través de su portal de aprendizaje. [12]

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

Soporte de hardware

ROCm está dirigido principalmente a GPU profesionales discretas, [14] pero el soporte no oficial incluye la familia Vega y las GPU de consumo RDNA 2 .

Las unidades de procesamiento acelerado (APU) están "habilitadas", pero no cuentan con soporte oficial. Es necesario que ROCm funcione allí. [15]

GPU de nivel profesional

Los aceleradores AMD Instinct son ciudadanos de primera clase de ROCm, junto con la serie de GPU Radeon Pro para prosumidores : en su mayoría cuentan con soporte completo.

La única GPU de consumo que cuenta con un soporte relativamente igualitario es, a partir de enero de 2022, la Radeon VII (GCN 5 - Vega).

GPU de consumo

  1. ^ DRM ( Direct Rendering Manager ) es un componente del kernel de Linux .

Ecosistema de software

Recursos de aprendizaje

Terry Deem, gerente de productos AMD ROCm, realizó un recorrido por la pila. [21]

Integración de terceros

Los principales consumidores de la pila son el aprendizaje automático y las aplicaciones de computación de alto rendimiento/GPGPU.

Aprendizaje automático

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

Supercomputación

ROCm está ganando terreno de manera significativa en el top 500. [ 24] ROCm se utiliza con las supercomputadoras Exascale El Capitan [25] [26] y Frontier .

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

Otras interoperaciones 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 . [27]

Otros idiomas

Julia

Julia tiene el paquete AMDGPU.jl, [28] 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 utiliza el compilador de Julia para generar LLVM IR directamente, que luego es consumido por LLVM para generar código nativo del dispositivo. AMDGPU.jl utiliza la implementación HSA de ROCr para cargar código nativo en el dispositivo y ejecutarlo, de manera similar a cómo HIP carga su propio código de dispositivo generado.

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é una futura integración con rocALUTION, rocSOLVER, MIOpen y algunas 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 de ROCm se encuentra actualmente distribuido en varios repositorios públicos de GitHub . Dentro del meta-repositorio público principal, hay un manifiesto XML para cada versión oficial: el uso de git-repo, una herramienta de control de versiones construida sobre Git , es la forma recomendada de sincronizar con la pila localmente. [29]

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

AMD distribuye paquetes adaptados a varias distribuciones de Linux.

Tercero

Existe un creciente ecosistema de terceros que empaqueta ROCm.

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

Hay paquetes spack. [34]

Componentes

Hay un componente de espacio de kernel, ROCk, y el resto (hay aproximadamente cien componentes en la pila) está formado por módulos de espacio de usuario .

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

AMD está desarrollando activamente con la comunidad LLVM, pero la actualización no es instantánea y, a enero de 2022, todavía está retrasada. [36] AMD todavía empaqueta oficialmente varias bifurcaciones de LLVM [37] [38] [9] para partes que aún no están actualizadas: optimizaciones del compilador destinadas a seguir siendo propietarias, soporte de depuración, descarga de OpenMP, etc.

De bajo nivel

ROCk – Controlador del núcleo

ROCm – Bibliotecas de dispositivos

Bibliotecas de soporte implementadas como código de bits LLVM. Estas proporcionan varias utilidades y funciones para operaciones matemáticas, operaciones atómicas, consultas de parámetros de lanzamiento, lanzamiento del kernel en el dispositivo, etc.

ROCt – Procesador

El thunk es responsable de todo el pensamiento y la puesta en cola que entra en la pila.

ROCr – Tiempo de ejecución

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

ROCm – Soporte para compiladores

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

Nivel medio

ROCclr Tiempo de ejecución de lenguaje común

Common Language Runtime es una capa de indirección que adapta las llamadas a ROCr en Linux y a PAL en Windows. Antes podía enrutar entre distintos 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 [40] en un mismo paquete. A partir de enero de 2022, ROCm 4.5.2 incluye OpenCL 2.2 y se queda atrás de la competencia. [41]

HIP – Interfaz heterogénea para la portabilidad

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

HIPC

HIP crea un compilador «HIPCC» que envuelve Clang y compila con el backend AMDGPU abierto LLVM o redirecciona al compilador NVIDIA . [42]

HIPIFICAR

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

GPUFUERTE

Al igual que HIPIFY, GPUFORT es una herramienta que compila código fuente en otras fuentes de lenguajes de tercera generación, lo que permite a los usuarios migrar de CUDA Fortran a HIP Fortran. También se encuentra en el repertorio de proyectos de investigación, incluso más. [43]

De alto nivel

Las bibliotecas de alto nivel de ROCm suelen ser utilizadas directamente por el software de aplicación, como los marcos de aprendizaje automático . La mayoría de las siguientes bibliotecas pertenecen a la categoría General Matrix Multiply (GEMM), en la que la arquitectura de GPU se 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. [44]

rocBLAS / hipBLAS

RocBLAS y hipBLAS son bibliotecas centrales de alto nivel, es la implementación AMD para subprogramas de Álgebra Lineal Básica . Utiliza la biblioteca Tensile de forma privada.

SolverRoc / SolverHip

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

Utilidades

Comparación con la competencia

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

Nvidia CUDA

El CUDA de Nvidia es de código cerrado, mientras que el ROCm de AMD es de código abierto. Hay software de código abierto creado sobre el CUDA de código cerrado, 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 ofrece un frontend centrado en C/C++ y su backend GPU LLVM de ejecución de subprocesos paralelos (PTX) como el compilador Nvidia CUDA (NVCC).

API de Intel One

Al igual que ROCm, oneAPI es de código abierto y todas las bibliotecas correspondientes 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 competirá con CUDA de Nvidia. Las principales empresas detrás de él son Intel, Google, ARM, Qualcomm, Samsung, Imagination y VMware. [45]

Véase también

Referencias

  1. ^ "Lanzamiento de ROCm 6.1.2". GitHub . Consultado el 16 de octubre de 2024 .
  2. ^ "El nuevo SDK de HIP ayuda a democratizar la computación en GPU". 27 de julio de 2023.
  3. ^ "Pregunta: ¿Qué significa ROCm? · Problema n.° 1628 · RadeonOpenCompute/ROCm". Github.com . Consultado el 18 de enero de 2022 .
  4. ^ "Debian -- Detalles del paquete firmware-amd-graphics en buster". Packages.debian.org . Consultado el 18 de enero de 2022 .
  5. ^ "AMD @ SC16: Se lanzó Radeon Open Compute Platform (ROCm) 1.3, Boltzmann llega a buen puerto". anandtech.com . Consultado el 19 de enero de 2022 .
  6. ^ "AMD @ SC15: Se anuncia la iniciativa Boltzmann: compiladores C++ y CUDA para GPU AMD". anandtech.com . Consultado el 19 de enero de 2022 .
  7. ^ "Manual de referencia del programador de HSA: HSAIL Virtual ISA y modelo de programación, compilador y formato de objeto (BRIG)" (PDF) . Fundación HSA. 2 de mayo de 2018. Consultado el 1 de agosto de 2023 .
  8. ^ "Guía del usuario para el backend AMDGPU — Documentación de LLVM 13". Llvm.org . Consultado el 18 de enero de 2022 .
  9. ^ ab "La infraestructura del compilador LLVM". GitHub . 19 de enero de 2022.
  10. ^ "Introducción al hardware de GPU AMD" – vía www.youtube.com.
  11. ^ "Fundamentos de la programación HIP". Archivado desde el original el 7 de febrero de 2023.
  12. ^ "Centro de aprendizaje ROCm™". AMD .
  13. ^ "Programación AMD ROCm/HCC: Introducción". 26 de diciembre de 2018.
  14. ^ "Documentación de AMD - Portal".
  15. ^ "Esto es algo que no se ve todos los días: PyTorch ejecutándose sobre ROCm en una computadora portátil 6800M (6700XT). Se necesitaron muchos ajustes menores de configuración y algunos parches, pero realmente funciona. ¡ENORME!". 10 de diciembre de 2021.
  16. ^ "Guía de inicio de ROCm v5.2.3".
  17. ^ "CÓMO HACERLO: Difusión estable en una GPU AMD". 23 de septiembre de 2022.
  18. ^ "¿Alguna actualización sobre el soporte para 5700 Xt?". GitHub .
  19. ^ "Especificaciones de la AMD Radeon RX 6800 XT". TechPowerUp . Consultado el 1 de enero de 2021 .
  20. ^ Larabel, Michael (7 de diciembre de 2016). "Las mejores características del kernel Linux 4.9". Phoronix . Consultado el 7 de diciembre de 2016 .
  21. ^ "Presentación de ROCm". HPCwire.com . 6 de julio de 2020 . Consultado el 18 de enero de 2022 .
  22. ^ "AMD presenta sus GPU de la serie Instinct MI200 con acelerador de aprendizaje profundo". Infoq.com . Consultado el 18 de enero de 2022 .
  23. ^ "Usando CuPy en la GPU AMD (experimental)".
  24. ^ "AMD le gana terreno a Intel en el ranking de las 500 mejores supercomputadoras del mundo mientras se avecina una guerra por las GPU". 16 de noviembre de 2020.
  25. ^ "Supercomputadora El Capitan detallada: CPU y GPU AMD para impulsar 2 exaflops de cómputo".
  26. ^ "La supercomputadora El Capitan de Livermore estrenará el almacenamiento local de nodo cercano HPE 'Rabbit'". 18 de febrero de 2021.
  27. ^ "Blender 3.0 lleva el soporte para GPU AMD al siguiente nivel. ¡El soporte beta ya está disponible!". Gpuopen.com . 15 de noviembre de 2021 . Consultado el 18 de enero de 2022 .
  28. ^ "AMD ROCm ⋅ JuliaGPU". juliagpu.org .
  29. ^ "Instalación de ROCm v4.3 — Documentación de ROCm 4.5.0". Rocmdocs.amd.com . Consultado el 18 de enero de 2022 .
  30. ^ "Ejecutar aplicaciones científicas en los aceleradores AMD Instinct es ahora más fácil". HPCwire.com . 18 de octubre de 2021 . Consultado el 25 de enero de 2022 .
  31. ^ "ROCm para Arch Linux". Github.com . 17 de enero de 2022 . Consultado el 18 de enero de 2022 .
  32. ^ "Gentoo Linux empaqueta AMD ROCm y avanza en RISC-V, LTO+PGO Python". Phoronix.com . Consultado el 18 de enero de 2022 .
  33. ^ "Los desarrolladores de Fedora y Debian analizan la posibilidad de empaquetar ROCm para facilitar la experiencia de computación con GPU Radeon". Phoronix.com . Consultado el 18 de enero de 2022 .
  34. ^ Gamblin, Todd; LeGendre, Matthew; Collette, Michael R.; Lee, Gregory L.; Moody, Adam; de Supinski, Bronis R.; Futral, Scott (15 de noviembre de 2015). "El administrador de paquetes Spack: poniendo orden en el caos del software HPC" – vía GitHub.
  35. ^ Bloor, Cordell. «20211221 Empaquetado de notas de sesión y pequeña actualización». [email protected] (Lista de correo) . Consultado el 18 de enero de 2022 .
  36. ^ "[Paquete oficial de Debian] ¿Por qué sigue siendo necesaria la bifurcación LLVM de ROCm? · Problema n.° 2449 · ROCm-Developer-Tools/HIP". GitHub .
  37. ^ "Aomp - V 14.0-1". GitHub . 22 de enero de 2022.
  38. ^ "La infraestructura del compilador LLVM". GitHub . 10 de enero de 2022.
  39. ^ "Manual de referencia del programador en tiempo de ejecución de HSA" (PDF) . Fundación HSA. 2 de mayo de 2018 . Consultado el 1 de agosto de 2023 .
  40. ^ "Registro OpenCL de Khronos - The Khronos Group Inc". www.khronos.org .
  41. ^ "Lista de productos compatibles con OpenCL - The Khronos Group Inc". www.khronos.org . 3 de febrero de 2022.
  42. ^ "Figura 3. Ilustración del proceso de compilación de HIPCC. El compilador clang".
  43. ^ "AMD publica "GPUFORT" de código abierto como su más reciente esfuerzo para ayudar a abandonar CUDA".
  44. ^ Maia, Julio; Chalmers, Noel; T. Bauman, Paul; Curtis, Nicholas; Malaya, Nicholas; McDougall, Damon; van Oostrum, Rene; Wolfe, Noah (mayo de 2021). Herramientas de creación de perfiles y soporte de la biblioteca ROCm (PDF) . AMD.
  45. ^ "Exclusiva: Detrás de la trama para romper el control de Nvidia sobre la IA atacando al software". Reuters . Consultado el 5 de abril de 2024 .

Enlaces externos