
Очевидно, я новичок в Ubuntu, поэтому, пожалуйста, простите мне любые ужасные ошибки, которые я могу допустить, или необходимые знания, которых у меня может не быть :D
Ожидаемое поведение
У меня есть ноутбук, на Dell XPS13
котором недавно установлена Ubuntu 20.04 focal
ОС, и я хочу улучшить качество видео с помощью Nvidia GTX 1660 SUPER
eGPU, Razor Core X
в идеале используя вывод на внешний дисплей.
Фактическое поведение
Мне так и не удалось добиться ничего, кроме черного экрана на внешнем дисплее.
Что я пробовал
Я включил поддержку Thunderbolt в BIOS и установил, что он не требует защиты, поэтому он распознается сразу после подключения. Я установил драйверы, перечисленные в , которые ubuntu-driver devices
в основном представляют собой версию 440 драйвера nvidia:
ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/0000:04:01.0/0000:06:00.0/0000:07:01.0/0000:08:00.0 ==
modalias : pci:v000010DEd000021C4sv00001462sd0000C758bc03sc00i00
vendor : NVIDIA Corporation
model : TU116 [GeForce GTX 1660 SUPER]
manual_install: True
driver : nvidia-driver-440 - distro non-free recommended
driver : nvidia-driver-440-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
Я запустил sudo ubuntu-driver autoinstall
, но reboot
экран входа в систему продолжает появляться, хотя я ввожу пароль правильно.
Если я отключу eGPU, то смогу пройти экран входа в систему.
Если я снова подключу его и запущу, то nvidia-smi
получу следующее:
sudo nvidia-smi
[sudo] password for andrei:
Tue Sep 8 17:55:42 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.100 Driver Version: 440.100 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 166... Off | 00000000:3C:00.0 Off | N/A |
| 0% 40C P0 12W / 130W | 0MiB / 5944MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
Другие примечания:
- У меня нет
/etc/X11/xorg.conf
- выглядит
/usr/lib/modprobe.d/nvidia-graphics-drivers.conf
так:
blacklist nouveau
blacklist lbm-nouveau
alias nouveau off
alias lbm-nouveau off
Я тоже бегу nvidia-settings
и получаю это:
ERROR: Unable to load info from any available system
(nvidia-settings:4382): GLib-GObject-CRITICAL **: 18:09:30.505: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
** Message: 18:09:30.507: PRIME: Requires offloading
** Message: 18:09:30.507: PRIME: is it supported? yes
** Message: 18:09:30.534: PRIME: Usage: /usr/bin/prime-select nvidia|intel|on-demand|query
** Message: 18:09:30.534: PRIME: on-demand mode: "1"
** Message: 18:09:30.534: PRIME: is "on-demand" mode supported? yes
На внешнем дисплее нет вывода.
Я также попробовал использовать репозиторий графических драйверов Ubuntu sudo apt-add-repository ppa:graphics-drivers/ppa
и повторил вышеприведенные процедуры с новым рекомендованным драйвером, nvidia-driver-450
однако результаты были схожими: в основном невозможность входа в систему или мерцание экрана входа в систему и, к сожалению, отсутствие вывода через внешнюю видеокарту.
Я также пробовал использовать egpu-switcher
«nvidia-config which , I guess mainly tried to create/modify the
/etc/X11/xorg.conf», однако на моем внешнем дисплее никогда не было вывода (который работает :), потому что работает, когда тот же кабель подключен напрямую к моему ноутбуку).
Если кто-нибудь может предложить что-то, что положит конец этим страданиям счастливым образом для меня и для всего упомянутого оборудования и программного обеспечения, я буду очень признателен :)
Спасибо!
Обновлять
Запуск nvidia-settings
регистрирует следующее:
ERROR: Unable to load info from any available system
(nvidia-settings:20812): GLib-GObject-CRITICAL **: 01:58:56.002: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
** Message: 01:58:56.005: PRIME: Requires offloading
** Message: 01:58:56.005: PRIME: is it supported? yes
** Message: 01:58:56.039: PRIME: Usage: /usr/bin/prime-select nvidia|intel|on-demand|query
** Message: 01:58:56.039: PRIME: on-demand mode: "1"
** Message: 01:58:56.039: PRIME: is "on-demand" mode supported? yes
решение1
После долгих баталий мне все-таки удалось решить свою проблему, в основном благодаря этому комментарию:https://forums.developer.nvidia.com/t/nvidia-xconfig-не-делает-то-что-я-хочу-и-не-делает-настроек-nvidia/107883/7
Итак, я думаю, что жизненно важно понимать, что xorg.conf
не могу помочь вам в этом контексте. Независимо от того, что я делал, я не смог получить никаких результатов, пока у меня был xorg.conf
.
Мне помогло следующее:
- Удалите все, что связано с nvidia, что вы, возможно, пробовали: sudo apt --purge remove 'nvidia-*'
- Загрузите последнюю версию драйвера Nvidia с сайта nvidia и сделайте его исполняемым.
- перезагрузитесь в режиме восстановления (или без запущенного сервера ax) и запустите установщик драйвера, даже если он сообщает, что в вашей системе не найдено ни одного графического процессора
- удалите все,
/etc/X11/xorg.conf
что у вас есть reboot
обычно- Установите
nvidia-prime
, если он еще не установлен sudo prime-select nvidia
- Обновить
/usr/share/X11/xorg.conf.d/10-amdgpu.conf
заменить драйвер наmodesetting
Section "OutputClass"
Identifier "AMDgpu"
MatchDriver "amdgpu"
Driver "modesetting"
EndSection
- Обновите примерно так:
Section "OutputClass"
Identifier "nvidia"
MatchDriver "nvidia-drm"
Driver "nvidia"
Option "AllowEmptyInitialConfiguration"
ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
Option "PrimaryGPU" "Yes"
Option "AllowExternalGpus" "True"
EndSection
- Создайте два файла
optimus.desktop
в/etc/xdg/autostart/
и ,/usr/share/gdm/greeter/autostart/
содержащие:
[Desktop Entry]
Type=Application
Name=Optimus
Exec=sh -c "xrandr --setprovideroutputsource modesetting 0; xrandr --auto"
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer
(@generix говорит об этом, modesetting NVIDIA-0;
но у меня это никогда так не работало. Однако это работает с modesetting 0;
)
reboot
Проверьте, что все хорошо, запустив:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep vendor
Если строк с nvidia нет, значит все плохо. В моем случае я получаю:
server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation
еще одна проверка заключается в том, что при запуске nvidia-smi
будут выведены хотя бы некоторые процессы.
И я получаю сигнал с видеокарты NVIDIA на внешний дисплей, как я и хотел :)
Спасибо ;)
решение2
Также найденорешениеот @bluehipy очень помог мне настроить мой Acer Predator Helios 300 под управлением Ubuntu 20.04 для работы с внешним монитором и правильно установить стек NVIDIA/CUDA для работы с глубоким обучением, поскольку он вызывал проблемы.
Я нашел эту ветку только тогда, когда задумался о том, чтобы вернуть Acer Predator Helios 300 и посмотреть, подойдет ли Dell XPS 13 с eGPU для рабочего процесса типа «тонкий клиент» при локальной отладке моделей машинного обучения/анализа данных и реальном обучении в облаке.
Так что, может, стоит внести небольшие изменения в изначальную инструкцию, если кто-то еще испытывает трудности с работой своего ноутбука?
Предварительные условия:
sudo apt install gcc make mesa-utils mpich
Установить драйвер NVIDIA
Мне помогло следующее:
Удалите все, что связано с NVIDIA, что вы, возможно, пробовали:
sudo apt --purge remove nvidia-*
В оригинальной инструкции говорилось, что нужно загрузить последние версии драйверов, но вы можете захотеть найти версию драйвера на сайтеновейший набор инструментов CUDAтак что проверьте, что это такое, когда вы устанавливаете что-то. Может работать с последним драйвером NVIDIA? Вам нужнопроверьте старые драйверыСкорее всего, она соответствует версии драйвера инструментария CUDA, например, на момент написания этой инструкции соответствующая версия была 470.57.02 (NVIDIA-Linux-x86_64-470.57.02.run).
перезагрузитесь в режиме восстановления (или без запущенного сервера ax) и запустите установщик драйвера, даже если он сообщает, что в вашей системе не найдено ни одного графического процессора (перейдите в режим root и т. д
cd ../home/username/Downloads
../NVIDIA-Linux-x86_64-470.74.run
)удалите все,
/etc/X11/xorg.conf
что у вас естьперезагрузите (нажмите
e
на меню grub для Ubuntu и добавьтеnomodeset
в конце)Установите nvidia-prime, если он еще не установлен
sudo prime-select nvidia
Обновить
/usr/share/X11/xorg.conf.d/10-amdgpu.conf
заменить драйвер наmodesetting
Section "OutputClass"
Identifier "AMDgpu"
MatchDriver "amdgpu"
Driver "modesetting"
EndSection
- Создайте файл конфигурации nvidia (
sudo gedit /usr/share/X11/xorg.conf.d/10-nvidia.conf
) примерно следующего содержания:
Section "OutputClass"
Identifier "nvidia"
MatchDriver "nvidia-drm"
Driver "nvidia"
Option "AllowEmptyInitialConfiguration"
ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
Option "PrimaryGPU" "Yes"
Option "AllowExternalGpus" "True"
EndSection
10 Создайте два файла optimus.desktop
в /etc/xdg/autostart/
и /usr/share/gdm/greeter/autostart/
содержащих:
[Desktop Entry]
Type=Application
Name=Optimus
Exec=sh -c "xrandr --setprovideroutputsource modesetting 0; xrandr --auto"
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer
Изменить grubтак что nomodeset присутствует каждый раз:
sudo gedit /etc/default/grub
перезагрузить
Проверьте, что все в порядке, выполнив:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep vendor
Проверьте, что
nvidia-smi
вы перечислили хотя бы некоторые процессы.
| NVIDIA-SMI 470.57.02 Driver Version: 470.57.02 CUDA Version: 11.4 | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M.
| 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A
| N/A 42C P8 14W / N/A | 264MiB / 5946MiB | 1% Default
Установить набор инструментов CUDA
Новейший набор инструментов CUDAна момент инструкции был cuda_11.4.2_470.57.02_linux.run
установлен так, что без переустановки драйвера NVIDIA
wget https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/cuda_11.4.2_470.57.02_linux.run
sudo sh cuda_11.4.2_470.57.02_linux.run
Проверьте установку CUDA
Видетьhttps://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#install-samples
Предварительные условия:(если вы хотите, чтобы все образцы были скомпилированы правильно)От:
sudo apt-get install g++ freeglut3-dev build-essential libx11-dev \
libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev libfreeimage-dev
например ./deviceQuery
возвращает:
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "NVIDIA GeForce RTX 3060 Laptop GPU"
CUDA Driver Version / Runtime Version 11.4 / 11.4
CUDA Capability Major/Minor version number: 8.6
Total amount of global memory: 5947 MBytes (6235422720 bytes)
(030) Multiprocessors, (128) CUDA Cores/MP: 3840 CUDA Cores
GPU Max Clock rate: 1425 MHz (1.42 GHz)
...
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 11.4, CUDA Runtime Version = 11.4, NumDevs = 1
Result = PASS
установка cudnn
См. руководство отhttps://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
Загрузите cuDNN v8.2.4 (2 сентября 2021 г.) для CUDA 11.4
-> Библиотека cuDNN для Linux (x86_64), напримерcudnn-11.4-linux-x64-v8.2.4.15.tgz
решение3
У меня похожая конфигурация: NUC с Ubuntu Mate 20.4 и Razor Core X с NVidia RTX 2060 Super.
В принципе, я был в той же точке, что и вы, и ничего не работало. Потом я что-то напутал и пришлось переустанавливать Ubuntu. Однако я сделал это с подключенным корпусом eGPU. Во время установки драйверы NVidia 440 были установлены автоматически.
В этот момент я нашел следующий пост:
С помощью скрипта, предоставленного в репозитории, я наконец смог заставить GPU работать! Я могу получить доступ к CUDA, а также использовать два внешних монитора с eGPU.
Надеюсь, этот скрипт поможет и вам. Удачи.