
Obviamente, sou um usuário novato do Ubuntu, então, por favor, perdoe quaisquer erros terríveis que eu possa cometer ou exija conhecimento que talvez não tenha: D
O comportamento esperado
Eu tenho um laptop Dell XPS13
rodando recentemente instalado Ubuntu 20.04 focal
e quero melhorar a experiência de vídeo com um Nvidia GTX 1660 SUPER
eGPU Razor Core X
, de preferência usando a saída em um monitor externo.
O comportamento real
Nunca consegui nada além de uma tela preta no monitor externo.
O que eu tentei
Ativei o suporte Thunderbolt no BIOS e configurei-o para não exigir segurança, para que seja reconhecido assim que eu o conecto. Instalei os drivers listados pelo que ubuntu-driver devices
é principalmente a versão 440 do driver 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
Eu executei sudo ubuntu-driver autoinstall
e reboot
a tela de login continua voltando, embora eu esteja inserindo minha senha corretamente.
Se eu desconectar o eGPU, posso passar pela tela de login.
Se eu reconectá-lo e executar, nvidia-smi
recebo isto:
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 |
+-----------------------------------------------------------------------------+
Outras notas:
- eu não tenho
/etc/X11/xorg.conf
- fica
/usr/lib/modprobe.d/nvidia-graphics-drivers.conf
assim:
blacklist nouveau
blacklist lbm-nouveau
alias nouveau off
alias lbm-nouveau off
Eu corro também nvidia-settings
e recebo isso:
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
Não há saída no monitor externo.
Eu adicionei também tentei com o repositório do driver gráfico do Ubuntu sudo apt-add-repository ppa:graphics-drivers/ppa
e repeti o processo apresentado acima com um driver recém-recomendado, nvidia-driver-450
no entanto, os resultados foram semelhantes, principalmente incapacidade de fazer login ou tela de login piscando e, infelizmente, nenhuma saída através da placa de vídeo externa.
Eu também tentei usar o egpu-switcher
'nvidia-config which , I guess mainly tried to create/modify the
/etc/X11/xorg.conf`, mas nunca houve uma saída no meu monitor externo (o que é funcional :) porque funciona quando o mesmo cabo está conectado diretamente ao meu laptop).
Se alguém puder sugerir algo que acabe com esse sofrimento com um final feliz para mim e para todo o hardware e software mencionado, será muito apreciado :)
Obrigado!
Atualizar
Executar nvidia-settings
está registrando isto:
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
Responder1
Depois de longas batalhas, consegui resolver meu problema com base principalmente neste comentário:https://forums.developer.nvidia.com/t/nvidia-xconfig-doesnt-do-what-i-want-it-to-nor-does-nvidia-settings/107883/7
Então, acho que é vital entender que xorg.conf
não posso te ajudar nesse contexto. Não importa o que eu fiz, não consegui obter nenhum resultado enquanto tinha um arquivo xorg.conf
.
O que funcionou para mim foi:
- Remova todas as coisas da nvidia que você possa ter tentado: sudo apt --purge remove 'nvidia-*'
- Baixe o driver mais recente da Nvidia no site da nvidia e torne-o executável.
- reinicie no modo de recuperação (ou sem o servidor ax em execução) e execute o instalador do driver mesmo que diga que nenhuma GPU foi encontrada em seu sistema
- exclua qualquer um
/etc/X11/xorg.conf
que você possa ter reboot
normalmente- Instale
nvidia-prime
se ainda não estiver instalado sudo prime-select nvidia
- Atualize
/usr/share/X11/xorg.conf.d/10-amdgpu.conf
o driver de substituição commodesetting
Section "OutputClass"
Identifier "AMDgpu"
MatchDriver "amdgpu"
Driver "modesetting"
EndSection
- Atualize para algo como:
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
- Crie dois arquivos
optimus.desktop
contendo :/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 está dizendo aí, modesetting NVIDIA-0;
mas para mim nunca funcionou assim. Porém funciona com modesetting 0;
)
reboot
Teste se está tudo bem executando:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep vendor
Se não retornar linhas com nvidia, não está bom. No meu caso, recebo:
server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation
outra verificação é que a execução nvidia-smi
listaria pelo menos alguns processos.
E recebo sinal do gpu nvidia em um monitor externo, como eu queria :)
Obrigado ;)
Responder2
Também encontradoa soluçãopor @bluehipy muito útil para fazer meu Acer Predator Helios 300 rodando Ubuntu 20.04 funcionar com um monitor externo e ter a pilha NVIDIA/CUDA instalada corretamente para trabalho de aprendizado profundo, pois estava causando problemas.
Eu só encontrei esse tópico quando pensei em realmente devolver o Acer Predator Helios 300 e ver se o Dell XPS 13 com eGPU poderia funcionar para o tipo de fluxo de trabalho "thin client" ao depurar modelos de aprendizado de máquina/ciência de dados localmente e realmente treinar na nuvem.
Então, seria melhor fazer meus pequenos ajustes nas instruções originais se alguém estiver lutando para fazer seu laptop funcionar?
Pré-requisitos:
sudo apt install gcc make mesa-utils mpich
Instale o driver NVIDIA
O que funcionou para mim foi:
Remova todas as coisas da nvidia que você possa ter tentado:
sudo apt --purge remove nvidia-*
As instruções originais diziam que baixava os drivers mais recentes, mas você pode querer que a versão do driver seja encontrada nomais recente kit de ferramentas CUDAentão verifique o que é isso quando você está instalando coisas. Pode funcionar com o driver NVIDIA mais recente? Você precisaverifique os drivers antigosprovavelmente corresponde à versão do driver do kit de ferramentas CUDA, por exemplo, no momento destas instruções, a versão correspondente era 470.57.02 (NVIDIA-Linux-x86_64-470.57.02.run).
reinicie no modo de recuperação (ou sem o servidor ax em execução) e execute o instalador do driver, mesmo que diga que nenhuma GPU foi encontrada em seu sistema (descarte para root e, por exemplo,
cd ../home/username/Downloads
e./NVIDIA-Linux-x86_64-470.74.run
)exclua qualquer um
/etc/X11/xorg.conf
que você possa terreinicie (acesse
e
o menu grub do Ubuntu e adicione onomodeset
no final)Instale nvidia-prime se ainda não estiver instalado
sudo prime-select nvidia
Atualizar
/usr/share/X11/xorg.conf.d/10-amdgpu.conf
substituir driver pormodesetting
Section "OutputClass"
Identifier "AMDgpu"
MatchDriver "amdgpu"
Driver "modesetting"
EndSection
- Crie o arquivo de configuração da nvidia (
sudo gedit /usr/share/X11/xorg.conf.d/10-nvidia.conf
) com algo como:
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 Crie dois arquivos optimus.desktop
contendo :/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
Modifique o grubpara que o nomodeset esteja sempre presente:
sudo gedit /etc/default/grub
reinício
Teste se está tudo bem executando:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep vendor
Verifique se isso
nvidia-smi
listaria pelo menos alguns processos.
| 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
Instale o kit de ferramentas CUDA
Kit de ferramentas CUDA mais recenteno momento da instrução foi cuda_11.4.2_470.57.02_linux.run
instalado de forma que sem reinstalar o driver 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
Instalação do kit de ferramentas CUDA
Verifique a instalação do CUDA
Verhttps://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#install-samples
Pré-requisitos:(se você quiser que todos os exemplos sejam compilados corretamente)De:
sudo apt-get install g++ freeglut3-dev build-essential libx11-dev \
libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev libfreeimage-dev
por exemplo, ./deviceQuery
retorna:
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
instalação cudnn
Veja o guia dehttps://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
Baixe cuDNN v8.2.4 (2 de setembro de 2021), para CUDA 11.4
-> Biblioteca cuDNN para Linux (x86_64), por exemplocudnn-11.4-linux-x64-v8.2.4.15.tgz
Responder3
Eu tenho uma configuração semelhante com um NUC rodando Ubuntu Mate 20.4 e um Razor Core X com NVidia RTX 2060 Super.
Basicamente, eu estava no mesmo ponto que você e nada funcionou. Então eu estraguei alguma coisa e tive que reinstalar o Ubuntu. No entanto, fiz isso com o gabinete eGPU conectado. Durante a instalação, os drivers NVidia 440 foram instalados automaticamente.
Neste momento encontrei o seguinte post:
https://egpu.io/forums/thunderbolt-linux-setup/ubuntu-19-04-easy-to-use-setup-script-for-your-egpu/
Com o script fornecido no repositório finalmente consegui fazer a GPU funcionar! Posso acessar CUDA e também usar dois monitores externos com o eGPU.
Espero que este script possa ajudá-lo também. Boa sorte.