Nvidia GPU - andyceo/documentation GitHub Wiki

Nvidia

Установка проприетарных драйверов Nvidia

Основной источник: https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/index.html#debian-installation

Инструкция и пояснения от Debian: https://wiki.debian.org/NvidiaGraphicsDrivers

Установить gcc: sudo apt isntall gcc

Загрузить ключ в /etc/apt/keyrings/ (ключ не должен хранится в /etc/apt/trusted.gpg.d, потому что ключи оттуда используются для любых репозиториев, у которых не указан signed-by):

curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/3bf863cc.pub | sudo gpg --dearmor -o /etc/apt/keyrings/nvidia.gpg

Прописать репозиторий:

echo "deb [signed-by=/etc/apt/keyrings/nvidia.gpg] https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/ /" | sudo tee /etc/apt/sources.list.d/nvidia.list

Обновить список пакетов:

sudo apt update

Если ядро было установлено из бекпортов, то поставить и заголовки для него: sudo apt install linux-headers-$(uname -r)

Установить драйвера:

sudo apt -V install cuda-drivers  # закрытая архитектура, подойдет как правило для большинства
# sudo apt -V install nvidia-open  # открытая архитектура, для новейшего оборудования (от Turing включительно)

Перезагрузить: sudo reboot

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

sudo systemctl restart nvidia-persistenced.service

Проверить, что все установилось и работает:

cat /proc/driver/nvidia/version
nvidia-smi

Удалить драйвера можно командой: sudo apt-get remove --purge nvidia-*

Фиксирование определенной версии драйвера NVIDIA

Создать файл /etc/apt/preferences.d/nvidia со следующим содержимым:

Package: nvidia-*
Pin: version 580.65.06-1
Pin-Priority: 1002

Package: libnv*
Pin: version 580.65.06-1
Pin-Priority: 1002

Package: libnvidia-*
Pin: version 580.65.06-1
Pin-Priority: 1002

Package: libcuda*
Pin: version 580.65.06-1
Pin-Priority: 1002

Package: firmware-nvidia-gsp xserver-xorg-video-nvidia libgles-nvidia1 libgles-nvidia2 libglx-nvidia0 libegl-nvidia0 libxnvctrl0
Pin: version 580.65.06-1
Pin-Priority: 1002

Параметры ядра (можно задать через GRUB)

Для закрытых драйверов потребуется: nvidia-drm.modeset=1

В случае, если подключаешь несколько видеокарт, а они глючат после настройки (определенное сообщение в логах при подключении драйвера), то может помочь эта настройка? pci=realloc=off

Мониторинг карт Nvidia

Штатная утилита (доступна, если установлены драйверы Nvidia): nvidia-smi

Также доступна утилита nvtop (также мониторит видеокарты AMD):

sudo apt install nvtop

Запустить ее:

nvtop

Также есть nvitop (интегрируется с Grafana): https://github.com/XuehaiPan/nvitop

Также можно мониторить в Jupyter Notebook: https://developer.nvidia.com/blog/gpu-dashboards-in-jupyter-lab/

Диагностика

nvidia-smi

lspci | grep -i nvidia

lspci | grep -i vga

sudo dmesg | grep NVRM

Устранение неполадок

Для карт серии RTX 50xx в Linux нужно использовать только открытые драйвера (пакет nvidia-open).

Есть неполадки с 5060 Ti 16 Gb, нужно попробовать новую версию драйвера, но ее нет в репозитории для Debian: https://bbs.archlinux.org/viewtopic.php?id=306310

Если при загрузке ядра в логах есть ошибки вида:

NVRM: This PCI I/O region assigned to your NVIDIA device is invalid:
NVRM: BAR1 is 0M @ 0x0 (PCI:0000:0b.0)

то в параметры запуска ядра нужно прописать pci=realloc, если это не помогло, то pci=realloc=off. Это очень распространённая проблема с распределением ресурсов PCI, то есть с размерами окон памяти и областями, которые требуются устройству PCI (BAR). Изначально они назначаются BIOS, но иногда неправильно или несовместимо, поэтому pci=realloc позволяет ядру изменять области. Источник

AMD GPU

Если при загрузке ядра в логах есть ошибки вида:

amdgpu: sdma_v3_0: Failed to load firmware polaris10_sdma.bin

то это скорее всего значит что нужно установить пакет firmware-amd-graphics:

sudo apt install firmware-amd-graphics

После этого, видеокарта от AMD должна заработать корректно.

⚠️ **GitHub.com Fallback** ⚠️