Como configurar o igpu para xserver e nvidia gpu for cuda?

12

Ubuntu 16.04

Saída de uname -a:

Linux HOST 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Grau de mesa:

  • CPU: Intel
  • GPU: Nvidia com 361,42

O que eu quero:

  • a GPU intel deve executar o xserver e meu monitor, que está conectado ao DP integrado
  • a GPU nvidia deve ser usada apenas para computação específica da CUDA etc.
  • controle total sobre a nvidia gpu (tempo real, estatísticas, velocidade dos ventiladores temporários ...)

Meu problema:

  • nem nvidia-sminem nvidia-settingstrabalho e eu não posso controlar minha GPU NVIDIA (os erros são citados mais abaixo)

Minha história:

Após o breve resumo do meu problema, quero mergulhar no tópico; Desde o lançamento do Ubuntu 16.04, estou mexendo e não consegui o seguinte:

  • Quero que minha intel GPU (i7 6700K) conduza meu Xserver e tudo o que estiver associado a ele.
  • Quero que minha GPU nvidia dedicada seja usada apenas para computação baseada em Cuda e similares.
  • Adicionarei mais de uma GPU nvidia ao sistema, depois que meus problemas forem resolvidos.

Um breve resumo do meu estado inicial:

Instalei os drivers proprietários para nvidia e intel (intel-microcode e nvidia-361.42) via inicialização segura apt-get e disabled via mokutul --disable-validation.
Então eu configurei a nvidia-prime para usar o cartão intel.
Depois editei o meu xorg.conf para conter apenas uma tela com intel gpu e intel driver. (peça detalhes, se necessário)
Testando a GPU para renderização com o Blender, tudo parecia bem, exceto que eu não conseguia nenhuma estatística das minhas configurações de gpu e nvidia pareciam vazias.

Erros:

sudo nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

O que aprendi até agora em todas as minhas tentativas e pesquisas desde o lançamento (versão curta, solicite detalhes a qualquer momento):

Meus dois problemas estão relacionados, mas não são os mesmos:

Nvidia-settings Empty:

  • isso ocorre porque essas configurações são exibidas apenas quando há um Xserver conectado à GPU nvidia
  • a solução para isso seria adicionar uma nova tela no xorg.conf que força e xserver não utilizado a rodar na GPU nvidia
  • mas atualmente isso não é possível (veja outro problema) e não é desejado, pois eu quero que a GPU da nvidia se concentre no Cuda

Nvidia-smi não está funcionando:

  • bbswitch não é um problema, pois minha GPU (550ti) não suporta (erros no dmesg)
  • nvidia prime altera a entrada de x86_64-linux-gnu_gl_conf para /usr/lib/nvidia-361/ld.so.conf(GPU nvidia selecionada) ou /usr/lib/nvidia-361-prime/ld.so.conf(GPU intel selecionada)
  • faltam caminhos essenciais para a configuração da seleção intel para os módulos essenciais da nvidia, todos presentes no conf for nvidia selection
  • ao mudar para a nvidia via prime-select, não tenho um Xserver porque o monitor está conectado à GPU integrada, mas ao fazer login em um console virtual, a nvidia-smi funciona

Minha suposição:

  • Nvidia prime é ruim e não quer do jeito que eu quero.
  • Eu tenho que de alguma forma superar o prime e configurar o sistema (mesmo escrevendo manualmente novas configurações?)

Minhas tentativas:

  • Tentei desinstalar a nvidia-prime, mas só reconheci depois que isso não pode funcionar. Quando o arquivo conf para x86_64-linux-gnu_gl_conf é excluído, o resultado é uma bagunça pura ...
  • Até tentei adicionar os caminhos ausentes aos arquivos x86_64-linux-gnu_gl_conf manualmente, mas não sabia realmente o que estava fazendo e não obtive sucesso.

Minhas perguntas:

1) Como posso resolver o problema da nvidia-smi? Estou no caminho certo? Alguém tem instruções de como eu poderia proceder?

2) É possível ativar o controle do ventilador e outros controles para a nvidia gpu (coolbits no xorg.conf) sem um Xserver na gpu (sem uma tela para a gpu no xorg.conf)?

Muito obrigado antecipadamente por quaisquer respostas. Eu literalmente penteei a web, o pente sendo meu problema.
Se eu perdi alguma coisa importante, informe-me e não hesite em solicitar arquivos de log etc.

OBRIGADO

Imagens

Minha imagem da guia do driver adicional: insira a descrição da imagem aqui

winnetou
fonte
Eu também criou uma pergunta barra de lançamento: answers.launchpad.net/ubuntu/+question/294621
winnetou
talvez eu não tenha descrito meu processo de instalação corretamente: após a instalação da nvidia-drivers via apt-get, também é verificado Drivers adicionais, como você disse, e os drivers corretos já foram selecionados. Eu incluí uma captura de tela. os drivers estão presentes e se eu mudar a nvidia-prime para a nvidia-gpu tudo funcionará. alterar essa configuração não pode instalar um driver de todo, na verdade, a sua parte do condutor eo trabalho ainda não vai sem ele beeing presente
winnetou
era um ubuntu limpa 16.04 instalar em cada inicialização i atualizar e melhorar o apt-get, então eu acho que tenho as mais recentes atualizações oficiais instalado
winnetou
Eu sei que os drivers são usados ​​pelo sistema, pois eu posso usar o CUDA na GPU nvidia. Mas nem todos os nvidia-módulos são carregados na inicialização, para que nvidia-SMI por exemplo Misses libs .... se eu entendo o meu problema corretamente
winnetou

Respostas:

4

A resposta aceita usa o servidor X para ativar os dispositivos Nvidia. Isso não é necessário e significa que o servidor X utilizará alguma memória do cartão.

Em vez disso, nvidia-modprobedeve ser instalado conforme descrito nas Perguntas frequentes do driver (pode ser encontrado no link abaixo).

Portanto, minha solução recomendada é:

1) Instale o driver Nvidia mais recente através do arquivo de execução em ftp://download.nvidia.com/XFree86/Linux-x86_64/ com o sinalizador --no-opengl-filese --dkms.
2) Instalar a correspondente nvidia-modprobeversão através de make alle sudo make installa partir de ftp://download.nvidia.com/XFree86/nvidia-modprobe/

O --dkmssinalizador garante que o módulo do kernel seja recompilado quando você atualizar seu kernel.

leezu
fonte
Isso funcionou para mim. Essa é a resposta mais simples e deve ser a resposta aceita.
Marko Avlijaš
Esta solução não funcionou para mim. Em vez disso, apenas instalei o driver normalmente e adicionei o caminho da nvidia ao LD_LIBRARY_PATH, conforme mencionado abaixo.
Reverso
3

Eu (criador deste post) encontrei a solução que preciso sozinha!

Agora vou explicar a solução para qualquer pessoa que esteja em uma situação semelhante e precise dessa ajuda!

SOLUÇÃO:
INSTALE O NVIDIA DRIVER ATRAVÉS DO RUNFILE FORNECIDO EM http://www.nvidia.com/object/unix.html COM A BANDEIRA "--no-opengl-files" !!

Isso evita que não apenas os arquivos da nvidia opengl substituam os arquivos existentes da mesa, mas também instala o driver sem a nvidia prime !!

Portanto, todos os meus problemas foram resolvidos, simplesmente instalando o driver manualmente, em vez de instalá-lo a partir dos repositórios. O pacote dos repositórios é "Optimus-Friendly" e, portanto, possui todos os causadores de problemas inúteis.

SEGUNDO

o xorg.conf deve ser estendido com outra tela para a (s) GPU (s) dedicada (s) para que ela tenha / possua entradas nas configurações da nvidia.

o meu fica assim

Section "ServerLayout"
    Identifier     "Layout0"
    Screen 0       "intel" 0 0
    Screen 1       "nvidia550ti" 3000 0
EndSection

Section "Device"
    Identifier     "intel"
    Driver         "intel"
    BusID          "PCI:0@0:2:0"
EndSection

Section "Device"
    Identifier     "nvidia550ti"
    Driver         "nvidia"
    BoardName      "GeForce GTX 550ti"
    BusID          "PCI:2@0:0:0"
EndSection

Section "Screen"
    Identifier     "intel"
    Device         "intel"
EndSection

Section "Screen"
    Identifier     "nvidia550ti"
    Device         "nvidia550ti"
    Option         "AllowEmptyInitialConfiguration" "on"
    Option         "Coolbits" "4"
    Option         "ConstrainCursor" "on"
EndSection
winnetou
fonte
1
Oi. A resposta de leezu é mais simples e talvez você deva aceitar essa?
Marko Avlijaš
Ainda não posso confirmar a resposta do leezu, embora pareça muito promissor para os meus olhos. Se houver mais pessoas relatando que isso funciona, ou finalmente testar sua resposta e puder confirmar, alterarei a resposta aceita. Ele corrige o problema: a nvidia-modprobe não funciona sem um servidor x em execução nessa placa.
Winnetou 21/07
Isso não funciona se você remover todos os drivers da nvidia existentes e iniciar tudo de novo. Diz isso NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
AfzalivE 25/10
1

Eu obtive a configuração que você deseja (eu também queria;)):

  • a GPU intel deve executar o xserver e meu monitor, que está conectado ao DP integrado
  • a GPU nvidia deve ser usada apenas para computação específica da CUDA etc.
  • controle total sobre a nvidia gpu (tempo real, estatísticas, velocidade dos ventiladores temporários ...)

usando bumblebee.

Mas antes de entrar em alguns detalhes, devo avisar que, ao alterar a configuração da nvidia-settings ou do xorg.conf ou nvidia prime, você deve reiniciar o sistema (talvez você já saiba). Não reiniciar pode deixar o sistema em um estado não consistente.


Na minha configuração, não toquei xorg.conf. Fazer isso por mim sempre foi fonte de dor. Por favor, deixe-o no estado original. Se você não quiser executar uma nova instalação, poderá encontrar alguns backups em /etc/X11/( ls /etc/X11/xorg.conf*).

O primeiro passo é tentar fazer o nvidia-settingstrabalho. Se você conseguir fazer isso, poderá usar a nvidia PRIME para alternar para a GPU intel, como mencionou que já fez. É necessário ter o ponto principal da nvidia para a GPU intel se você quiser usar a GPU NVIDIA apenas para cálculos CUDA (é especialmente necessário se você quiser usar o depurador cuda cuda-gdb).

Depois disso, você pode tentar instalar o zangão :

sudo apt install bumblebee

Reinicie. Você pode monitorar o estado do zangão usando

sudo service bumblebeed status

ou

bumblebeed -vv

O que o zangão faz é ativar a GPU NVIDIA e tentar inserir o driver da nvidia no kernel somente quando necessário. Você pode usar o zangão pré-pendente optirunpara o comando que deseja executar.

Para fazer o zangão funcionar, tive que editar manualmente /etc/bumblebee/bumblebee.confpara definir corretamente o nome e o caminho do driver da nvidia.

[...]
Driver=nvidia
[...]
KernelDriver=nvidia_361
[...]
LibraryPath=/usr/lib/nvidia-361:/usr/lib32/nvidia-361

Então, depois de um sudo service bumblebeed restarteu consegui ativar o sistema de abelha.

De fato nvidia-smiretorna

$ nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

mas optirun nvidia-smi:

$ optirun nvidia-smi
Fri Jun 17 11:47:48 2016       
+------------------------------------------------------+                       
| NVIDIA-SMI 361.42     Driver Version: 361.42         |                       
|-------------------------------+----------------------+----------------------+
| 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 970M    Off  | 0000:01:00.0     Off |                  N/A |
| N/A   53C    P1    18W /  N/A |     18MiB /  3071MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     20678    G   /usr/lib/xorg/Xorg                               4MiB |
+-----------------------------------------------------------------------------+

Espero que isto ajude.

Michele
fonte
boa resposta! MAS eu cansei o Bumblebee com o ubuntu 15.10 e o mesmo hardware e ele ficou bagunçado. Tanto, que fiz uma nova instalação do 16.04 depois que ele ficou disponível. Foi muito pior. Mesmo o modo de recuperação não inicializou corretamente ... Então, eu jurei que não usaria mais o zangão. Outro problema com a abelha foi (Eu não sei como você contornado este) foi, que a minha GPU dedicada não suporta bbswitch, então eu tenho erros, que a GPU couln't ser desligado corretamente
winnetou
Mas, teoricamente, essa é uma resposta possível! Mas não aquele que estou procurando :(.
winnetou
Outro MAS: (não sei mais, se isso funcionou na minha tentativa) As configurações da nvidia mostram a GPU (sudo optirun nvidia-settings, é claro)? Você é capaz de controlar a velocidade do ventilador, tensão etc? Se bem me lembro, essas configurações são possíveis apenas em nvidia-settings, depois de ativar os coolbits no arquivo xorg.conf. nvidia-SMI só lhe dá um monitor ..... por favor, corrija se eu estiver errado
winnetou
E outro grande ponto de interrogação é: O Bumblebee funciona bem se eu tiver mais de um gpu dedicado? Esse caso de usuário (igpu + gpu) já não é recomendado para o zangão em gpus não móveis, mas ter mais de um d-gpu é uma nova história para o zangão.
winnetou
@winnetou você absolutamente certo sobre mais de uma GPU - é uma boa pergunta. Outra questão é que a nvidia-docker não funciona como esperado, provavelmente.
Vskubriev 17/08/19
1

Eu reinstalei os drivers da nvidia sem o opengl, como mencionado nas soluções acima, mas não funcionou para mim. Além disso, essas soluções são bastante insatisfatórias, pois implicam na remoção de alguma capacidade dos drivers (opengl).

Encontrei uma solução muito mais simples, para a qual você não precisa reinstalar o driver:

  • Eu instalei os drivers da nvidia normalmente
  • No guia da nvidia-settings, em perfis PRIME, eu escolho a placa gráfica Intel como uma GPU principal
  • Após a reinicialização, a nvidia-smi não funciona, mas eu corrigi adicionando / usr / lib / nvidia-387 ao caminho das bibliotecas:
    export LD_LIBRARY_PATH=/usr/lib/nvidia-387:$LD_LIBRARY_PATH

Observe que, dependendo do driver instalado, pode ser necessário adicionar outra pasta ao caminho da sua biblioteca, por exemplo / usr / lib / nvidia-384 .
Você pode adicionar este comando ao arquivo ~ / .bashrc para exportar automaticamente o caminho ao carregar um novo bash.

inverter
fonte
O que acontece se você atualizar o driver da nvidia? Você precisa alterar manualmente o caminho da biblioteca?
liang
Eu acho que isso não deve ser um problema se o driver ainda estiver na mesma pasta. Se a pasta mudar, provavelmente você deve alterar o caminho da biblioteca.
Reverso
0

principalmente como um lembrete para mim: no ubuntu 18.04, use o igpu para renderizar e nvidia gpu para cuda, instale drivers padrão da nvidia, abra as configurações da nvidia e defina o intel gpu. Depois disso, lista os drivers nouveau da lista negra e parte dos drivers da nvidia:

abra o /etc/modprobe.d/blacklist-nvidia.conf e as linhas de comentário desta maneira:

#blacklist nvidia
blacklist nvidia-drm
#blacklist nvidia-modeset
#alias nvidia off
alias nvidia-drm off
#alias nvidia-modeset off

depois disso, abra o /etc/modprobe.d/blacklist-nvidia-nouveau.conf e adicione as seguintes linhas:

blacklist nouveau
options nouveau modeset=0

para ter certeza de que o nouveau está desativado, você pode colocá-los na lista negra em /etc/modprobe.d/blacklist.conf: no final, adicione:

#Blacklist nouveau drivers
blacklist nouveau
blacklist lbm-nouveau
alias nouveau off
alias lbm-nouveau off

depois reinicie.

digite nvidia-smipara verificar se a nvidia está carregada e digite lspci -nnk | grep -iA2 3Dpara verificar o driver em uso é nvidia e não nouveau.

user840583
fonte