Tarjeta NVIDIA para CUDA y tarjeta AMD para mostrar en Ubuntu 16.04

11

Estoy usando Ubuntu 16.04, ya que es el sistema operativo que encontré más conveniente para trabajar con redes neuronales convolucionales (CNN). El proceso de instalación de Ubuntu estuvo bien hasta que quise configurar dos tarjetas gráficas en el mismo sistema:

  • NVIDIA 970 GTX
  • AMD R9 380

Quería usar mi tarjeta NVIDIA solo para CUDA para poder usar toda su memoria gráfica y el AMD para la interfaz gráfica de usuario. Para este fin, todos los monitores se conectarán a esta tarjeta.

Problemas:

  • Cuando instalo los controladores nvidia y cuda 8.0, todo parece estar bien, pero cuando instalo el controlador AMD no puedo iniciar sesión en lightdm.
  • Si conecto los monitores en las tarjetas AMD, dice que lightdm se está ejecutando en modo gráfico bajo y nada funciona.
  • Modificar el archivo xorg.conf no hace ninguna diferencia ya que lo sobrescribe el gpu-manager

No pude encontrar ningún tutorial que explicara cómo hacerlo.

Marcus
fuente
Corte y pegue la parte de respuesta de la publicación en una respuesta separada a continuación.
edwinksl
OK lo hice ..
Marcus

Respuestas:

11

Antes de comenzar, recomiendo instalar ssh para poder apagar el sistema de forma remota si algo sale mal. Para hacerlo, use este comando:

sudo apt-get install ssh

y para apagar su sistema, debe ssh con otra computadora o dispositivo móvil y usar este comando:

sudo shutdown -r now

Paso 1

En primer lugar, debe extraer la tarjeta AMD físicamente, conservar su tarjeta NVIDIA e instalar CUDA y el controlador NVIDIA. Puede descargar cuda desde aquí: https://developer.nvidia.com/cuda-downloads

Asegúrese de que todo funcione con este comando:

nvidia-smi

Paso 2

En este punto, tenemos que modificar grub para comenzar en modo consola ya que estamos jugando con tarjetas gráficas.

Usando su editor favorito (en mi caso Joe) edite el archivo de configuración predeterminado de grub:

sudo joe /etc/default/grub

Y cambia estas líneas:

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

a estos:

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

Finalmente actualice grub usando este comando:

sudo update-grub

Paso 3

Apague su sistema y retire la tarjeta NVIDIA y conecte la tarjeta AMD. Encienda su computadora e instale los últimos controladores gráficos AMD. En mi caso instalé los controladores usando estos 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

Reinicia tu computadora. Ahora puede iniciar lightdm (la interfaz de usuario) con este comando:

sudo service lightdm start

Todo debería funcionar como se esperaba y ahora puede configurar sus pantallas utilizando la configuración del sistema.

Paso 4

Apague su sistema y ahora agregue su tarjeta NVIDIA y no quite el AMD (en este punto tendrá dos tarjetas gráficas en su sistema). ¡Encienda su computadora e inicie sesión con su nombre de usuario pero NO COMIENCE LIGHTDM!

En este punto, el gpu-manager ha configurado automáticamente ambas tarjetas gráficas para el modo de consola y solo AMD para lightdm (desde que comenzamos lightdm en el paso anterior). Si ejecutamos lightdm en este punto, gpu-manager hará un desastre. Entonces ahora tenemos que deshabilitar completamente el gpu-manager. Para este fin tenemos que modificar grub nuevamente:

sudo joe /etc/default/grub

y reemplace estas líneas:

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

por estos:

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

Finalmente actualice grub usando este comando:

sudo update-grub

Paso 5

Reinicie su sistema y si lightdm no se inicia correctamente (aparece una pantalla en negro), debe presionar Ctrl + F1, iniciar sesión en modo consola y agregar este comando al archivo rc.local:

sudo joe /etc/rc.local

agregue esta línea antes de "salir 0":

service lightdm start

reinicie su sistema y todo debería funcionar bien ahora ...

En una consola, puede verificar que ambas tarjetas gráficas estén en uso con este comando:

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

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

y nvidia-smi debería funcionar bien. mostrando que está utilizando 0 megabytes de memoria:

+-----------------------------------------------------------------------------+
| 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
fuente
He estado tratando de hacer que esto funcione durante un par de días. ¿Qué kernel usaste en Ubuntu 16.04?
Aaron Skomra
¿Has tenido éxito?
Szymon Roziewski
1
@ d84_n1nj4 No probé en ubuntu 18.04, tal vez funciona directamente sin tener que hacer todos estos pasos ... sería bueno que pudieras compartir tu experiencia.
Marcus
1
@ Marcus lo haré. Debería haber comenzado / hecho antes del lunes. Bueno, tan pronto como Amazon envíe mi monitor 4K en
espera
2
@ Marcus en realidad funcionó directamente después de la conexión: no tuve que seguir ningún paso ^^
d84_n1nj4