¿Cómo puedo hacer que nVidia CUDA u OpenCL funcionen en una computadora portátil con la tarjeta discreta nVidia / Intel Integrated Graphics?

25

Antecedentes: soy un artista en 3D (como hobby) y recientemente comencé a usar Ubuntu 12.04 LTS como un arranque dual con Windows 7. Se está ejecutando en mi portátil Toshiba de 64 bits bastante nuevo con un nVidia GeForce GT 540M GPU (tarjeta gráfica). También, sin embargo, tiene Intel Integrated Graphics (que sospecho que Ubuntu ha estado usando).

Entonces, cuando renderizo mis escenas 3D en imágenes en Windows, puedo elegir entre usar mi CPU o mi nVidia GPU (más rápido). Desde la aplicación 3D, puedo configurar la GPU para utilizar CUDA o OpenCL. En Ubuntu, no hay opción de GPU.

Después de hacer (¿demasiada?) investigación sobre los problemas con Linux y la tecnología nVidia Optimus, estoy un poco más iluminado, pero estoy mucho más confundido.

No me importa nada la tecnología Optimus, ya que la duración de la batería no es un problema para mí.

Esta es mi pregunta: ¿Qué puedo hacer para poder utilizar los programas que utilizan CUDA (como Blender) en mi nVidia GPU en Ubuntu? ¿Necesitaré los controladores de nVidia? (He oído que no funcionan bien con las configuraciones de Optimus en Linux.) ¿Hay al menos una forma de usar OpenCL en mi GPU en Ubuntu?

    
pregunta Peter Cassetta 04.05.2012 - 15:22

4 respuestas

13

Aquí está la respuesta completa (basada en Alex Falappa y Respuestas de Lekensteyn ):

De hecho, es posible obtener nVidia Optimus GPU para ejecutar CUDA en Ubuntu.

Bumblebee no es necesario para CUDA. (Más sobre Bumblebee : Es un NVIDIA GeForce con tecnología Optimus compatible con Ubuntu? )

Sin embargo, cuando necesite mostrar ejemplos gráficos utilizando OpenGL, necesita algo como Bumblebee para sistemas Optimus; de lo contrario, no verá nada en la pantalla u obtendrá el error:

ERROR: Support for necessary OpenGL extensions missing. 

Si necesita usar un programa de gráficos intensivos como Blender, Bumblebee es actualmente una buena forma de hacerlo.

Pase a Instalación de CUDA si no desea instalar Bumblebee (es decir, si no necesita OpenGL).
De lo contrario, sigue leyendo.

Instalación de Bumblebee

Siga las instrucciones en ¿Qué tan bien funcionan las computadoras portátiles con Nvidia Optimus?

Actualmente, se mantienen actualizados por un desarrollador de Bumblebee.

Una vez que haya instalado Bumblebee y reiniciado, podrá elegir la tarjeta gráfica que utilizará al iniciar programas utilizando el programa optirun .
Por ejemplo:

optirun blender

Para probar rápidamente si todo funciona correctamente, use:

optirun glxspheres

Verás un programa con coloridas esferas giratorias si todo funciona correctamente.

Verifique que la cadena del vendedor GL en el terminal contiene la palabra nvidia .
Si solo ejecuta glxspheres , verá que la cadena del proveedor contiene la tarjeta Intel en su lugar.

Cuando ejecuta un programa CUDA, debe instalar el kit de herramientas CUDA y un controlador nvidia. Si tiene la intención de compilar programas, también necesita el SDK. Los instaladores se pueden encontrar en enlace , por favor, lea las instrucciones a continuación antes de utilizar su portátil Optimus.

Instalando CUDA

Conductor

Recomiendo instalar el controlador nvidia del administrador de paquetes de Ubuntu. Si instala Bumblebee, no necesita preocuparse por el controlador. De lo contrario, después de la instalación, deshabilitar las bibliotecas nvidia como se describe en enlace . Si no lo hace, perderá la aceleración 3D y posiblemente se quede atascado en una resolución baja.

Toolkit

Básicamente debes descargar el instalador, hacerlo ejecutable y ejecutarlo.  - Descarga el instalador. A partir del 9 de enero de 2013, 5.0.35 es el controlador más reciente. Como tengo un sistema operativo de 64 bits, utilizo el paquete de 11.10 Ubuntu de 64 bits (aunque estoy ejecutando 12.10)  - Hazlo ejecutable y permite la instalación a /usr/local/cuda :

chmod +x cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run
sudo ./cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run

Cuando aparece el mensaje de instalación que le pregunta dónde instalar CUDA, simplemente presione Entrar para aceptar el valor predeterminado /usr/local/cuda :

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Después de la instalación, imprimirá algunos mensajes que sugieren colocar el directorio de la biblioteca cuda en la ruta de búsqueda de la biblioteca:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Puede omitir este paso si lo desea, pero luego debe establecer LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH más tarde cuando ejecuta un programa.

SDK

Si desea poder compilar aplicaciones CUDA, puede instalar el SDK de forma similar a la descrita anteriormente. Descargue, hágalo ejecutable y ejecútelo (no como root, p. Ej. Sin sudo !).

Usando CUDA

CUDA no necesita un servidor X controlado por NVIDIA para funcionar. En ese caso, puede ejecutar su programa de prueba aleatorio como:

  

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH someComutuallyIntensiveProgram

Si no ha agregado CUDA a la ruta de acceso de su biblioteca, necesitará:

  

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

(puede quitar las rutas de acceso de 32 bits si su programa es de 64 bits).

Si el programa CUDA tiene algo que mostrar con OpenGL, debe usar optirun:

 optirun blender

O bien, si no ha agregado CUDA a su ruta de acceso predeterminada:

  

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH optirun blender

Instalar una compilación Blender

(con núcleos CUDA precompilados)

Cuando ejecuta optirun blender , puede recibir un mensaje de Blender diciendo que la compilación del kernel CUDA falló, y un mensaje en el terminal similar al siguiente:

Compiling CUDA kernel ...
nvcc warning : Option '--opencc-options (-Xopencc)' is obsolete and ignored, when
targeting compute_20, sm_20, or higher
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
CUDA kernel compilation failed, see console for details.

Si desea usar la función de renderizado GPU de Blender, puede necesitar una compilación Blender con kernels CUDA precompilados. Las compilaciones de Blender.org tienen núcleos CUDA precompilados; las compilaciones ppa: cheleb / blender-svn ( más información sobre esta pregunta ) no.

Para instalar una compilación Blender oficial, simplemente siga las instrucciones que se encuentran en esta respuesta .

Si has instalado Blender en /usr/lib/blender , deberías poder ejecutar Blender desde el terminal y usar el renderizado GPU con:

 optirun '/usr/lib/blender/blender'
    
respondido por el Peter Cassetta 13.04.2017 - 12:24
25

Acabo de hacer algo de experimentación y puedo confirmar las afirmaciones de Eric Appleman de que Bumblebee no es necesario para CUDA. (Más sobre Bumblebee : Es un NVIDIA GeForce con tecnología Optimus compatible con Ubuntu? )

Sin embargo, cuando necesite mostrar ejemplos gráficos utilizando OpenGL, necesita algo como Bumblebee para sistemas Optimus; de lo contrario, no verá nada en la pantalla u obtendrá el error:

ERROR: Support for necessary OpenGL extensions missing.

Cuando ejecuta un programa CUDA, debe instalar el kit de herramientas CUDA y un controlador nvidia. Si tiene la intención de compilar programas, también necesita el SDK. Los instaladores se pueden encontrar en enlace , por favor, lea las instrucciones a continuación antes de utilizar su portátil Optimus.

Instalación de CUDA

Conductor

Recomiendo instalar el controlador nvidia del administrador de paquetes de Ubuntu. Si instala Bumblebee, no necesita preocuparse por el controlador. De lo contrario, después de la instalación, deshabilitar las bibliotecas nvidia como se describe en enlace . Si no lo haces, perderás aceleración 3D y posiblemente te quedes atascado en baja resolución.

Toolkit

Básicamente debes descargar el instalador, hacerlo ejecutable y ejecutarlo.  - Descarga el instalador. Al momento de escribir esto, 4.2.9 es el controlador más reciente. Como tengo un sistema operativo de 64 bits, uso el paquete Ubuntu de 64 bits de 64 bits (aunque estoy ejecutando 12.04)  - Hazlo ejecutable y permite la instalación a /usr/local/cuda :

chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run

Cuando aparece el mensaje de instalación que le pregunta dónde instalar CUDA, simplemente presione Entrar para aceptar el valor predeterminado /usr/local/cuda :

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Después de la instalación, imprimirá algunos mensajes que sugieren colocar el directorio de la biblioteca cuda en la ruta de búsqueda de la biblioteca:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Puede omitir este paso si lo desea, pero luego debe establecer LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH más tarde cuando ejecuta un programa.

SDK

Si desea poder compilar aplicaciones CUDA, puede instalar el SDK de forma similar a la descrita anteriormente. Descargue, hágalo ejecutable y ejecútelo (no como root, por ejemplo sin sudo !). Al compilar partes de él, tuve que hacer algunos cambios a NVIDIA_GPU_Computing_SDK/C/common/common.mk aunque:

  • después de la línea 189, OPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmu , agregar:

    OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
    
  • después de la línea 271, intercambie ${RENDERCHECKGLLIB} con ${OPENGLLIB} para que se vea como:

    LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
    
  • unas pocas (5) líneas más, haz lo mismo, pero elimina -lcuda también.
  • unas pocas (7) líneas más, haga lo mismo que hizo en la línea 271.

Usando CUDA

CUDA no necesita un servidor X controlado por NVIDIA para funcionar. En ese caso, puede ejecutar su programa de prueba aleatorio como:

  

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH someComutuallyIntensiveProgram

Si no ha agregado CUDA a la ruta de acceso de su biblioteca, necesitará:

  

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

(puede quitar las rutas de acceso de 32 bits si su programa es de 64 bits).

Si el programa CUDA tiene algo que mostrar con OpenGL, debe usar optirun:

 optirun blender

O bien, si no ha agregado CUDA a su ruta de acceso predeterminada:

  

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH optirun blender

    
respondido por el Lekensteyn 08.05.2012 - 14:49
2

Los gráficos híbridos (generalmente gráficos integrados Intel y gráficos discretos de Nvidia) soportados bajo Linux son actualmente un poco problemáticos. Algo se mueve lentamente en el campo del servidor X pero no contiene la respiración.

Como habrás adivinado, Bumblebee es actualmente una buena forma de hacerlo.

Compré recientemente una computadora portátil Asus N55 con gráficos Intel / Nvidia. Pude hacer que el procesador Blender Cycles utilizara CUDA.

Cuando instalé Ubuntu 12.04 usé los gráficos integrados de forma predeterminada a través del controlador de gráficos intel. El controlador de gráficos noveau no debería instalarse.

Luego abrí una terminal e hice:

sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia

Después de eso lo hice (como lo recomiendan las instrucciones de instalación):

sudo usermod -a -G bumblebee $USER

Luego reinicié.

Para elegir el controlador que se utilizará al iniciar programas, use el programa optirun, por ejemplo:

optirun blender

Para probar si todo funciona correctamente:

optirun glxspheres

Y verifique que la cadena del proveedor GL contenga la palabra Nvidia. Si ejecuta en su lugar:

glxspheres

La cadena del proveedor debe contener la palabra Intel

    
respondido por el Alex Falappa 08.05.2012 - 07:45
1

Me parece que para ejecutar todos los ejemplos de CUDA, usando Bumblebee, debe instalar los controladores 295.40 de aquí y durante la instalación elige no anular el config x11 .

Luego, debe usar el mismo controlador para compilar los ejemplos y ejecutar el programa.

    
respondido por el olmer 28.08.2012 - 14:28

Lea otras preguntas en las etiquetas