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

Установка драйверов 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 для видеокарт RTX 4xxx, 5xxx серии, A100 и H100 необходимо обновить версию ядра (рекомендуем это сделать и для более старых видеокарт):

    sudo apt install linux-generic-hwe-22.04
    

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

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

В репозитории multiverse Ubuntu уже есть пакеты с драйверами и CUDA, но не последней версии. Для их установки выполните следующие шаги:

  1. Установите драйвера Nvidia командой:

    nvidia_driver_download
    

    В начале вас попросят согласиться с лицензионным соглашением, набрав y. После установки пакетов сервер разорвет соединение для перезагрузки.

  2. Зайдя снова на сервер, установите пакеты CUDA командой:

    sudo apt install nvidia-cuda-toolkit
    
  3. Проверьте установку командами nvidia-smi и nvcc -V как написано в следующем разделе.

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

Если вам необходима последняя версия драйверов и CUDA (или определенная ее версия), то вам необходимо выполнить установку из репозитория Nvidia.

  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-toolkit -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. Проверяем установку 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
    sudo apt install -y linux-generic-hwe-22.04
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-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