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

8

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

Classificação da área de trabalho:

  • 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 onboard
  • a GPU nvidia só deve ser usada para computação específica CUDA, etc.
  • controle total sobre o nvidia gpu (tempo real, estatísticas, velocidades dos ventiladores dos temporários ...)

Meu problema:

  • nem nvidia-smi nor nvidia-settings work e não consigo controlar minha nvidia GPU (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 conseguindo o seguinte:

  • Eu quero que minha GPU Intel (i7 6700K) leve meu Xserver e tudo associado a ele.
  • Eu quero que minha GPU nvidia dedicada seja usada apenas para computação baseada em Cuda e afins.
  • Vou adicionar mais de uma GPU da nvidia ao sistema, depois de resolver meus problemas.

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 nvidia-prime para usar o cartão intel.
Então eu editei 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 consegui obter nenhuma estatística do meu gpu e nvidia - as configurações 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, peça 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ó aparecem, quando há um Xserver conectado ao GPU da nvidia
  • a solução para isso seria adicionar uma nova tela no xorg.conf que force e xserver não utilizado para rodar no GPU nvidia
  • mas isso não é possível (veja outro problema) e não é desejado, já que eu quero que a GPU nvidia se concentre em Cuda

Nvidia-smi não funciona:

  • bbswitch não é um problema, pois meu GPU (550ti) não suporta (erros no dmesg)
  • nvidia prime altera a entrada para x86_64-linux-gnu_gl_conf para /usr/lib/nvidia-361/ld.so.conf (nvidia GPU selecionado) ou /usr/lib/nvidia-361-prime/ld.so.conf (GPU Intel selecionado)
  • a configuração para a seleção intel está faltando caminhos essenciais para os módulos nvidia essenciais que estão todos presentes na seleção conf nvidia
  • ao mudar para nvidia via prime-select, eu não tenho um Xserver como o monitor está conectado à GPU integrada, mas fazendo o login em um console virtual nvidia-smi funciona

Minha suposição:

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

Minhas tentativas:

  • Eu tentei desinstalar o nvidia-prime, mas só depois reconheci que isso não funciona. Quando o arquivo conf para x86_64-linux-gnu_gl_conf é deletado, o resultado é uma bagunça pura ...
  • Eu até tentei adicionar os caminhos que faltavam aos arquivos x86_64-linux-gnu_gl_conf manualmente, mas eu realmente não sabia o que estava fazendo e não tive sucesso.

Minhas perguntas:

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

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

Muito obrigado antecipadamente por qualquer resposta. Eu literalmente vasculhei a teia, o pente sendo meu problema.
Se eu perdi alguma coisa importante, por favor me diga e não hesite em solicitar arquivos de log, etc.

OBRIGADO

Imagens

Minha imagem da guia do driver adicional:

    
por winnetou 30.05.2016 / 17:09

5 respostas

2

Eu (criador desta postagem) encontrei a solução que preciso sozinha!

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

SOLUTION:
INSTALE O DRIVER DA NVIDIA ATRAVÉS DO RUNFILE FORNECIDO NO link COM A BANDEIRA "--no-opengl-files" !!

Isso impede que não apenas os arquivos nvidia opengl sobrescrevam os arquivos mesa existentes, mas também instale o driver sem o nvidia prime !!

Assim, todos os meus problemas são resolvidos, simplesmente instalando o driver manualmente, em vez de instalá-lo nos repositórios. O pacote dos repositórios é "Amigável ao Optimus" e, portanto, possui todos os criadores de problemas inúteis.

SEGUNDO

o xorg.conf tem que ser estendido com outra tela para as GPUs dedicadas, para que elas tenham entradas na nvidia-settings.

minha parece com isso

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
    
por winnetou 27.06.2016 / 19:46
2

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

Em vez disso, nvidia-modprobe deve ser instalado conforme descrito no FAQ do driver (pode ser encontrado no link abaixo).

Então, minha solução recomendada é:

1) Instale o driver mais recente da Nvidia através do runfile de ftp://download.nvidia.com/XFree86/Linux -x86_64 / com o sinalizador --no-opengl-files e --dkms .
2) Instale a versão nvidia-modprobe correspondente via make all e sudo make install de ftp://download.nvidia.com / XFree86 / nvidia-modprobe /

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

    
por leezu 31.01.2017 / 08:04
1

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

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

usando bumblebee .

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

Na minha configuração, não toquei em xorg.conf . Fazer isso para mim sempre foi fonte de dor. Por favor, deixe-o para o 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 nvidia-settings funcionar. Se você conseguir fazer isso, você pode usar o nvidia PRIME para mudar para o GPU Intel, como você mencionou que já fez. Ter nvidia prime point para a GPU Intel é necessário 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 bumblebee :

sudo apt install bumblebee

Reinicie. Você pode monitorar o estado do bumblebee usando

sudo service bumblebeed status

ou

bumblebeed -vv

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

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

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

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

Na verdade, nvidia-smi retorna

$ 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 isso ajude.

    
por Michele 17.06.2016 / 11:58
1

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

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

  • eu instalei os drivers nvidia normalmente
  • Na interface nvidia-settings, perfis PRIME nulos, escolho a placa gráfica da Intel como GPU principal
  • Após a reinicialização, o nvidia-smi não funciona, mas consertei 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, talvez seja necessário adicionar outra pasta ao caminho da 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.

    
por revers 12.01.2018 / 12:18
0

principalmente como um lembrete para mim: no ubuntu 18.04 para usar o igpu para renderizar e nvidia gpu para o cuda, instalar drivers nvidia padrão, abrir nvidia-settings e configurar para usar o intel gpu. Depois disso, drivers nouveau da lista negra e parte dos drivers da nvidia:

abra /etc/modprobe.d/blacklist-nvidia.conf e comente as linhas desta forma:

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

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

blacklist nouveau
options nouveau modeset=0

para ter certeza de que o nouveau está desativado, você também 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-smi para verificar se nvidia está carregada e digite lspci -nnk | grep -iA2 3D para verificar se o driver em uso é nvidia e não nouveau.

    
por user840583 14.06.2018 / 14:54