¿Cómo configurar igpu para xserver y nvidia gpu para cuda?

12

Ubuntu 16.04

Salida 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

Grado de escritorio:

  • CPU: Intel
  • GPU: Nvidia con 361.42

Lo que quiero:

  • la GPU de Intel ejecutará el servidor x y mi monitor, que está conectado al DP integrado
  • la GPU nvidia solo se utilizará para el cálculo específico de CUDA, etc.
  • control total sobre el nvidia gpu (tiempo real, estadísticas, velocidades del ventilador de temperatura ...)

Mi problema:

  • ni nvidia-smitampoco nvidia-settingsel trabajo y no puedo controlar mi GPU NVIDIA (los errores se citan más abajo)

Mi historia:

Después del breve resumen de mi problema, quiero profundizar en el tema; Desde el lanzamiento de Ubuntu 16.04, estoy jugando y no puedo lograr lo siguiente:

  • Quiero que mi GPU Intel (i7 6700K) controle mi Xserver y todo lo relacionado con él.
  • Quiero que mi GPU nvidia dedicada solo se use para computación basada en Cuda y similares.
  • Agregaré más de una GPU nvidia al sistema, después de resolver mis problemas.

Un breve resumen de mi estado inicial:

Instalé los controladores propietarios para nvidia e intel (intel-microcode y nvidia-361.42) a través de apt-get y deshabilité el arranque seguro a través de mokutul --disable-validation.
Luego configuré nvidia-prime para usar la tarjeta Intel.
Luego edité mi xorg.conf para contener solo una pantalla con intel gpu y controlador intel. (solicite detalles si es necesario) Al
probar la GPU para renderizar con Blender, todo parecía estar bien, excepto que no pude obtener ninguna estadística de mi gpu y la configuración de nvidia parecía vacía.

Errores:

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.

Lo que he aprendido hasta ahora a través de todos mis intentos e investigaciones desde el lanzamiento (versión corta, solicite detalles en cualquier momento):

Mis dos problemas están relacionados pero no son lo mismo:

Nvidia-settings Empty:

  • Esto se debe a que esta configuración solo aparece cuando hay un servidor X conectado a la GPU NVIDIA
  • la solución para esto sería agregar una nueva pantalla en xorg.conf que obligue a xserver no utilizado a ejecutarse en la GPU nvidia
  • pero esto actualmente no es posible (vea otro problema) y no se desea, ya que solo quiero que la GPU nvidia se centre en Cuda

Nvidia-smi no funciona:

  • bbswitch no es un problema ya que mi GPU (550ti) no lo admite (errores en dmesg)
  • nvidia prime cambia la entrada para x86_64-linux-gnu_gl_conf a /usr/lib/nvidia-361/ld.so.conf(GPU nvidia seleccionada) o /usr/lib/nvidia-361-prime/ld.so.conf(GPU Intel seleccionada)
  • a la configuración de la selección de Intel le faltan rutas esenciales a los módulos nvidia esenciales que están presentes en la selección conf para nvidia
  • al cambiar a nvidia a través de prime-select, no tengo un servidor X ya que la pantalla está conectada a la GPU integrada, pero iniciar sesión en una consola virtual nvidia-smi funciona

Mi suposición:

  • Nvidia Prime es malo y no quiere lo que yo quiero.
  • Tengo que superar de alguna manera Prime y configurar el sistema (¿incluso escribir manualmente nuevas configuraciones?)

Mis intentos:

  • Intenté desinstalar nvidia-prime pero solo reconocí después que esto no puede funcionar. Cuando se elimina el archivo conf para x86_64-linux-gnu_gl_conf, el resultado es un desastre ...
  • Incluso intenté agregar las rutas faltantes a los archivos x86_64-linux-gnu_gl_conf manualmente, pero realmente no sabía lo que estaba haciendo y no tuve éxito.

Mis preguntas:

1) ¿Cómo puedo resolver el problema de nvidia-smi? ¿Estoy en el camino correcto? ¿Alguien tiene instrucciones de cómo podría proceder?

2) ¿Es posible habilitar el control del ventilador y otros controles para el nvidia gpu (coolbits en xorg.conf) sin un Xserver en el gpu (sin una pantalla para el gpu en xorg.conf)?

Muchas gracias de antemano por cualquier respuesta. Literalmente peiné la web, el peine es mi problema.
Si me perdí algo importante, dígame y no dude en solicitar archivos de registro, etc.

GRACIAS

Imágenes

Mi imagen adicional de la pestaña del controlador: ingrese la descripción de la imagen aquí

winnetou
fuente
También creé una pregunta de launchpad: answers.launchpad.net/ubuntu/+question/294621
winnetou
tal vez no describí mi proceso de instalación correctamente: después de instalar nvidia-drivers a través de apt-get también se verifica Controladores adicionales, como dijiste, y los controladores correctos ya estaban seleccionados. Incluí una captura de pantalla. los controladores están presentes y si cambio nvidia-prime a Nvidia-Gpu, todo funciona. cambiar esta configuración no puede instalar un controlador completo, en realidad es parte del controlador y ni siquiera funcionará sin que esté presente
winnetou
fue una instalación limpia de ubuntu 16.04 En cada arranque, actualizo y actualizo apt-get, así que supongo que tengo instaladas las actualizaciones oficiales más recientes
winnetou
Sé que el sistema usa los controladores, ya que puedo usar CUDA en la GPU nvidia. Pero no todos los módulos nvidia se cargan en el arranque, por lo que nvidia-smi, por ejemplo, pierde libs ... SI entiendo mi problema correctamente
winnetou

Respuestas:

4

La respuesta aceptada utiliza el servidor X para habilitar los dispositivos Nvidia. Esto no es necesario y significa que el servidor X usará algo de memoria de la tarjeta.

En su lugar, nvidia-modprobedebe instalarse como se describe en las preguntas frecuentes del controlador (se puede encontrar en el siguiente enlace).

Entonces mi solución recomendada es:

1) Instale el último controlador de Nvidia a través del archivo de ejecución de ftp://download.nvidia.com/XFree86/Linux-x86_64/ con el indicador --no-opengl-filesy --dkms.
2) Instalar la correspondiente nvidia-modprobeversión a través de make ally sudo make installdesde ftp://download.nvidia.com/XFree86/nvidia-modprobe/

El --dkmsindicador se asegura de que el módulo del núcleo se vuelva a compilar cuando actualice su núcleo.

leezu
fuente
Esto funcionó para mí. Esta es la respuesta más simple y debería ser la respuesta aceptada.
Marko Avlijaš
Esta solución no me funcionó. En su lugar, simplemente instalé el controlador normalmente y agregué la ruta nvidia a LD_LIBRARY_PATH como se menciona a continuación.
revierte el
3

¡Yo (creador de esta publicación) encontré la solución que necesito por mi cuenta!

¡Ahora explicaré la solución para cualquier otra persona que se encuentre en una situación similar y necesite esta ayuda!

SOLUCIÓN: ¡
INSTALE EL CONDUCTOR NVIDIA A TRAVÉS DEL ARCHIVO DE FUNCIONAMIENTO PROPORCIONADO EN http://www.nvidia.com/object/unix.html CON LA BANDERA "--no-opengl-files" !!

¡Esto evita que no solo los archivos nvidia opengl sobrescriban los archivos mesa existentes, sino que también instala el controlador sin nvidia prime !!

Entonces, todos mis problemas se resuelven, simplemente instalando el controlador manualmente, en lugar de instalarlo desde los repositorios. El paquete de los repositorios es "Optimus-Friendly" y, por lo tanto, incluye a todos los alborotadores inútiles.

EN SEGUNDO LUGAR

xorg.conf debe ampliarse con otra pantalla para las GPU (s) dedicadas para que tengan / tengan entradas en la configuración de nvidia.

el mío se ve así

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
fuente
1
Hola. La respuesta de leezu es más simple y tal vez deberías aceptarla.
Marko Avlijaš
Todavía no puedo confirmar la respuesta de leezu, aunque me parece muy prometedor. Si hay más personas informando que funciona, o finalmente puedo probar su respuesta y puedo confirmar, cambiaré la respuesta aceptada. Él soluciona el problema, que nvidia-modprobe no funciona sin un servidor x que se ejecuta en esa tarjeta.
winnetou
Esto no funciona si elimina todos los controladores nvidia existentes y comienza de nuevo. Dice esto 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
1

Obtuve la configuración que desea (también la quería;)):

  • la GPU de Intel ejecutará el servidor x y mi monitor, que está conectado al DP integrado
  • la GPU nvidia solo se utilizará para el cálculo específico de CUDA, etc.
  • control total sobre el nvidia gpu (tiempo real, estadísticas, velocidades del ventilador de temperatura ...)

utilizando bumblebee.

Pero antes de entrar en detalles, debo advertirle que al cambiar la configuración de nvidia-settings o xorg.conf o nvidia prime, debe reiniciar su sistema (tal vez ya lo sepa). No reiniciar podría dejar el sistema en un estado no coherente.


En mi configuración no toqué xorg.conf. Hacerlo para mí siempre ha sido fuente de dolor. Por favor, déjelo al estado original. Si no desea realizar una instalación nueva, puede encontrar algunas copias de seguridad en /etc/X11/( ls /etc/X11/xorg.conf*).

El primer paso es tratar de hacer el nvidia-settingstrabajo. Si logra hacerlo, puede usar nvidia PRIME para cambiar a la GPU Intel, como usted menciona que ya lo hizo. Es necesario tener nvidia prime point para la GPU Intel si desea usar la GPU NVIDIA solo para cálculos CUDA (es especialmente necesario si desea usar el depurador cuda cuda-gdb).

Después de eso, puedes intentar instalar el abejorro :

sudo apt install bumblebee

Reiniciar. Puedes monitorear el estado del abejorro usando

sudo service bumblebeed status

o

bumblebeed -vv

Lo que hace el abejorro es activar la GPU NVIDIA e intentar insertar el controlador nvidia en el núcleo solo cuando sea necesario. Puede usar bumblebee pre-pendiente optirunal comando que desea ejecutar.

Para que Bumblebee funcione, tuve que editar manualmente /etc/bumblebee/bumblebee.confpara configurar correctamente el nombre y la ruta del controlador nvidia.

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

Luego, después de un sudo service bumblebeed restart, logré activar el sistema de abejorro.

De hecho nvidia-smivuelve

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

pero 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 esto ayude.

Michele
fuente
¡buena respuesta! PERO cansé a Bumblebee con ubuntu 15.10 y el mismo hardware y se estropeó. Tanto, que hice una nueva instalación de 16.04 después de que estuvo disponible. Fue realmente peor. Incluso el modo de recuperación no arrancó correctamente ... Así que me juré a mí mismo no usar más abejorros. Otro problema con el abejorro fue (no sé cómo evitaste esto) fue que mi gpu dedicada no admite bbswitch, así que obtuve errores, que la gpu no se pudo apagar correctamente
winnetou
Pero, ¡esta es teóricamente una respuesta posible! Pero no el que estoy buscando :(.
winnetou
Otro PERO: (No sé más, si esto funcionó en mi intento) ¿nvidia-settings le muestra la GPU (sudo optirun nvidia-settings por supuesto)? ¿Eres capaz de controlar la velocidad del ventilador, el voltaje, etc.? Si recuerdo correctamente, esta configuración solo es posible en nvidia-settings, después de habilitar los coolbits en el archivo xorg.conf. nvidia-gar sólo le da un monitor ..... Por favor, corrija si me equivoco
winnetou
Y otro gran signo de interrogación es: ¿Bumblebee funciona bien si tengo más de una gpu dedicada? Este caso de uso (igpu + gpu) ya no se recomienda para abejorros en gpus no móviles, pero tener más de un d-gpu es una nueva historia para los abejorros.
winnetou
@winnetou tienes toda la razón sobre más de una gpu: es una buena pregunta. Otro problema es que nvidia-docker no funciona como se esperaba.
vskubriev
1

Reinstalé los controladores de nvidia sin opengl como se menciona en las soluciones anteriores, pero no funcionó para mí. Además, estas soluciones son bastante insatisfactorias, ya que implican eliminar alguna capacidad de los controladores (opengl).

Encontré una solución mucho más simple, para la cual no necesita reinstalar el controlador:

  • Instalé los controladores de nvidia normalmente
  • En la interfaz gráfica de usuario de nvidia, debajo de los perfiles PRIME, elijo la tarjeta gráfica Intel como GPU principal
  • Después de reiniciar, nvidia-smi no funciona, pero lo solucioné agregando / usr / lib / nvidia-387 a la ruta de las bibliotecas:
    export LD_LIBRARY_PATH=/usr/lib/nvidia-387:$LD_LIBRARY_PATH

Tenga en cuenta que, según el controlador instalado, es posible que deba agregar otra carpeta en la ruta de la biblioteca, por ejemplo / usr / lib / nvidia-384 .
Puede agregar este comando al archivo ~ / .bashrc para exportar automáticamente la ruta al cargar un nuevo bash.

solapa
fuente
¿Qué sucede si actualiza el controlador nvidia? ¿Tiene que cambiar manualmente la ruta de la biblioteca?
liang
Supongo que esto no debería ser un problema si el controlador todavía está en la misma carpeta. Si la carpeta cambia, probablemente debería cambiar la ruta de la biblioteca.
revertir
0

principalmente como un recordatorio para mí: en ubuntu 18.04 usar igpu para renderizar y nvidia gpu para cuda, instalar controladores predeterminados de nvidia, abrir nvidia-settings y configurar para usar intel gpu. Después de eso, haga una lista negra de los controladores nouveau y parte de los controladores nvidia:

Abra /etc/modprobe.d/blacklist-nvidia.conf y comente las líneas de esta manera:

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

después de eso abra /etc/modprobe.d/blacklist-nvidia-nouveau.conf y agregue esas líneas:

blacklist nouveau
options nouveau modeset=0

para estar realmente seguro de que nouveau están deshabilitados, puede incluirlos en la lista negra en /etc/modprobe.d/blacklist.conf también: al final agregue:

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

luego reiniciar.

escriba nvidia-smipara verificar que nvidia esté cargado y escriba lspci -nnk | grep -iA2 3Dpara verificar que el controlador en uso sea nvidia y no nouveau.

usuario840583
fuente