He encontrado media docena de publicaciones sobre esto en toda la web, pero ninguna de ellas responde realmente a la pregunta.
Quiero configurar mi GPU nvidia para hacer solo cálculos, no para manejar la pantalla. Pero cuando cambio a usar la GPU Intel en la configuración nvidia-prime, ya no puedo cargar el módulo nvidia.
modprobe: ERROR: could not insert 'nvidia_352': No such device
Sin el módulo, CUDA no funciona, obviamente.
Entonces, ¿qué está haciendo exactamente nvidia-prime que hace que sea imposible cargar el módulo? No está en la lista negra. No hay un archivo xorg.conf, entonces, ¿cómo sabe el sistema usar la GPU Intel en lugar de la discreta?
Estoy en una Dell 5510 Precision con Ubuntu 14.04 instalado de fábrica, y mi GPU es Quadro M1000M.
Algunos sugieren usar abejorros, pero eso no debería ser necesario para cargas de cómputo puro.
Además, aparentemente el abejorro puede cargar el módulo. Entonces, ¿qué está haciendo exactamente?
Actualización: Entonces, ¿por qué siempre parece que encuentro la respuesta cuando finalmente publico una pregunta, después de horas de tratar de resolverla? Esto es solo una respuesta parcial, pero estoy en algo.
Hasta ahora he determinado que Prime hace al menos dos cosas:
- Apague la GPU con bbswitch.
- Cambia las alternativas para /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf.
Al usar bbswitch para volver a encender la GPU, ahora puedo cargar el módulo NVIDIA.
Pero la pregunta sigue siendo: ¿Cuál es la mejor manera de configurar el sistema para usar la tarjeta NVIDIA solo para cálculos?
¿Debo configurar nvidia-prime para usar la GPU Intel e intentar desentrañar manualmente lo que eso hizo para que CUDA funcione?
¿Cómo me aseguro de que el sistema todavía use la GPU Intel para la pantalla?
¿Cómo podría simplemente deshabilitar NVIDIA prime y configurarlo todo manualmente?
¿O debería ceder y usar Bumblebee y optirun? ¿Cuáles son las desventajas de esto, si las hay?
¿Alguna recomendación?
fuente
Respuestas:
En mi caso, descubrí que la tarjeta NVidia no estaba apagada, y lo único que realmente necesitaba hacer para ejecutar el código CUDA era:
en el shell donde quiero ejecutarlo (estoy asumiendo que cambiar globalmente la configuración de alternativas rompería compiz, etc., etc.)
Para llegar a este punto (en una Dell Optiplex 7010, con Ubuntu 14.04, CUDA 7.5 y una GTX 980) creo que los pasos fueron:
Todo parece estar funcionando bien hasta ahora (nvidia-smi ve la tarjeta, se ejecutan muestras de cuda, theano usa la tarjeta, etc.)
fuente
Creo que he encontrado al menos una solución superficial a esto, como se describe en la actualización de mi publicación original. Realmente encontré dos soluciones, aunque estoy seguro de que hay otras.
1 - Con Prime en modo Intel, vuelva a habilitar la tarjeta NVIDIA a través de bbswitch , luego ejecute
modprobe nvidia
para cargar el módulo y crear los nodos del dispositivo.2 - Utilice Bumblebee optirun para iniciar una sesión de bash desde donde puede hacer todas sus cosas de CUDA.
Ambas soluciones le permiten usar los gráficos integrados para su pantalla, mientras usa la tarjeta NVIDIA para cargas de cómputo. La solución optirun parece más versátil, pero prefiero la primera por su minimalismo.
Espero que alguien con más comprensión mejore esta respuesta.
fuente
Uso la tarjeta NVIDIA solo para ejecuciones de CUDA y descubro este enfoque:
Todo el tiempo uso la tarjeta Intel y se confirma por comando
lspci | grep -E "VGA|3D"
:En la fila correspondiente a la tarjeta NVIDIA, debería ver
(rev ff)
que está desactivada.Para encender la tarjeta y usarla para los cálculos de CUDA, uso dos comandos siguientes:
Después de ese
lspci | grep -E "VGA|3D"
informe de comando :Observe sobre
(rev a2)
, no(rev ff)
en la fila correspondiente. Ahora tarjeta lista para el cálculo.Después de los cálculos, uso acciones hacia atrás:
E
lspci | grep -E "VGA|3D"
informes:fuente
En caso de que alguien aún encuentre problemas después de seguir los pasos de la respuesta aceptada, intente esto:
Deshabilitará bbswitch por completo. El inconveniente es que no podrá apagar la tarjeta NVIDIA para ahorrar energía (Xorg todavía usa gráficos integrados, siempre y cuando
prime-select intel
).fuente
Estoy usando un 1070 ti con un thinkpad T420 en un egpu configurado para extraer criptomonedas mientras trabajo. La GPU teóricamente se pagará a sí misma después de un par de meses de esta manera.
Descubrí que con nvidia 387 exportar LD_LIBRARY_PATH = / usr / lib / nvidia-387 funcionaba con ethminer usando cuda.
Sin embargo, la única forma en que podía hacer que el sistema siguiera funcionando después de una "información de selección principal" era si tenía un segundo monitor conectado a la tarjeta cuando hice la selección y cerré la sesión. De lo contrario, obtendría un error "El sistema se está ejecutando en modo de gráficos bajos" o una pantalla en blanco continua. Por supuesto, cuando inicio sesión con Intel Graphics, el monitor conectado a la GPU no muestra nada, así que tengo que desconectarlo de la GPU y volver a conectarlo al sistema (salida de la base DVI) para ejecutar la configuración de mi monitor de duelo .
Creo que esto se debe a que gpu-manager detecta que bbswitch no funciona y luego elimina la configuración de xorg.
Estoy publicando esto para mostrar una solución para los pocos que podrían estar en una situación similar, pero también para ver si alguien tiene una idea para evitar que esto suceda, ya que tener que mover ese cable para cada reinicio es un poco inconveniencia.
archivo_registro: /var/log/gpu-manager.log
last_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot new_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot no puede acceder / ejecutar / udc-fglrx-was-load file Buscando módulos fglrx en / lib /modules/4.4.0-104-generic/updates/dkms Buscando módulos de nvidia en /lib/modules/4.4.0-104-generic/updates/dkms Módulo de nvidia encontrado: nvidia_387_drm.ko ¿Se carga nvidia? sí ¿Se descargó nvidia? no ¿Nvidia está en la lista negra? sí ¿Está cargado fglrx? no ¿Se descargó fglrx? no ¿Fglrx está en la lista negra? no ¿Se ha cargado Intel? sí ¿Radeon está cargado? no ¿Radeon está en la lista negra? no ¿Está cargado amdgpu? no ¿Está amdgpu en la lista negra? no ¿Se carga nouveau? no ¿Nououau está en la lista negra? sí ¿Está disponible el módulo de kernel fglrx? no ¿Está disponible el módulo kernel de nvidia? sí Id. del proveedor / dispositivo: 8086: 126 BusID "PCI: 0 @ 0: 2: 0" ¿Es boot vga? sí Id. del proveedor / dispositivo: 10de: 1b82 BusID "PCI: conf Alternativa actual de núcleo: (nulo) Alternativa actual de egl: /usr/lib/nvidia-387-prime/ld.so.conf ¿Está habilitado nvidia? no ¿nvidia egl está habilitado? no ¿Está habilitado fglrx? no ¿Mesa está habilitada? no ¿Mesa egl está habilitado? no ¿Está habilitado pxpress? no ¿Prime está habilitado? sí ¿Prime egl está habilitado? sí ¿Está disponible nvidia? sí ¿Está disponible nvidia egl? no ¿Está disponible fglrx? no ¿Está disponible fglrx-core? no ¿Mesa está disponible? sí ¿Mesa egl está disponible? sí ¿Está disponible pxpress? no ¿Está disponible Prime? sí ¿Prime egl está disponible? no se detectó Intel IGP Sistema híbrido Intel Controlador Nvidia versión 387.34 detectado / sys / class / dmi / id / product_version = "ThinkPad T420" / sys / class / dmi / id / product_name = "4236L23" 1er intento: bbswitch sin peculiaridades Cargando bbswitch con Parámetros "load_state = -1 unload_state = 1" Error: can ' t abrir / proc / acpi / bbswitch Eliminando xorg.conf. Ruta: /etc/X11/xorg.conf no puede acceder a /usr/share/gpu-manager.d/hybrid-power-saving No es necesario cambiar el estado actual de bbswitch
Si yo nano xorg.conf después de esto está vacío. Estoy publicando esto después de hacer el truco del interruptor del monitor, con la minería en segundo plano, y mi xorg.conf todavía está vacío. Entonces, supongo que, por alguna razón, cuando mantengo el monitor conectado a la GPU al reiniciar lightdm, no importa que mi xorg.conf se elimine. ¿Algunas ideas?
fuente