Top Qs
Linha do tempo
Chat
Contexto
ROCm
Da Wikipédia, a enciclopédia livre
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.
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
- 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.
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
- «ROCm 6.4.0 Release». GitHub. Consultado em 30 de abril de 2025
- «New HIP SDK helps democratize GPU Computing». 27 de julho de 2023. Cópia arquivada em 27 de julho de 2023
- «Question: What does ROCm stand for? · Issue #1628 · RadeonOpenCompute/ROCm». Github.com. Consultado em 30 de abril de 2025
- «Debian -- Details of package firmware-amd-graphics in buster». Packages.debian.org. Consultado em 30 de abril de 2025
- «AMD @ SC16: Radeon Open Compute Platform (ROCm) 1.3 Released, Boltzmann Comes to Fruition». anandtech.com. Consultado em 30 de abril de 2025
- «AMD @ SC15: Boltzmann Initiative Announced - C++ and CUDA Compilers for AMD GPUs». anandtech.com. Consultado em 30 de abril de 2025
- «HSA Programmer's Reference Manual: HSAIL Virtual ISA and Programming Model, Compiler Writer, and Object Format (BRIG)» (PDF). HSA Foundation. 2 de maio de 2018. Consultado em 30 de abril de 2025
- «User Guide for AMDGPU Backend — LLVM 13 documentation». Llvm.org. Consultado em 30 de abril de 2025
- «The LLVM Compiler Infrastructure». GitHub. 19 de janeiro de 2022
- «Introduction to AMD GPU Hardware». 12 de junho de 2020 – via www.youtube.com
- «Fundamentals of HIP Programming». Arquivado do original em 7 de fevereiro de 2023
- «AMD ROCm / HCC programming: Introduction». 26 de dezembro de 2018
- «AMD Documentation - Portal». Consultado em 30 de abril de 2025. Cópia arquivada em 2 de outubro de 2022
- «HOW-TO: Stable Diffusion on an AMD GPU». 23 de setembro de 2022
- «AMD Radeon RX 6800 XT Specs». TechPowerUp. Consultado em 30 de abril de 2025
- Larabel, Michael (7 de dezembro de 2016). «The Best Features of the Linux 4.9 Kernel». Phoronix. Consultado em 30 de abril de 2025
- «ROCm presentation». HPCwire.com. 6 de julho de 2020. Consultado em 30 de abril de 2025
- «AMD Introduces Its Deep-Learning Accelerator Instinct MI200 Series GPUs». Infoq.com. Consultado em 30 de abril de 2025
- «AMD Chips Away at Intel in World's Top 500 Supercomputers as GPU War Looms». 16 de novembro de 2020
- «Livermore's el Capitan Supercomputer to Debut HPE 'Rabbit' Near Node Local Storage». 18 de fevereiro de 2021
- «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
- «AMD ROCm ⋅ JuliaGPU». juliagpu.org
- «ROCm Installation v4.3 — ROCm 4.5.0 documentation». Rocmdocs.amd.com. Consultado em 30 de abril de 2025
- «Running Scientific Applications on AMD Instinct Accelerators Just Got Easier». HPCwire.com. 18 de outubro de 2021. Consultado em 30 de abril de 2025
- «ROCm for Arch Linux». Github.com. 17 de janeiro de 2022. Consultado em 30 de abril de 2025
- «Gentoo Linux Packages Up AMD ROCm, Makes Progress On RISC-V, LTO+PGO Python». Phoronix.com. Consultado em 30 de abril de 2025
- «Fedora & Debian Developers Look At Packaging ROCm For Easier Radeon GPU Computing Experience». Phoronix.com. Consultado em 30 de abril de 2025
- 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
- «20211221 Packaging session notes and small update». debian-ai@lists.debian.org (Lista de grupo de correio) (em inglês)
- «Aomp - V 14.0-1». GitHub. 22 de janeiro de 2022
- «The LLVM Compiler Infrastructure». GitHub. 10 de janeiro de 2022
- «HSA Runtime Programmer's Reference Manual» (PDF). HSA Foundation. 2 de maio de 2018. Consultado em 30 de abril de 2025
- «Khronos OpenCL Registry - The Khronos Group Inc». www.khronos.org
- «List of OpenCL Conformant Products - The Khronos Group Inc». www.khronos.org. 3 de fevereiro de 2022
- «Figure 3. HIPCC compilation process illustration. The clang compiler». Consultado em 30 de abril de 2025. Cópia arquivada em 24 de janeiro de 2022
- 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
- «Exclusive: Behind the plot to break Nvidia's grip on AI by targeting software». Reuters. Consultado em 30 de abril de 2025
Remove ads
Ligações externas
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads