Top Qs
Linha do tempo
Chat
Contexto

ROCm

Da Wikipédia, a enciclopédia livre

ROCm
Remove ads

ROCm[3] é uma pilha de software da Advanced Micro Devices (AMD) para programação de unidades de processamento gráfico (GPU). O ROCm abrange vários domínios, incluindo computação de uso geral em unidades de processamento gráfico (GPGPU), computação de alto desempenho (HPC) e computação heterogênea. Ele oferece vários modelos de programação: HIP (programação baseada em GPU-kernel), OpenMP (programação baseada em diretivas) e OpenCL.

Factos rápidos Desenvolvedor, Lançamento inicial ...

O ROCm é um software livre, livre e de código aberto (exceto os blobs de firmware da GPU[4]) e é distribuído sob várias licenças. ROCm inicialmente significava Radeon Open Compute platform ; no entanto, como Open Compute é uma marca registrada, ROCm não é mais uma sigla — é simplesmente a pilha de código aberto da AMD projetada para computação de GPU.

Remove ads

Background

A primeira pilha de software GPGPU da ATI /AMD foi Close to Metal, que se tornou Stream.

O ROCm foi lançado por volta de 2016[5] com a Boltzmann Initiative.[6] A pilha ROCm se baseia em pilhas de GPU AMD anteriores; algumas ferramentas remontam ao GPUOpen e outras à Heterogeneous System Architecture (HSA).

Heterogeneous System Architecture Intermediate Language

HSAIL[7] teve como objetivo produzir uma representação intermediária de nível médio, independente de hardware, que pudesse ser compilada JIT para o hardware eventual (GPU, FPGA...) usando o finalizador apropriado. Esta abordagem foi abandonada para o ROCm: agora ele constrói apenas código GPU, usando LLVM e seu backend AMDGPU que foi upstreamed,[8] embora ainda haja pesquisas sobre essa modularidade aprimorada com LLVM MLIR.[9]

Remove ads

Habilidades de programação

O ROCm como uma pilha abrange desde o driver do kernel até os aplicativos do usuário final. A AMD tem vídeos introdutórios sobre hardware AMD GCN,[10] e programação ROCm[11] por meio de seu portal de aprendizagem.[12]

Uma das melhores introduções técnicas sobre a pilha e a programação ROCm/HIP, continua, até hoje, a ser encontrada no Reddit.[13]

Suporte de hardware

Resumir
Perspectiva

O ROCm é direcionado principalmente para GPUs profissionais discretas,[14] mas o suporte não oficial inclui a família Vega e GPUs de consumidor RDNA 2.

Unidades de Processador Aceleradas (APU) são "habilitadas", mas não são oficialmente suportadas. Ter ROCm funcional está envolvido.[15]

GPUs de nível profissional

Os aceleradores AMD Instinct são cidadãos de primeira classe do ROCm, juntamente com a série de GPUs Radeon Pro para consumidores finais: eles geralmente contam com suporte total.

A única GPU de nível de consumidor que tem suporte relativamente igual é, desde janeiro de 2022, a Radeon VII (GCN 5 - Vega).

GPUs de nível de consumidor

Mais informação Nome da série de GPU, SouthernIslands ...
  1. DRM (Direct Rendering Manager) é um componente do Linux kernel.
Remove ads

Ecossistema de software

Resumir
Perspectiva

Recursos de aprendizagem

O gerente de produto AMD ROCm, Terry Deem, fez um tour pela pilha.[21]

Integração de terceiros

Os principais consumidores da pilha são aplicativos de aprendizado de máquina e computação de alto desempenho/GPGPU.

Aprendizado de máquina

Várias estruturas de aprendizagem profunda têm um backend ROCm:[22]

Supercomputação

O ROCm está ganhando força significativa no top 500.[24] O ROCm é usado com os supercomputadores Exascale El Capitan[25][26] e Frontier.

Alguns softwares relacionados podem ser encontrados no AMD Infinity hub.

Outras interoperações de aceleração e gráficos

A partir da versão 3.0, o Blender agora pode usar kernels de computação HIP para seus ciclos de renderização.[27]

Outros idiomas

Julia

Julia tem o pacote AMDGPU.jl,[28] que se integra com LLVM e seleciona componentes da pilha ROCm. Em vez de compilar o código por meio do HIP, o AMDGPU.jl usa o compilador de Julia para gerar o LLVM IR diretamente, que depois é consumido pelo LLVM para gerar o código do dispositivo nativo. AMDGPU.jl usa a implementação HSA do ROCr para carregar código nativo no dispositivo e executá-lo, semelhante a como o HIP carrega seu próprio código de dispositivo gerado.

O AMDGPU.jl também suporta integração com rocBLAS (para BLAS) da ROCm, rocRAND (para geração de números aleatórios) e rocFFT (para FFTs). Está planejada a integração futura com rocALUTION, rocSOLVER, MIOpen e algumas outras bibliotecas ROCm.

Distribuição de software

Oficial

As instruções de instalação para Linux e Windows são fornecidas na documentação oficial do AMD ROCm. O software ROCm está atualmente distribuído em vários repositórios públicos do GitHub. No principal meta-repositório público, há um manifesto XML para cada lançamento oficial: usar o git-repo, uma ferramenta de controle de versão construída sobre o Git, é a maneira recomendada de sincronizar com a pilha localmente.[29]

A AMD começa a distribuir aplicações em contêineres para o ROCm, principalmente aplicações de pesquisa científica reunidas no AMD Infinity Hub.[30]

A AMD distribui pacotes personalizados para diversas distribuições Linux.

Terceiro

Há um ecossistema de terceiros crescente que empacota o ROCm.

As distribuições Linux estão oficialmente empacotando (nativamente) o ROCm, com vários graus de avanço: Arch Linux,[31] Gentoo,[32] Debian, Fedora,[33] GNU Guix e NixOS.

Existem pacotes Spack.[34]

Remove ads

Componentes

Resumir
Perspectiva

Há um componente do espaço do kernel, o ROCk, e o restante — há aproximadamente cem componentes na pilha — é feito de módulos do espaço do usuário.

A política tipográfica não oficial é usar: ROC maiúsculo, ROC minúsculo a seguir para bibliotecas de baixo nível, ou seja, ROCt, e o contrário para bibliotecas voltadas para o usuário, ou seja, rocBLAS.[35]

A AMD está desenvolvendo ativamente com a comunidade LLVM, mas o upstreaming não é instantâneo e, em janeiro de 2022, ainda está atrasado.[36] A AMD ainda empacota oficialmente vários forks LLVM[37][38][9] para partes que ainda não foram disponibilizadas otimizações do compilador destinadas a permanecer proprietárias, suporte de depuração, descarregamento de OpenMP, etc.

Baixo nível

ROCk Kernel driver

ROCm Device libraries

Bibliotecas de suporte implementadas como bitcode LLVM. Eles fornecem vários utilitários e funções para operações matemáticas, atômicas, consultas para parâmetros de inicialização, inicialização de kernel no dispositivo, etc.

ROCt Thunk

O thunk é responsável por todo o pensamento e enfileiramento que vão para a pilha.

ROCr Runtime

O ROC runtime é um conjunto de APIs/bibliotecas que permite o lançamento de kernels de computação por aplicativos host. É a implementação da API de tempo de execução HSA da AMD.[39] É diferente do ROC Common Language Runtime.

ROCm CompilerSupport

O gerenciador de objetos de código ROCm é responsável por interagir com a representação intermediária do LLVM.

Nível médio

ROCclr Common Language Runtime

O Common Language Runtime é uma camada de indireção que adapta chamadas para ROCr no Linux e PAL no Windows. Ele costumava ser capaz de rotear entre diferentes compiladores, como o compilador HSAIL. Agora ele está sendo absorvido pelas camadas de indireção superiores (HIP e OpenCL).

OpenCL

O ROCm envia seu carregador de driver de cliente instalável (ICD) e uma implementação OpenCL[40] agrupados. Em janeiro de 2022, o ROCm 4.5.2 distribuiu o OpenCL 2.2 e ficou atrás da concorrência.[41]

HIP Heterogeneous Interface for Portability

A implementação da AMD para suas GPUs é chamada de HIPAMD. Há também uma implementação de CPU, principalmente para fins de demonstração.

HIPCC

O HIP cria um compilador `HIPCC` que envolve o Clang e compila com o backend AMDGPU aberto do LLVM ou redireciona para o compilador NVIDIA.[42]

HIPIFY

HIPIFY é uma ferramenta de compilação de fonte para fonte. Ele traduz CUDA para HIP e vice-versa, usando uma ferramenta baseada em Clang ou um script Perl semelhante ao sed.

GPUFORT

Assim como o HIPIFY, o GPUFORT é uma ferramenta que compila código-fonte em outras fontes de linguagem de terceira geração, permitindo que os usuários migrem do CUDA Fortran para o HIP Fortran. Está também no repertório dos projetos de investigação, ainda mais.[43]

De alto nível

As bibliotecas de alto nível do ROCm geralmente são consumidas diretamente pelo software de aplicação, como estruturas de aprendizado de máquina. A maioria das bibliotecas a seguir está na categoria General Matrix Multiply (GEMM), na qual a arquitetura de GPU se destaca.

A maioria dessas bibliotecas voltadas para o usuário vem em formato duplo: hip para a camada de indireção que pode rotear para o hardware Nvidia e roc para a implementação AMD.[44]

rocBLAS / hipBLAS

rocBLAS e hipBLAS são centrais em bibliotecas de alto nível, é a implementação AMD para subprogramas de álgebra linear básica. Ele usa a biblioteca Tensile de forma privada.

rocSOLVER / hipSOLVER

Este par de bibliotecas constitui a implementação LAPACK para ROCm e está fortemente acoplado ao rocBLAS.

Utilitários

  • Ferramentas de desenvolvedor ROCm: depuração, rastreador, criador de perfil, interface de gerenciamento de sistema, conjunto de validação, gerenciamento de cluster.
  • Ferramentas GPUOpen: analisador de GPU, visualizador de memória...
  • Ferramentas externas: radeontop (visão geral do TUI)
Remove ads

Comparação com concorrentes

Resumir
Perspectiva

O ROCm compete com outras pilhas de computação de GPU: Nvidia CUDA e Intel OneAPI.

Nvidia CUDA

O CUDA da Nvidia é de código fechado, enquanto o AMD ROCm é de código aberto. Há software de código aberto criado sobre o CUDA de código fechado, por exemplo, o RAPIDS.

CUDA pode ser executado em GPUs de consumo, enquanto o suporte ROCm é oferecido principalmente para hardware profissional, como AMD Instinct e AMD Radeon Pro.

A Nvidia fornece um frontend centrado em C/C++ e seu backend de GPU LLVM Parallel Thread Execution (PTX) como o Nvidia CUDA Compiler (NVCC).

Intel OneAPI

Assim como o ROCm, o oneAPI é de código aberto, e todas as bibliotecas correspondentes são publicadas em sua página do GitHub.

Fundação de Aceleração Unificada (UXL)

A Unified Acceleration Foundation (UXL) é um novo consórcio de tecnologia que está trabalhando na continuação da iniciativa OneAPI, com o objetivo de criar um novo ecossistema de software acelerador de padrão aberto, padrões abertos relacionados e projetos de especificação por meio de Grupos de Trabalho e Grupos de Interesse Especial (SIGs). O objetivo será competir com o CUDA da Nvidia. As principais empresas por trás disso são Intel, Google, Arm, Qualcomm, Samsung, Imagination e VMware.[45]

Remove ads

Ver também

  • AMD Software – uma visão geral dos drivers, APIs e esforços de desenvolvimento da AMD.
  • GPUOpen – pilha gráfica complementar da AMD
  • AMD Radeon Software – canal de distribuição de software da AMD


Referências

  1. «ROCm 6.4.0 Release». GitHub. Consultado em 30 de abril de 2025
  2. «Debian -- Details of package firmware-amd-graphics in buster». Packages.debian.org. Consultado em 30 de abril de 2025
  3. «User Guide for AMDGPU Backend — LLVM 13 documentation». Llvm.org. Consultado em 30 de abril de 2025
  4. «Introduction to AMD GPU Hardware». 12 de junho de 2020 via www.youtube.com
  5. «Fundamentals of HIP Programming». Arquivado do original em 7 de fevereiro de 2023
  6. «AMD Radeon RX 6800 XT Specs». TechPowerUp. Consultado em 30 de abril de 2025
  7. Larabel, Michael (7 de dezembro de 2016). «The Best Features of the Linux 4.9 Kernel». Phoronix. Consultado em 30 de abril de 2025
  8. «ROCm presentation». HPCwire.com. 6 de julho de 2020. Consultado em 30 de abril de 2025
  9. «Blender 3.0 takes support for AMD GPUs to the next level. Beta support available now!». Gpuopen.com. 15 de novembro de 2021. Consultado em 30 de abril de 2025
  10. «ROCm Installation v4.3 — ROCm 4.5.0 documentation». Rocmdocs.amd.com. Consultado em 30 de abril de 2025
  11. «Running Scientific Applications on AMD Instinct Accelerators Just Got Easier». HPCwire.com. 18 de outubro de 2021. Consultado em 30 de abril de 2025
  12. «ROCm for Arch Linux». Github.com. 17 de janeiro de 2022. Consultado em 30 de abril de 2025
  13. Gamblin, Todd; LeGendre, Matthew; Collette, Michael R.; Lee, Gregory L.; Moody, Adam; de Supinski, Bronis R.; Futral, Scott (15 de novembro de 2015). «The Spack Package Manager: Bringing Order to HPC Software Chaos» via GitHub
  14. «20211221 Packaging session notes and small update». debian-ai@lists.debian.org (Lista de grupo de correio) (em inglês)
  15. «Aomp - V 14.0-1». GitHub. 22 de janeiro de 2022
  16. «HSA Runtime Programmer's Reference Manual» (PDF). HSA Foundation. 2 de maio de 2018. Consultado em 30 de abril de 2025
  17. Maia, Julio; Chalmers, Noel; T. Bauman, Paul; Curtis, Nicholas; Malaya, Nicholas; McDougall, Damon; van Oostrum, Rene; Wolfe, Noah (Maio de 2021). ROCm Library Support & Profiling Tools (PDF). AMD
Remove ads

Ligações externas

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads