Вопрос или проблема
У меня возникли проблемы с тем, что моя машина не обнаруживает мой второй GPU (оба RTX 3090). Это не новая машина, и проблема возникла несколько недель назад, которую я решил, вернувшись к старой версии ядра (неизвестная версия). Но после недавнего обновления я потерял то ядро и застрял с этой проблемой.
Вот что я пробовал сделать до сих пор:
- Поменять местами GPU в их PCI слотах, чтобы исключить проблему с оборудованием
- Обновить BIOS материнской платы до последней версии
- Чистая установка 22.04 для каждой установки драйвера ниже
- Каждая установка NVIDIA CUDA (>= 11.7) с сайта загрузок NVIDIA (deb local, deb network и run файл)
- Каждый драйвер Ubuntu nvidia-driver*, начиная с самой ранней версии, чтобы поддерживать минимальную версию CUDA 11.7
- Откат до старой версии ядра (5.15) с помощью mainline
- Откат до ядра 6.4
- Загрузка с подключенным HDMI монитором ко второму GPU
*Обратите внимание, что все старые драйверы Ubuntu nvidia-drivers-5XX являются переходными пакетами к 525 или 535 (apt search nvidia-driver
). Последний драйвер, при котором оба GPU работали, был 515.
Один GPU, который отображается (также мой дисплейный GPU), действительно выполняет задачи CUDA, но, похоже, делает мою систему нестабильной/задерживает, когда работа (PyTorch) запускается на несколько минут.
❯ uname -r
5.19.0-46-generic
❯ lspci | grep VGA
09:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
43:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
❯ nvidia-smi
Sat Jul 1 12:11:41 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.125.06 Driver Version: 525.125.06 CUDA Version: 12.0 |
|-------------------------------+----------------------+----------------------+
| 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 GeForce ... Off | 00000000:43:00.0 On | N/A |
| 0% 41C P8 24W / 350W | 562MiB / 24576MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1879 G /usr/lib/xorg/Xorg 140MiB |
| 0 N/A N/A 2338 C+G ...ome-remote-desktop-daemon 258MiB |
| 0 N/A N/A 2375 G /usr/bin/gnome-shell 87MiB |
| 0 N/A N/A 3338 G ...566776601308618822,262144 73MiB |
+-----------------------------------------------------------------------------+
dmesg
Ссылка на GitHub Gist
Странная вещь заключается в том, что периодически, после свежей установки CUDA (не изолированной для одной версии драйвера) и перезагрузки, второй GPU действительно появляется в nvidia-smi
. Но после перезагрузки он снова исчезает. Удаление и переустановка CUDA могут это воспроизвести, но это похоже на случайность (и я не хочу делать это каждый раз при перезагрузке)
Есть идеи, как я могу снова заставить машину работать правильно?
sudo dkms autoinstall
может помочь в реконструкции модулей ядра Nvidia.
На сегодняшний день единственное решение, которое я нашел, — это использовать mainline
для установки версии ядра 5.15. Это восстановило мой второй GPU в nvidia-smi
.
Я не понимаю, почему текущий образ 22.04.2 LTS использует 5.19, так как здесь указано здесь, что 22.04 LTS должен быть 5.15. Это также странно, что обычное обновление фактически создало эту проблему — я уверен, что главная причина, по которой люди используют версии LTS, заключается в избегании таких проблем.
Редактировать: на основании заметок о выпуске
Ubuntu Desktop автоматически переходит на ядро v5.17 на последних поколениях сертифицированных устройств (linux-oem-22.04)
Ubuntu Server по умолчанию использует не изменяющееся LTS ядро v5.15 (linux-generic)
Так что похоже, что 5.15 может быть только для Ubuntu Server, а Ubuntu Desktop использует изменяющееся ядро. Жаль, что текущее ядро, похоже, что-то испортило…
@Anjum Sayed, могли бы вы подробно рассказать, что вы сделали, чтобы восстановить это. Я использую двухсистемную загрузку Windows 10/Ubuntu 20.04 Desktop и испытываю ту же проблему, когда я больше не могу увидеть ядро GPU RTX 3090:
Loading new nvidia-465.19.01 DKMS files…
Building for 5.15.0-76-generic
Building for architecture x86_64
Building initial module for 5.15.0-76-generic
ERROR: Cannot create report: [Errno 17] File exists: ‘/var/crash/nvidia-dkms-465.0.crash’
Error! Bad return status for module build on kernel: 5.15.0-76-generic (x86_64)
Consult /var/lib/dkms/nvidia/465.19.01/build/make.log for more information.
dpkg: error processing package nvidia-dkms-465 (–configure):
installed nvidia-dkms-465 package post-installation script subprocess returned error exit status 10
dpkg: dependency problems prevent configuration of cuda-drivers-465:
cuda-drivers-465 depends on nvidia-dkms-465 (>= 465.19.01); however:
Package nvidia-dkms-465 is not configured yet.
dpkg: error processing package cuda-drivers-465 (–configure):
dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
No apport report written because the error message indicates its a followup error from a previous failure.
dpkg: dependency problems prevent configuration of cuda-drivers:
cuda-drivers depends on cuda-drivers-465 (= 465.19.01-1); however:
Package cuda-drivers-465 is not configured yet.
dpkg: error processing package cuda-drivers (–configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of nvidia-driver-465:
nvidia-driver-465 depends on nvidia-dkms-465 (= 465.19.01-0ubuntu1); however:
Package nvidia-dkms-465 is not configured yet.
dpkg: error processing package nvidia-driver-465 (–configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of cuda-runtime-11-3:
cuda-runtime-11-3 depends on cuda-drivers (>= 465.19.01); however:
Package cuda-drivers is not configured yet.
dpkg: error processing package cuda-runtime-11-3 (–configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of cuda-demo-suite-11-3:
cuda-demo-suite-11-3 depends on cuda-runtimeNo apport report written because MaxReports is reached already
No apport report written because MaxReports is reached already
No apport report written because MaxReports is reached already
-11-3; however:
Package cuda-runtime-11-3 is not configured yet.
dpkg: error processing package cuda-demo-suite-11-3 (–configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of cuda-11-3:
cuda-11-3 depends on cuda-runtime-11-3 (>= 11.3.1); however:
Package cuda-runtime-11-3 is not configured yet.
cuda-11-3 depends on cuda-demo-suite-11-3 (>= 11.3.58); however:
Package cuda-demo-suite-11-3 is not configured yet.
dpkg: error processing package cuda-11-3 (–configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of cuda:
cuda depends on cuda-11-3 (>= 11.3.1); however:
Package cuda-11-3 is not configured yet.
No apport report written because MaxReports is reached already
No apport report written because MaxReports is reached already
dpkg: error processing package cuda (–configure):
dependency problems - leaving unconfigured
Processing triggers for initramfs-tools (0.136ubuntu6.7) …
update-initramfs: Generating /boot/initrd.img-5.15.0-76-generic
Errors were encountered while processing:
nvidia-dkms-465
cuda-drivers-465
cuda-drivers
nvidia-driver-465
cuda-runtime-11-3
cuda-demo-suite-11-3
cuda-11-3
cuda
E: Sub-process /usr/bin/dpkg returned an error code (1)
Ответ или решение
Когда в Ubuntu 22.04 в утилите nvidia-smi
не отображается вторая GPU, важно разобраться, что происходит и как это можно исправить. Давайте разберем проблему более подробно и предложим возможные пути ее решения.
Теоретическое обоснование
Первая задачей является понимание, почему система может не распознавать вторую GPU. Это может быть связано с аппаратными неполадками, проблемами с драйверами, несовместимостью версий CUDA или самим ядром операционной системы.
Основные области для диагностики:
- Аппаратные проблемы: возможность неисправности слота PCIe или самой графической карты.
- Драйверы: некорректно установленные, конфликтующие или устаревшие драйверы могут препятствовать распознаванию GPU.
- Версии CUDA и ядра Linux: Несовместимость между ядром операционной системы, версиями драйверов NVIDIA и CUDA может стать причиной проблем с обнаружением оборудования.
Примеры и диагностика
-
Проверка аппаратной совместимости:
- Как было упомянуто, Вами уже проведен обмен GPU в PCIe слотах, что дает право предполагать, что оборудование функционирует корректно. Однако, несмотря на это, стоит удостовериться в целостности и чистоте самих слотов на материнской плате.
-
Диагностика драйверов и обновлений:
- Информация показывает, что при использовании драйвера 525.125.06 вторая GPU не обнаруживается. Обновления драйверов и ядер могут вносить изменения, которые вызывают проблемы совместимости.
- Проблемы могут также заключаться в неправильной установке DKMS модулей. Выполнение команды
sudo dkms autoinstall
может помочь собрать необходимые модули ядра.
-
Ядро и версия CUDA:
- Ядро 5.19.0-46-generic может не быть оптимальным для определенных конфигураций оборудования. Регрессия на ядро 5.15 была успешной, и это предполагает, что проблемы можно временно решить, используя более старую версию ядра.
- CUDA версии также важны; каждая версия CUDA имеет свои рекомендации по минимальной версии драйверов NVIDIA, которые должны быть установлены в системе.
Применение решений
-
Проверка и обновление ядра:
- Как было сделано ранее, вы можете использовать
mainline
для установки более ранних стабильных версий ядра, таких как 5.15. Это может быть действительным временным решением до выяснения причины проблемы в более новых ядрах.
- Как было сделано ранее, вы можете использовать
-
Переустановка драйверов NVIDIA:
- Пробуйте различные версии драйверов, которые совместимы с вашей версией CUDA. В Ubuntu можно использовать команды:
sudo apt purge '^nvidia-.*' sudo apt update sudo ubuntu-drivers autoinstall
- Пробуйте различные версии драйверов, которые совместимы с вашей версией CUDA. В Ubuntu можно использовать команды:
-
Настройка и проверка установки CUDA:
- Убедитесь, что выбранные версии CUDA и драйверов NVIDIA совместимы между собой. Проверьте рекомендации на странице NVIDIA для каждой версии CUDA.
-
Анализ журналов системы:
- Значение имеют логи, полученные через
dmesg
иnvidia-bug-report
, которые могут помочь выявить причину проблемы. Внимательно изучите журналы на наличие ошибок или предупреждений, связанных с вашим оборудованием NVIDIA.
- Значение имеют логи, полученные через
Заключение
Ваш случай отражает необходимость балансирования между стабильностью и актуальностью системы. Использование более старого стабильно работающего ядра вместе с совместимыми версиями CUDA и драйверов может стать временным решением до выхода исправлений или обновлений для вашей конфигурации. Рекомендуется поддерживать регулярные резервные копии системы перед применением таких изменений, чтобы облегчить восстановление в случае неудачи.