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

Установка драйверов NVIDIA и CUDA на Ubuntu Linux

В этой статье

Данная инструкция описывает процесс установки драйверов видеокарт NVIDIA и CUDA на следующие операционные системы: Ubuntu 22.04, Ubuntu 24.04.

Внимание

Для корректной работы видеокарт серии Tesla (например NVIDIA Tesla T4) убедитесь что в BIOS сервера включен параметр 'above 4G decoding' или 'large/64bit BARs' или 'Above 4G MMIO BIOS assignment'.

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

  1. Обновляем систему:

    sudo apt update
    sudo apt upgrade -y
    
  2. На Ubuntu 22.04 для видеокарт RTX4xxx серии, A100 и H100 необходимо обновить версию ядра. Также вы можете обновить версию ядра и для более старых видеокарт:

    sudo apt install linux-generic-hwe-22.04
    

    Установка CUDA и драйверов Nvidia

CUDA - параллельная платформа вычислений и модель программирования, разработанная NVIDIA, которая позволяет разработчикам использовать возможности современных GPU для обобщённых вычислений, анализа данных и приложений машинного обучения.

  1. Устанавливаем компилятор gcc, необходимый для сборки CUDA:

    sudo apt install gcc
    
  2. Качаем и устанавливаем CUDA. Для Ubuntu 24.04 поправьте в пути wget значение ubuntu2204 на ubuntu2404:

    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
    sudo dpkg -i cuda-keyring_1.1-1_all.deb
    sudo apt update
    sudo apt install cuda -y
    
  3. Прописываем переменные окружения для обнаружения CUDA вашими фреймворками и приложениями в .bashrc:

    echo 'export PATH="/sbin:/bin:/usr/sbin:/usr/bin:${PATH}:/usr/local/cuda/bin"' >> ~/.bashrc
    echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64\${LD_LIBRARY_PATH:+:\${LD_LIBRARY_PATH}}' >> ~/.bashrc
    source ~/.bashrc
    

    Внимание

    Вы должны выполнить данные команды для всех пользователей, которым нужно использовать CUDA.

  4. Проверяем установку драйверов на видеокарту:

    sudo nvidia-smi
    

    Вы должны получить вывод, похожий на этот

    user@48567:~$ nvidia-smi
    Fri May 10 15:58:17 2024
    +-----------------------------------------------------------------------------------------+
    | NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      CUDA Version: 12.4     |
    |-----------------------------------------+------------------------+----------------------+
    | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
    |                                         |                        |               MIG M. |
    |=========================================+========================+======================|
    |   0  NVIDIA RTX A4000               Off |   00000000:07:00.0 Off |                  Off |
    | 41%   31C    P8             15W /  140W |       3MiB /  16376MiB |      0%      Default |
    |                                         |                        |                  N/A |
    +-----------------------------------------+------------------------+----------------------+
    
    +-----------------------------------------------------------------------------------------+
    | Processes:                                                                              |
    |  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
    |        ID   ID                                                               Usage      |
    |=========================================================================================|
    |  No running processes found                                                             |
    +-----------------------------------------------------------------------------------------+
    

    Внимание

    Если вы получили при установке сообщение modprobe: ERROR: could not insert 'nvidia': Device or resource busy, то вам необходимо удалить модуль ядра nouveau и включить использование модулей nvidia.

    sudo rmmod -f nouveau
    sudo nvidia-smi
    

    Примечание

    Актуальную инструкцию по установке драйверов для GPU Nvidia под Ubuntu вы можете найти по этой ссылке

  5. Устанавливаем nvidia-cuda-toolkit:

    apt install nvidia-cuda-toolkit
    
  6. Проверяем установку CUDA:

    nvcc -V
    

    После правильной установки вы должны получить вывод, похожий на этот:

    user@48567:~$ nvcc -V
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2024 NVIDIA Corporation
    Built on Thu_Mar_28_02:18:24_PDT_2024
    Cuda compilation tools, release 12.4, V12.4.131
    Build cuda_12.4.r12.4/compiler.34097967_0
    

Внимание

Если после установки вы столкнулись с ошибкой вида Failed to initialize NVML: Driver/library version mismatch, то необходимо переподключить модули ядра Nvidia, удалив их и запустив заново nvidia-smi для переинициализации:

sudo rmmod -f nvidia-modeset
sudo rmmod nvidia_uvm
sudo rmmod nvidia_drm
sudo rmmod nvidia-peermem
sudo rmmod nvidia
sudo nvidia-smi

Установка модулей NVIDIA для Docker

Если вы используете Docker контейнеры не забудьте установить пакет nvidia-docker2:

sudo apt install -y nvidia-docker2
sudo systemctl restart docker

Установка драйверов и CUDA 12 "за 1 клик"

Вы можете использовать данный скрипт для автоматической установки драйверов и CUDA 12:

#!/bin/bash

# Update and upgrade the system using apt
sudo apt update
sudo apt upgrade -y

#Check Ubuntu 22.04 and update kernel
lsb_release=$(lsb_release -a | grep "22.04")
if [[ -n "$lsb_release" ]]; then

    # Check if there's a video card with Nvidia (10de) H100 model (23xx)
    lspci_output=$(lspci -nnk | awk '/\[10de:23[0-9a-f]{2}\]/ {print $0}')
    if [[ -n "$lspci_output" ]]; then
        echo "H100 detected"
        # If yes install the necessary kernel package
        sudo apt install -y linux-generic-hwe-22.04
    fi

    # Check if there's a video card with Nvidia (10de) A100 model (20xx)
    lspci_output=$(lspci -nnk | awk '/\[10de:20[0-9a-f]{2}\]/ {print $0}')
    if [[ -n "$lspci_output" ]]; then
        echo "A100 detected"
        # If yes install the necessary kernel package
        sudo apt install -y linux-generic-hwe-22.04
    fi
fi

# Install GCC compiler for CUDA install
sudo apt install gcc -y

# Get the release version of Ubuntu
RELEASE_VERSION=$(lsb_release -rs | sed 's/\([0-9]\+\)\.\([0-9]\+\)/\1\2/')

# Download and install CUDA package for Ubuntu and Nvidia drivers
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${RELEASE_VERSION}/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb

# Update and upgrade the system again to ensure all packages are installed correctly
sudo apt update
sudo apt install cuda -y
sudo apt install nvidia-cuda-toolkit -y

# Add PATH and LD_LIBRARY_PATH environment variables for CUDA in .bashrc file
echo 'export PATH="/sbin:/bin:/usr/sbin:/usr/bin:${PATH}:/usr/local/cuda/bin"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64\${LD_LIBRARY_PATH:+:\${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc

#Initialize kernel modules without reboot

sudo rmmod -f nouveau
sudo nvidia-smi

nvcc -V

#Installing Docker binding for Nvidia

if command -v docker &> /dev/null; then
  echo "Docker is installed."
  sudo apt install -y nvidia-docker2
  sudo systemctl restart docker
else
  echo "Docker is not installed."
fi