ПО для GPU
Как проверить версию CUDA и драйвера NVIDIA в Ubuntu
На этой странице
сообщает версию драйвера, а nvcc — версию CUDA Toolkit, с которым вы компилируете код. На этой странице объясняется, что показывает каждая из них и как должны соотноситься их версии, как установить ещё один CUDA Toolkit рядом с имеющимся в Ubuntu 24.04 или 22.04 и как исправить ошибки, с которыми вы, скорее всего, столкнётесь.
Версии драйвера и CUDA в выводе nvidia-smi
nvidia-smi
nvidia-smi --query-gpu=index,name,driver_version,memory.total --format=csv
cat /proc/driver/nvidia/version
В заголовке вывода указаны три версии:
— версия самой утилиты; обычно она совпадает с версией драйвера.NVIDIA-SMI - Driver Version — версия установленного драйвера.
- CUDA Version — самая новая версия CUDA, которую поддерживает этот драйвер. Это не значит, что CUDA Toolkit этой версии установлен.
/proc/driver/nvidia/version показывает модуль ядра, который загружен на самом деле. Если его версия отличается от версии установленных пакетов драйвера, например после обновления, значит, сервер ждёт перезагрузки.
Проверка CUDA Toolkit с помощью nvcc
nvcc --version
ls -d /usr/local/cuda*
Версию CUDA Toolkit показывает строка «Cuda compilation tools, release X.Y». /usr/local/cuda указывает на CUDA Toolkit по умолчанию, а другие версии находятся в . Если команда nvcc не найдена, добавьте CUDA Toolkit в окружение (чтобы настройка сохранилась, допишите эти строки в ~/.bashrc):
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
python3 -c "import torch; print(torch.__version__, torch.version.cuda,
torch.cuda.is_available())"
Как сочетаются версии драйвера и CUDA Toolkit
- Драйвер должен быть не старее кода.
Значение CUDA Version в выводе nvidia-smi должно быть не ниже версии CUDA, на которую рассчитаны ваш CUDA Toolkit,wheel-пакет или контейнер. Старые версии CUDA Toolkit работают на новых драйверах. - У совместимости минорных версий есть пределы.
В рамках одной мажорной версии, например 12.x, NVIDIA позволяет многим приложениям, собранным с более новой минорной версией, работать на более старом драйвере той же мажорной версии, но такие функции, как JIT-компиляция PTX, могут не работать. Прежде чем на это полагаться, проверьте. - Архитектура GPU задаёт минимальную версию. GPU на архитектуре Hopper (H100, H200) работают с CUDA 12 и новее. Для GPU на архитектуре Blackwell (B200, RTX PRO 6000, RTX 5090) нужны CUDA 12.8 или новее и сборки фреймворков с поддержкой Blackwell; минимальную версию для B300 уточните в примечаниях к выпуску NVIDIA.
Установка другой версии CUDA Toolkit в Ubuntu 24.04
/etc/apt/sources.list.d/ уже есть запись о репозитории CUDA, пропустите шаг 1.
- Добавьте ключ репозитория NVIDIA. В Ubuntu 22.04 замените
ubuntu2404наubuntu2204:repo=https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64 wget $repo/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt update - Посмотрите, какие версии CUDA Toolkit доступны:
apt-cache search --names-only '^cuda-toolkit-[0-9]+-[0-9]+$' - Установите пакет, содержащий только CUDA Toolkit нужной версии, например 12.8:
Всегда используйтеsudo apt install -y cuda-toolkit-12-8. Пакетыcuda-toolkit-X-Y cuda,иcuda-X-Y устанавливают ещё и драйвер.cuda-drivers - Выберите эту версию в своей командной оболочке и проверьте:
Должно отобразиться «release 12.8». Если CUDA Toolkit установлены из пакетов NVIDIA, командаexport PATH=/usr/local/cuda-12.8/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} nvcc --versionsudoменяет версию по умолчанию, на которую указываетupdate-alternatives --config cuda /usr/local/cuda.
Когда репозиторий NVIDIA подключён, последующий apt upgrade может предложить более новые пакеты драйвера. Прежде чем подтверждать обновление, просмотрите список пакетов или зафиксируйте драйвер, как описано в руководстве по образам ОС. Если другая версия CUDA нужна только одному проекту, часто проще использовать контейнер: см.
Включение persistence mode
Persistence mode сохраняет драйвер инициализированным, даже когда GPU не использует ни один процесс, поэтому задачи запускаются без ожидания загрузки драйвера. Проверьте текущее состояние, затем включите режим:
nvidia-smi --query-gpu=index,persistence_mode --format=csv
sudo nvidia-smi -pm 1
Для каждого GPU должно отображаться «Enabled». После перезагрузки настройка не сохраняется. Если после перезапуска режим выключен, включайте его при загрузке через crontab пользователя root: выполните sudo crontab и добавьте строку @reboot .
Устранение типичных ошибок
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver
Модуль ядра не загружен — часто после обновления ядра, для которого модуль не был собран. Соберите сведения:
uname -r
lsmod | grep nvidia
dkms status
sudo dmesg | grep -i -E 'nvidia|nvrm'
Если dkms status показывает модуль NVIDIA для других ядер, но не для того, которое выводит uname , установите соответствующие заголовочные файлы ядра, пересоберите модуль и перезагрузите сервер:
sudo apt install -y linux-headers-$(uname -r)
sudo dkms autoinstall
sudo reboot
Если dkms не установлен, драйвер использует заранее собранные модули: создайте в личном кабинете тикет в поддержку и приложите вывод команд выше.
Failed to initialize NVML: Driver/library version mismatch
Пакеты драйвера обновились, пока был загружен старый модуль. Выполните sudo reboot/proc/driver/nvidia/version должны показывать одну и ту же версию. Фиксация пакетов драйвера предотвращает эту ошибку.
CUDA error 802, system not yet initialized
systemctl status , перезапустите службу командой sudo systemctl restart , а если она не запускается, создайте тикет в личном кабинете.
CUDA driver version is insufficient for CUDA runtime version
dmesg) читайте в руководстве по мониторингу GPU.
Часто задаваемые вопросы
Почему nvidia-smi и nvcc показывают разные версии CUDA?
Нужен ли CUDA Toolkit, чтобы запускать PyTorch?
Можно ли самостоятельно обновить драйвер NVIDIA?
Не получается?
Создайте тикет в личном кабинете: укажите сервер, что вы запускали, и приложите вывод ошибок, если он есть. Инженеры отвечают круглосуточно.