Перейти к содержанию

description: Документация и частые вопросы — Установка драйверов AMD ROCm на Ubuntu Linux — Самая полезная информация в информационном разделе сайта компании HOSTKEY tags: search:exlude


Установка драйверов AMD ROCm на Ubuntu Linux

Данная инструкция описывает процесс установки стека ROCm (Radeon Open Compute) для вычислений на видеокартах AMD под управлением Ubuntu 22.04 и 24.04. Использование ROCm позволяет запускать задачи машинного обучения и ИИ на базе современных архитектур AMD.

Подготовка системы

Перед началом установки убедитесь, что ваша система обновлена и готова к работе с графическим стеком AMD.

  1. Настройка BIOS: Убедитесь, что в настройках BIOS сервера включен параметр Above 4G Decoding и Resizable BAR. Это критически важно для корректного распределения памяти GPU.
  2. Поддержка ОС: Официально поддерживается установка на версии Ubuntu 22.04 LTS (Jammy) и Ubuntu 24.04 LTS (Noble).
  3. Обновление ядра (для Ubuntu 22.04): Для корректной работы новых серий видеокарт (Radeon 7000, Instinct MI300 и др.) необходимо использовать свежее ядро HWE (Hardware Enablement):

    sudo apt update
    sudo apt install -y linux-generic-hwe-22.04
    

Ручная установка компонентов

Для самостоятельной установки выполните следующие команды:

  1. Обновление и зависимости

    sudo apt update && sudo apt upgrade -y
    sudo apt install -y wget gnupg2 build-essential dkms curl rocminfo
    
  2. Определение последней версии ROCm и скачивание amdgpu-install

    # Получение последней версии ROCm
    LATEST_ROCM=$(curl -s https://repo.radeon.com/rocm/ | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n 1)
    
    if [ -z "$LATEST_ROCM" ]; then
        echo "Используется 7.1.1 по умолчанию"
        LATEST_ROCM="7.1.1"
    fi
    
    # Определение кодового имени Ubuntu
    OS_VER=$(lsb_release -rs)
    case "$OS_VER" in
        "22.04") UBUNTU_NAME="jammy" ;;
        "24.04") UBUNTU_NAME="noble" ;;
    esac
    
    echo "ROCm версия: $LATEST_ROCM, Ubuntu: $UBUNTU_NAME"
    
    # Скачивание и установка amdgpu-install
    INSTALLER_URL="https://repo.radeon.com/amdgpu-install/${LATEST_ROCM}/ubuntu/${UBUNTU_NAME}/"
    DEB_NAME=$(curl -s "$INSTALLER_URL" | grep -oE 'amdgpu-install_[^"]+\.deb' | head -n 1)
    wget -q "${INSTALLER_URL}${DEB_NAME}"
    sudo apt install -y "./${DEB_NAME}"
    rm "${DEB_NAME}"
    sudo apt update
    
  3. Установка ROCm через amdgpu-install

    sudo amdgpu-install -y --usecase=rocm,hip --accept-eula
    
  4. Установка компонентов мониторинга

    sudo apt install -y rocm-smi-lib amd-smi-lib rocminfo
    
  5. Настройка прав доступа

    sudo usermod -aG render,video $USER
    
  6. Настройка путей (PATH и LD_LIBRARY_PATH)

    if ! grep -q "/opt/rocm/bin" ~/.bashrc; then
        echo -e '\n# AMD ROCm Paths' >> ~/.bashrc
        echo "export PATH=\$PATH:/opt/rocm-${LATEST_ROCM}/bin:/opt/rocm/bin:/opt/rocm/sbin" >> ~/.bashrc
        echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm-${LATEST_ROCM}/lib:/opt/rocm/lib:/opt/rocm/lib64" >> ~/.bashrc
    fi
    source ~/.bashrc
    

Проверка установки

После завершения установки и перезагрузки системы проверьте корректность работы драйверов:

  1. Инструмент rocminfo:

    rocminfo
    
    Команда должна вывести список доступных GPU и их характеристики (агенты HSA).

    Пример вывода rocminfo при успешной установке драйверов и ROCm
    ROCk module is loaded
    =====================
    HSA System Attributes
    =====================
    Runtime Version:         1.18
    Runtime Ext Version:     1.14
    System Timestamp Freq.:  1000.000000MHz
    Sig. Max Wait Duration:  18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)
    Machine Model:           LARGE
    System Endianness:       LITTLE
    Mwaitx:                  DISABLED
    XNACK enabled:           NO
    DMAbuf Support:          YES
    VMM Support:             NO
    
    ==========
    HSA Agents
    ==========
    *******
    Agent 1
    *******
    Name:                    AMD Ryzen 9 7950X 16-Core Processor
    Uuid:                    CPU-XX
    Marketing Name:          AMD Ryzen 9 7950X 16-Core Processor
    Vendor Name:             CPU
    Feature:                 None specified
    Profile:                 FULL_PROFILE
    Float Round Mode:        NEAR
    Max Queue Number:        0(0x0)
    Queue Min Size:          0(0x0)
    Queue Max Size:          0(0x0)
    Queue Type:              MULTI
    Node:                    0
    Device Type:             CPU
    Cache Info:
        L1:                      32768(0x8000) KB
    Chip ID:                 0(0x0)
    ASIC Revision:           0(0x0)
    Cacheline Size:          64(0x40)
    Max Clock Freq. (MHz):   5881
    BDFID:                   0
    Internal Node ID:        0
    Compute Unit:            32
    SIMDs per CU:            0
    Shader Engines:          0
    Shader Arrs. per Eng.:   0
    WatchPts on Addr. Ranges:1
    Memory Properties:
    Features:                None
    Pool Info:
        Pool 1
        Segment:                 GLOBAL; FLAGS: FINE GRAINED
        Size:                    130980620(0x7ce9b0c) KB
        Allocatable:             TRUE
        Alloc Granule:           4KB
        Alloc Recommended Granule:4KB
        Alloc Alignment:         4KB
        Accessible by all:       TRUE
        Pool 2
        Segment:                 GLOBAL; FLAGS: EXTENDED FINE GRAINED
        Size:                    130980620(0x7ce9b0c) KB
        Allocatable:             TRUE
        Alloc Granule:           4KB
        Alloc Recommended Granule:4KB
        Alloc Alignment:         4KB
        Accessible by all:       TRUE
        Pool 3
        Segment:                 GLOBAL; FLAGS: KERNARG, FINE GRAINED
        Size:                    130980620(0x7ce9b0c) KB
        Allocatable:             TRUE
        Alloc Granule:           4KB
        Alloc Recommended Granule:4KB
        Alloc Alignment:         4KB
        Accessible by all:       TRUE
        Pool 4
        Segment:                 GLOBAL; FLAGS: COARSE GRAINED
        Size:                    130980620(0x7ce9b0c) KB
        Allocatable:             TRUE
        Alloc Granule:           4KB
        Alloc Recommended Granule:4KB
        Alloc Alignment:         4KB
        Accessible by all:       TRUE
    ISA Info:
    *******
    Agent 2
    *******
    Name:                    gfx1036
    Uuid:                    GPU-XX
    Marketing Name:          AMD Radeon Graphics
    Vendor Name:             AMD
    Feature:                 KERNEL_DISPATCH
    Profile:                 BASE_PROFILE
    Float Round Mode:        NEAR
    Max Queue Number:        128(0x80)
    Queue Min Size:          64(0x40)
    Queue Max Size:          131072(0x20000)
    Queue Type:              MULTI
    Node:                    1
    Device Type:             GPU
    Cache Info:
        L1:                      16(0x10) KB
        L2:                      256(0x100) KB
    Chip ID:                 5710(0x164e)
    ASIC Revision:           1(0x1)
    Cacheline Size:          64(0x40)
    Max Clock Freq. (MHz):   2200
    BDFID:                   2560
    Internal Node ID:        1
    Compute Unit:            2
    SIMDs per CU:            2
    Shader Engines:          1
    Shader Arrs. per Eng.:   1
    WatchPts on Addr. Ranges:4
    Coherent Host Access:    FALSE
    Memory Properties:       APU
    Features:                KERNEL_DISPATCH
    Fast F16 Operation:      TRUE
    Wavefront Size:          32(0x20)
    Workgroup Max Size:      1024(0x400)
    Workgroup Max Size per Dimension:
        x                        1024(0x400)
        y                        1024(0x400)
        z                        1024(0x400)
    Max Waves Per CU:        32(0x20)
    Max Work-item Per CU:    1024(0x400)
    Grid Max Size:           4294967295(0xffffffff)
    Grid Max Size per Dimension:
        x                        2147483647(0x7fffffff)
        y                        65535(0xffff)
        z                        65535(0xffff)
    Max fbarriers/Workgrp:   32
    Packet Processor uCode:: 18
    SDMA engine uCode::      1
    IOMMU Support::          None
    Pool Info:
        Pool 1
        Segment:                 GLOBAL; FLAGS: COARSE GRAINED
        Size:                    65490308(0x3e74d84) KB
        Allocatable:             TRUE
        Alloc Granule:           4KB
        Alloc Recommended Granule:2048KB
        Alloc Alignment:         4KB
        Accessible by all:       FALSE
        Pool 2
        Segment:                 GLOBAL; FLAGS: EXTENDED FINE GRAINED
        Size:                    65490308(0x3e74d84) KB
        Allocatable:             TRUE
        Alloc Granule:           4KB
        Alloc Recommended Granule:2048KB
        Alloc Alignment:         4KB
        Accessible by all:       FALSE
        Pool 3
        Segment:                 GROUP
        Size:                    64(0x40) KB
        Allocatable:             FALSE
        Alloc Granule:           0KB
        Alloc Recommended Granule:0KB
        Alloc Alignment:         0KB
        Accessible by all:       FALSE
    ISA Info:
        ISA 1
        Name:                    amdgcn-amd-amdhsa--gfx1036
        Machine Models:          HSA_MACHINE_MODEL_LARGE
        Profiles:                HSA_PROFILE_BASE
        Default Rounding Mode:   NEAR
        Default Rounding Mode:   NEAR
        Fast f16:                TRUE
        Workgroup Max Size:      1024(0x400)
        Workgroup Max Size per Dimension:
            x                        1024(0x400)
            y                        1024(0x400)
            z                        1024(0x400)
        Grid Max Size:           4294967295(0xffffffff)
        Grid Max Size per Dimension:
            x                        2147483647(0x7fffffff)
            y                        65535(0xffff)
            z                        65535(0xffff)
        FBarrier Max Size:       32
        ISA 2
        Name:                    amdgcn-amd-amdhsa--gfx10-3-generic
        Machine Models:          HSA_MACHINE_MODEL_LARGE
        Profiles:                HSA_PROFILE_BASE
        Default Rounding Mode:   NEAR
        Default Rounding Mode:   NEAR
        Fast f16:                TRUE
        Workgroup Max Size:      1024(0x400)
        Workgroup Max Size per Dimension:
            x                        1024(0x400)
            y                        1024(0x400)
            z                        1024(0x400)
        Grid Max Size:           4294967295(0xffffffff)
        Grid Max Size per Dimension:
            x                        2147483647(0x7fffffff)
            y                        65535(0xffff)
            z                        65535(0xffff)
        FBarrier Max Size:       32
    *** Done ***
    
  2. Инструмент rocm-smi:

    rocm-smi
    

    Результат вывода команды:

    WARNING: AMD GPU device(s) is/are in a low-power state. Check power control/runtime_status
    
    ========================================= ROCm System Management Interface =========================================
    =================================================== Concise Info ===================================================
    Device  Node  IDs              Temp    Power     Partitions          SCLK  MCLK     Fan  Perf  PwrCap  VRAM%  GPU%
                (DID,     GUID)  (Edge)  (Socket)  (Mem, Compute, ID)
    ====================================================================================================================
    0       1     0x164e,   49735  43.0°C  57.158W   N/A, N/A, 0         N/A   1800Mhz  0%   auto  N/A     3%     0%
    ====================================================================================================================
    =============================================== End of ROCm SMI Log ================================================
    

    или можно использовать выводы утилиты

    amd-smi --help
    

    Все это позволит увидеть текущую загрузку, температуру и потребление видеокарт.

    Примечание

    amd-smi постепенно заменяет rocm-smi как основную утилиту мониторинга в новых версиях ROCm.

Работа с Docker

Если вы используете Docker, необходимо установить инструментарий для проброса GPU в контейнеры:

sudo apt install -y rocm-gdb rocm-container-toolkit
sudo systemctl restart docker

Автоматическая установка "в 1 клик"

Bash-скрипт для полной автоматизации процесса. Он определяет последнюю версию ROCm, устанавливает драйверы, утилиту rocminfo и настраивает пути.

#!/bin/bash

# AMD GPU Auto Detection & ROCm LATEST Installation
# Optimized for Radeon AI PRO R9700 (Navi 48)

set -e

# 🔍 1. GPU Detection Functions
detect_r9700() {
    PCI_ID=$(lspci -nn | grep -i vga | grep "1002:7551" | head -1)
    [[ -n "$PCI_ID" ]] && { echo "✅ R9700/Navi48 DETECTED: $PCI_ID"; R9700_PCI=$(echo $PCI_ID | cut -d' ' -f1); return 0; }
    return 1
}

echo "🔍 Scanning AMD GPUs..."
lspci -nn | grep -i vga | grep 1002 | awk '{print $1, $3}' | head -5

R9700_DETECTED=0; GPU_TYPE="Unknown"; GPU_PCI=""
if detect_r9700; then
    R9700_DETECTED=1; GPU_TYPE="R9700/Navi48"; GPU_PCI="$R9700_PCI"
fi

echo "🎯 Target GPU: $GPU_TYPE ($GPU_PCI)"

# 🚀 2. Kernel check (R9700: 6.13+ for Navi48)
KERNEL_INSTALLED=0
if [[ $R9700_DETECTED -eq 1 ]]; then
    KERNEL_VERSION=$(uname -r)
    echo "Current Kernel: $KERNEL_VERSION"

    KERNEL_MAJOR_MINOR=$(echo $KERNEL_VERSION | grep -oE '[0-9]+\.[0-9]+' | head -1 | tr -d .)
    if [[ ${KERNEL_MAJOR_MINOR:-0} -lt 613 ]]; then
        echo "📦 R9700 requires newer kernel → Installing Mainline 6.13+"
        sudo add-apt-repository ppa:cappelikan/ppa -y 2>/dev/null || true
        sudo apt update
        sudo apt install -y mainline pkexec
        mainline install-latest
        KERNEL_INSTALLED=1
        echo "✅ Kernel ready (will activate after reboot)"
    else
        echo "✅ Kernel $KERNEL_VERSION is sufficient."
    fi
fi

# ⚙️ 3. GRUB Parameters for R9700
if [[ $R9700_DETECTED -eq 1 ]]; then
    GRUB_PARAMS="quiet splash amdgpu.dc=0 amdgpu.gpu_recovery=1 amdgpu.runpm=0 amdgpu.ppfeaturemask=0xffffffff"
    if ! grep -q "amdgpu.dc=0" /etc/default/grub 2>/dev/null; then
        echo "⚙️  Updating GRUB for Navi 48 stability..."
        sudo cp /etc/default/grub /etc/default/grub.backup
        sudo sed -E "s/GRUB_CMDLINE_LINUX_DEFAULT=\"[^\"]*\"/GRUB_CMDLINE_LINUX_DEFAULT=\"$GRUB_PARAMS\"/" /etc/default/grub > /tmp/grub.new
        sudo mv /tmp/grub.new /etc/default/grub
        sudo update-grub
    fi
fi

echo "🚀 Setting up ROCm LATEST repository..."

# 🧹 4. Clean previous AMD installations
sudo dpkg --configure -a || true
sudo apt remove --purge -y rocminfo || true
sudo apt purge -y 'rocm*' 'amdgpu*' 'graphics*' 'hip*' || true
sudo apt autoremove -y
sudo apt clean
sudo rm -rf /etc/apt/sources.list.d/amdgpu* /etc/apt/sources.list.d/rocm* /etc/apt/sources.list.d/graphics*
sudo apt update

# 📦 5. Configure ROCm LATEST Repository with PINNING
UBUNTU_NAME=$(lsb_release -sc 2>/dev/null || echo "noble")
sudo apt update
sudo apt install -y wget gnupg2 curl

# Add GPG Key
wget -qO- https://repo.radeon.com/rocm/rocm.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/rocm-archive-keyring.gpg > /dev/null

# Add Latest Repo
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/rocm-archive-keyring.gpg] https://repo.radeon.com/rocm/apt/latest/ $UBUNTU_NAME main" | sudo tee /etc/apt/sources.list.d/rocm.list

# 🔥 КРИТИЧНО: Приоритет репозиторию AMD перед стандартным Ubuntu
cat <<EOF | sudo tee /etc/apt/preferences.d/rocm-pin-600
Package: *
Pin: origin repo.radeon.com
Pin-Priority: 600
EOF

sudo apt update

# 🎯 6. Install ROCm Stack (Принудительно очищаем старое перед установкой)
echo "📥 Installing ROCm LATEST packages..."
sudo apt install -y -o Dpkg::Options::="--force-overwrite" \
    rocm-dev rocm-libs rocm-hip-sdk rocm-smi-lib rocminfo

# 🛠 7. Post-install Configuration
sudo usermod -aG render,video $USER

# 🔍 7.1. Auto-detect installed ROCm version
echo "🔍 Detecting installed ROCm version..."

# Находим самую свежую директорию rocm-X.Y.Z в /opt
INSTALLED_ROCM_DIR=$(ls -d /opt/rocm-[0-9]* 2>/dev/null | sort -V | tail -n 1)

if [ -n "$INSTALLED_ROCM_DIR" ]; then
    REAL_VERSION=$(echo "$INSTALLED_ROCM_DIR" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
    echo "✅ Found ROCm version: $REAL_VERSION in $INSTALLED_ROCM_DIR"

    # Создаем символическую ссылку /opt/rocm -> /opt/rocm-X.Y.Z
    sudo ln -sfn "$INSTALLED_ROCM_DIR" /opt/rocm
    echo "🔗 Linked /opt/rocm -> $INSTALLED_ROCM_DIR"
else
    echo "❌ Error: No ROCm installation found in /opt/rocm-*"
    REAL_VERSION="latest"
fi

# 📝 7.2. Environment Variables configuration
if ! grep -q "AMD ROCm Paths" ~/.bashrc; then
    cat >> ~/.bashrc << EOF

# AMD ROCm Paths
export PATH="/opt/rocm/bin:\$PATH"
export LD_LIBRARY_PATH="/opt/rocm/lib:\$LD_LIBRARY_PATH"
EOF

    if [[ $R9700_DETECTED -eq 1 ]]; then
        echo "export HSA_OVERRIDE_GFX_VERSION=12.0.0  # R9700 gfx1200" >> ~/.bashrc
    fi
    echo "✅ Added paths to ~/.bashrc"
fi

# 🐳 8. Docker support (Optional)
if command -v docker &> /dev/null; then
    sudo apt install -y rocm-gdb rocm-container-toolkit || echo "Skipping docker toolkit..."
fi

# Power On card!!!
echo on | sudo tee /sys/class/drm/card0/device/power/control

echo "--------------------------------------------------"
echo "✅ ROCm LATEST ($REAL_VERSION) INSTALLED!"
if [[ $KERNEL_INSTALLED -eq 1 ]]; then
    echo "🔄 CRITICAL: REBOOT REQUIRED to activate Kernel 6.13+ for R9700!"
else
    echo "🔄 REBOOT recommended to apply group changes."
fi
echo ""
echo "Verify after reboot:"
echo "  rocm-smi --showhw"
echo "  rocminfo | grep gfx12"
echo "--------------------------------------------------"

Внимание

После выполнения скрипта обязательна перезагрузка сервера командой sudo reboot. Это необходимо для активации новых групп пользователей и модулей ядра.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×