Instalação e Configuração do AMD ROCm no Ubuntu para Desenvolvimento de IA e HPC

Plataforma de Computação AMD ROCm: Um Guia Abrangente para Ubuntu

O AMD ROCm é uma pilha de software de computação de GPU de código aberto, concebida para impulsionar a inteligência artificial de alto desempenho, inferência de aprendizado profundo e cálculos científicos. Este artigo detalha o processo de instalação e configuração do ROCm em sistemas Ubuntu, permitindo que você estabeleça um ambiente robusto para desenvolvimento com GPUs AMD.

Preparativos Essenciais e Verificação do Ambiente

Requisitos Mínimos do Sistema

Antes de prosseguir com a instalação, certifique-se de que seu sistema atende às seguintes especificações:

  • Sistema Operacional: Ubuntu 20.04, 22.04 ou 24.04 LTS
  • Hardware Gráfico: GPUs da série AMD Radeon Instinct (como as da série MI300)
  • Armazenamento: Pelo menos 50 GB de espaço em disco disponível
  • Memória RAM: Recomendado 16 GB ou mais

Ferramentas Indispnesáveis para a Construção

Inicie instalando as ferramentas cruciais necessárias para compilar o ROCm a partir do código-fonte:

# Instalar o 'repo' para gerenciar múltiplos repositórios Git
mkdir -p ~/bin/
curl -s https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod +x ~/bin/repo

# Instalar o Git LFS para manipulação de arquivos grandes
sudo apt update
sudo apt install git-lfs -y

Obtenção e Inicialização do Código-Fonte

Passo 1: Estabelecer o Diretório de Trabalho

Crie e navegue para o diretório que servirá como seu espaço de trabalho para o ROCm:

# Criar e acessar o diretório de trabalho do projeto ROCm
mkdir -p ~/rocm-workspace/
cd ~/rocm-workspace/

Passo 2: Configurar e Sincronizar os Fontes

Defina a versão do ROCm e utilize o repo para baixar o código-fonte de todos os componentes:

# Definir a versão específica do ROCm a ser utilizada
export ROCM_PLATFORM_VERSION="6.3.2"

# Inicializar a configuração do repositório, apontando para o manifest da versão desejada
~/bin/repo init -u https://github.com/ROCm/ROCm.git -b roc-6.3.x -m tools/rocm-build/rocm-${ROCM_PLATFORM_VERSION}.xml

# Sincronizar todos os módulos e dependências do código-fonte. Este processo pode ser demorado.
echo "Iniciando a sincronização dos componentes ROCm. Isso pode levar um tempo considerável..."
~/bin/repo sync

Notas Importantes:

  • O branch roc-6.3.x é utilizado para obter uma versão estável.
  • O arquivo rocm-${ROCM_PLATFORM_VERSION}.xml detalha as versões exatas de cada componente.
  • Mantenha uma conexão de internet estável durante a sincronização.

Estratégias de Configuração do Ambiente de Compilação

Opção A: Compilação via Contêiner Docker (Recomendado)

A abordagem Docker isola o ambiente de compilação, garantindo consistência e minimizando conflitos de dependências com o sistema hospedeiro.

# Baixar a imagem Docker pré-configurada para o processo de compilação
docker pull rocm/rocm-build-ubuntu-20.04:6.3

# Iniciar o contêiner de compilação, montando volumes essenciais e definindo variáveis de ambiente
docker run -ti \
    -e ROCM_BUILD_VERSION=${ROCM_PLATFORM_VERSION} \
    -e CCACHE_DIR=/host_ccache \
    -e WORK_DIR_IN_CONTAINER=/source_code \
    -w /source_code \
    -v "$PWD":/source_code \
    -v "$HOME/.ccache":/host_ccache \
    -u $(id -u):$(id -g) \
    rocm/rocm-build-ubuntu-20.04:6.3 bash

Opção B: Compilação Direta no Sistema Hospedeiro

Para construir o ROCm diretamente no seu Ubuntu, você precisará instalar as dependências necessárias. O projeto ROCm inclui um script para este fim.

# Navegar para o diretório que contém o script de pré-requisitos para Ubuntu 22.04
cd ~/rocm-workspace/ROCm/tools/rocm-build/docker/ubuntu22

# Copiar e executar o script de instalação de dependências
cp install-prerequisites.sh /tmp/rocm_deps_install.sh
cd /tmp
bash rocm_deps_install.sh

Processo de Compilação e Ajustes de Otimização

Seleção da Arquitetura de GPU Alvo

Especifique a arquitetura da GPU que você está utilizando para otimizar a compilação. Para GPUs da série MI300, as arquiteturas comuns são gfx940, gfx941 e gfx942.

# Definir as arquiteturas de GPU para a série MI300
export TARGET_GPU_ARCHS="gfx940;gfx941;gfx942"

# Para acelerar a compilação, é possível selecionar uma única arquitetura
# export TARGET_GPU_ARCHS="gfx942"

Execução do Comando de Compilação

Com o ambiente configurado e a arquitetura alvo definida, inicie a compilação dos componantes do ROCm:

# Voltar para o diretório raiz do workspace
cd ~/rocm-workspace

# Compilar os pacotes centrais de desenvolvimento do ROCm
make -f ROCm/tools/rocm-build/ROCm.mk -j $(nproc) rocm-dev

# Para listar todos os componentes disponíveis para compilação:
# make -f ROCm/tools/rocm-build/ROCm.mk list_components

# Para compilar um componente específico (exemplo: rocBLAS):
# make -f ROCm/tools/rocm-build/ROCm.mk T_rocblas

Verificação da Instalação e Solução de Problemas

Inspeção dos Artefatos de Compilação

Após a conclusão da compilação, verifique os pacotes gerados e os logs para quaisquer anomalias:

# Listar os pacotes Debian (.deb) gerados (exemplo: para Ubuntu 22.04)
ls -lh out/ubuntu-22.04/22.04/deb/

# Consultar os arquivos de log para depuração
ls -lh out/ubuntu-22.04/22.04/logs/

Dicas Comuns para Solução de Problemas

  • Problema: Memória InsuficienteSe a compilação falhar devido a falta de memória, considere aumentar o espaço de troca (swap):

    # Criar e ativar um arquivo de swap de 8GB
    sudo fallocate -l 8G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    # Para persistência após reinício, adicione a linha seguinte ao /etc/fstab:
    # echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    
    
  • Problema: Dependências FaltandoExecute novamente o script de instalação de pré-requisitos para garantir que todas as dependências estejam presentes:

    # Reexecutar o script de instalação de pré-requisitos do ROCm
    bash ~/rocm-workspace/ROCm/tools/rocm-build/docker/ubuntu22/install-prerequisites.sh
    
    
  • Problema: Arquitetura de GPU IncompatívelVerifique o modelo de sua GPU e atualize a variável de ambiente TARGET_GPU_ARCHS se necessário:

    # Verificar o modelo da GPU instalada
    /opt/rocm/bin/rocm-smi # Ou use 'rocminfo' se 'rocm-smi' não estiver disponível
    
    # Atualizar a variável TARGET_GPU_ARCHS com a arquitetura correta
    # export TARGET_GPU_ARCHS="gfxXYZ"
    
    

Sugestões de Otimização de Performance

  1. Compilação Paralela: Aproveite todos os núcleos da CPU usando -j $(nproc).
  2. Otimização de Cache: Habilite o ccache para acelerar recompilações subsequentes.
  3. Foco na Arquitetura: Compile apenas para a arquitetura de GPU específica do seu hardware para reduzir o tempo de compilação.

Com a conclusão destes passos, o AMD ROCm GPU compute platform estará configurado em seu sistema Ubuntu. Você está pronto para explorar o desenvolvimento de aplicações de IA utilizando frameworks como PyTorch/TensorFlow com HIP, ou para trabalhar com bibliotecas HPC do ROCm.

Tags: ROCm amd-gpu Ubuntu hpc ai-development

Publicado em 10-14 01:58