Установка драйверов 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'.
Подготовка системы¶
-
Обновляем систему:
-
На Ubuntu 22.04 для видеокарт RTX4xxx серии, A100 и H100 необходимо обновить версию ядра. Также вы можете обновить версию ядра и для более старых видеокарт:
Установка CUDA и драйверов Nvidia¶
CUDA - параллельная платформа вычислений и модель программирования, разработанная NVIDIA, которая позволяет разработчикам использовать возможности современных GPU для обобщённых вычислений, анализа данных и приложений машинного обучения.
-
Устанавливаем компилятор gcc, необходимый для сборки CUDA:
-
Качаем и устанавливаем CUDA. Для Ubuntu 24.04 поправьте в пути
wget
значениеubuntu2204
наubuntu2404
: -
Прописываем переменные окружения для обнаружения 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.
-
Проверяем установку драйверов на видеокарту:
Вы должны получить вывод, похожий на этот
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.Примечание
Актуальную инструкцию по установке драйверов для GPU Nvidia под Ubuntu вы можете найти по этой ссылке
-
Устанавливаем nvidia-cuda-toolkit:
-
Проверяем установку CUDA:
После правильной установки вы должны получить вывод, похожий на этот:
Внимание
Если после установки вы столкнулись с ошибкой вида Failed to initialize NVML: Driver/library version mismatch, то необходимо переподключить модули ядра Nvidia, удалив их и запустив заново nvidia-smi
для переинициализации:
Установка модулей NVIDIA для Docker¶
Если вы используете Docker контейнеры не забудьте установить пакет nvidia-docker2
:
Установка драйверов и 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