Placa NVIDIA para placa CUDA e AMD para exibição no Ubuntu 16.04

11

Estou usando o Ubuntu 16.04, pois foi o sistema operacional que achei mais conveniente para trabalhar com redes neurais convolucionais (CNN). O processo de instalação do Ubuntu foi bom até que eu quisesse configurar duas placas gráficas no mesmo sistema:

  • NVIDIA 970 GTX
  • AMD R9 380

Eu queria usar minha placa NVIDIA apenas para CUDA, a fim de poder usar toda a sua memória gráfica e a AMD para a interface gráfica do usuário. Para esse fim, todos os monitores serão conectados a esta placa.

Problemas:

  • Quando instalo os drivers da nvidia e do cuda 8.0, tudo parece bem, mas quando instalo o driver da AMD não consigo logar no lightdm.
  • Se eu conectar os monitores nas placas AMD, o lightdm está sendo executado no modo gráfico baixo e nada funciona.
  • Modificar o arquivo xorg.conf não faz nenhuma diferença, pois é substituído pelo gpu-manager

Não encontrei nenhum tutorial explicando como fazer isso.

Marcus
fonte
Recorte e cole a parte da resposta da postagem em uma resposta separada abaixo.
edwinksl
OK eu fiz isso ..
Marcus

Respostas:

11

Antes de começar, recomendo instalar o ssh para poder desligar o sistema remotamente se algo der errado. Para fazer isso, use este comando:

sudo apt-get install ssh

e para desligar o sistema, você deve ssh com outro computador ou dispositivo móvel e use este comando:

sudo shutdown -r now

Passo 1

Antes de tudo, você precisa remover a placa AMD fisicamente, manter sua placa NVIDIA e instalar o CUDA e o driver NVIDIA. Você pode baixar o cuda aqui: https://developer.nvidia.com/cuda-downloads

Verifique se tudo está funcionando usando este comando:

nvidia-smi

Passo 2

Neste ponto, precisamos modificar o grub para iniciar no modo console, pois estamos mexendo com placas gráficas.

Usando seu editor favorito (no meu caso, joe) edite o arquivo de configuração padrão do grub:

sudo joe /etc/default/grub

E mude estas linhas:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
#GRUB_TERMINAL=console

para estes:

GRUB_CMDLINE_LINUX_DEFAULT="text"
GRUB_CMDLINE_LINUX="text"
GRUB_TERMINAL=console

Por fim, atualize o grub usando este comando:

sudo update-grub

etapa 3

Desligue o sistema e remova a placa NVIDIA e conecte a placa AMD. Ligue o computador e instale os drivers gráficos mais recentes da AMD. No meu caso, instalei os drivers usando estes comandos:

wget https://www2.ati.com/drivers/linux/ubuntu/amdgpu-pro-16.40-348864.tar.xz
tar -Jxvf amdgpu-pro-16.40-348864.tar.xz
cd amdgpu-pro-16.40-348864/
./amdgpu-pro-install
sudo usermod -a -G video $USER

Reinicie o seu computador. Agora você pode iniciar o lightdm (a interface do usuário) usando este comando:

sudo service lightdm start

Tudo deve funcionar como esperado e agora você pode configurar seus monitores usando as configurações do sistema.

Passo 4

Encerre seu sistema e agora adicione sua placa NVIDIA e não remova a AMD (nesse momento, você terá duas placas gráficas em seu sistema). Ligue o computador e efetue login usando seu nome de usuário, mas NÃO INICIE O LIGHTDM !!

Nesse ponto, o gpu-manager configurou automaticamente as placas gráficas para o modo console e apenas a AMD para o lightdm (desde que iniciamos o lightdm na etapa anterior). Se rodarmos o lightdm neste momento, o gpu-manager fará uma bagunça. Então agora temos que desativar completamente o gpu-manager. Para esse fim, precisamos modificar o grub novamente:

sudo joe /etc/default/grub

e substitua estas linhas:

GRUB_CMDLINE_LINUX_DEFAULT="text"
GRUB_CMDLINE_LINUX="text"
GRUB_TERMINAL=console

por estes:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nogpumanager"
GRUB_CMDLINE_LINUX=""
#GRUB_TERMINAL=console

Por fim, atualize o grub usando este comando:

sudo update-grub

Etapa 5

Reinicie o sistema e se o lightdm não iniciar corretamente (aparece uma tela preta), pressione Ctrl + F1, faça login no modo console e adicione este comando ao arquivo rc.local:

sudo joe /etc/rc.local

adicione esta linha antes de "exit 0":

service lightdm start

reinicie o sistema e tudo deve funcionar bem agora ...

Em um console, você pode verificar se os dois cads gráficos estão em uso usando este comando:

lspci -nnk | grep -i vga -A3 | grep 'in use'

Kernel driver in use: amdgpu
Kernel driver in use: nvidia

e nvidia-smi deve funcionar bem. mostrando que você está usando 0 megabytes de memória:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.26                 Driver Version: 375.26                    |
|-------------------------------+----------------------+----------------------+
| 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 970     Off  | 0000:02:00.0     Off |                  N/A |
| 30%   42C    P0    36W / 163W |      0MiB /  4036MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
Marcus
fonte
Eu tenho tentado fazer isso funcionar por alguns dias. Qual kernel você usou no Ubuntu 16.04?
Aaron Skomra
Você conseguiu?
Szymon Roziewski
11
@ d84_n1nj4 Não experimentei o ubuntu 18.04, talvez funcione diretamente sem ter que executar todas essas etapas ... seria bom se você pudesse compartilhar sua experiência.
Marcus
11
@ Marcus eu vou fazer isso. Deveria ter iniciado / feito até segunda-feira. Bem, assim que a Amazon
enviar
2
@Marcus ele realmente trabalhou diretamente após a ligação - eu não ter que passar por todas as etapas ^^
d84_n1nj4