Introducción

Introducción

Introducción

Estoy intentando que CUDA funcione en mi computadora portátil con gráficos híbridos. Estoy usando (l)ubuntu 15.04.

Actualmente he seguido algunos pasos de una guía online, que explicaré a continuación, y puedo ejecutarla optirun glxspheres64sin problemas. Sin embargo cuando ejecuto optirun ./deviceQueryme sale el siguiente error:

/usr/bin/vglrun: 246: exec: ./deviceQuery: Permission denied

No parece haber ninguna información sobre esto en línea.

Detalle

La guía que seguí esaquí. No seguí todos los pasos exactamente porque ahora es bastante antiguo y Nvidia ha cambiado el formato en el que envían sus .runarchivos.

Hice lo siguiente: (Esto está directamente fuera de mi historycontrol).

15  sudo apt-add-repository ppa:bumblebee/stable
16  sudo apt-add-repository ppa:ubuntu-x-swat/x-updates
17  sudo apt-get update 
18  sudo apt-get install bumblebee
19  sudo apt-get install bumblebee bumblebee-nvidia 
20  sudo reboot

Luego inicie sesión en tty1, detenga el servidor x e inicie 3.

21  cd Downloads/
22  chmod +x cuda_7.5.18_linux.run 
23  sudo ./cuda_7.5.18_linux.run

Instale el paquete de ejecución con todas las opciones predeterminadas, también instale la versión 352 del controlador de gráficos.

Luego configure la variable PATH.

25  export PATH=/usr/local/bin:$PATH
26  export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
27  sudo ldconfig

Me salté los siguientes pasos de vinculación estática. No obtuve ningún error del vinculador (o al menos no creo que lo haya recibido) al compilar los códigos de muestra, así que supongo que no fue necesario. Tampoco he visto este paso en ninguna otra guía en línea. ¿Quizás aquí es donde me equivoqué?

Entonces algunas cosas obviamente requieren OpenGL, entonces:

28  sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

Compile las muestras:

30  cd NVIDIA_CUDA-7.5_Samples/
31  make

Luego intenté ejecutar ./deviceQuery, que está dentro del directorio de Utilidades. Recibí un error que ya había visto antes acerca de bumblebeedno ejecutar.

Entonces:

34  sudo vim /etc/bumblebee/bumblebee.conf 

Cambie la línea con Driver=(que estaba en blanco) a Driver=nvidiay también la línea KernelDriver=nvidia-currenta KernelDriver=nvidia.

Esta información está disponibleaquí, consulte la segunda respuesta (actualmente) a la pregunta.

Todavía no funcionaba, así que intenté seguir la información proporcionada en la primera respuesta de la pregunta vinculada arriba e instalé los encabezados del kernel:

48  sudo apt-get install linux-headers-generic 
49  sudo reboot

Si lo hago:

54  sudo service bumblebeed status

Ahora obtengo:

● bumblebeed.service - Bumblebee C Daemon
   Loaded: loaded (/lib/systemd/system/bumblebeed.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2015-10-11 13:15:07 BST; 20min ago
 Main PID: 1502 (bumblebeed)
   CGroup: /system.slice/bumblebeed.service
           └─1502 /usr/sbin/bumblebeed

Oct 11 13:16:20 P151EMx bumblebeed[1502]: [  163.019954] [WARN][XORG]....
Oct 11 13:16:20 P151EMx bumblebeed[1502]: [  163.019987] [WARN][XORG]....
Oct 11 13:16:20 P151EMx bumblebeed[1502]: [  163.020055] [WARN][XORG]....
Oct 11 13:17:11 P151EMx bumblebeed[1502]: rmmod: ERROR: Module nvidia...d
Oct 11 13:17:11 P151EMx bumblebeed[1502]: modprobe: FATAL: Error runn...a
Oct 11 13:17:22 P151EMx bumblebeed[1502]: [  225.439546] [WARN][XORG]....
Oct 11 13:17:22 P151EMx bumblebeed[1502]: [  225.439578] [WARN][XORG]....
Oct 11 13:17:22 P151EMx bumblebeed[1502]: [  225.439606] [WARN][XORG]....
Oct 11 13:17:23 P151EMx bumblebeed[1502]: rmmod: ERROR: Module nvidia...d
Oct 11 13:17:23 P151EMx bumblebeed[1502]: modprobe: FATAL: Error runn...a
Hint: Some lines were ellipsized, use -l to show in full.

Pero parece que todavía tengo algunos problemas aquí... Ahora está "activo", mientras que antes no arrancaba, pero todavía no todo funciona correctamente. Por alguna razón no puedo hacer -lque funcione la opción para brindar más información aquí.

Cuando ejecuto optirun ./deviceQueryme sale el error:

/usr/bin/vglrun: 246: exec: ./deviceQuery: Permission denied

¿Qué debería hacer ahora?

Actualizaciones:

Editar: para cualquiera que siga esto, podría ser una idea no realizar este paso. ¿Quizás intente instalar el controlador después de CUDA para evitar este paso? Parece un poco innecesario instalar la versión 352 del controlador y luego volver a la 304 haciendo lo siguiente:

Noté que en la pregunta vinculada, el comando sudo apt-get install -reinstall nvidia-currentse agregó después de instalar los encabezados del kernel.

Ejecuté este comando, creo que mi controlador volvió a la versión 304. Reiniciado, ahora

sudo service bumblebeed status

da el siguiente resultado:

● bumblebeed.service - Bumblebee C Daemon
   Loaded: loaded (/lib/systemd/system/bumblebeed.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2015-10-11 13:46:53 BST; 38s ago
 Main PID: 659 (bumblebeed)
   CGroup: /system.slice/bumblebeed.service
           └─659 /usr/sbin/bumblebeed

Oct 11 13:46:53 edward-P151EMx systemd[1]: Started Bumblebee C Daemon.
Oct 11 13:46:53 edward-P151EMx systemd[1]: Starting Bumblebee C Daemon...
Oct 11 13:46:53 edward-P151EMx bumblebeed[659]: [   17.073332] [INFO]/usr/sb...d
Hint: Some lines were ellipsized, use -l to show in full.

Entonces eso parece estar arreglado. Sin embargo, todavía no se puede ejecutar ./deviceQuery, el mismo error:

sudo optirun ./deviceQuery
/usr/bin/vglrun: 246: exec: ./deviceQuery: Permission denied

Por favor ayuda. L@l

Por cierto, glxspheres todavía funciona:

optirun glxspheres64

¿Obteniendo ~270 FPS?

Respuesta1

Reinicié mi computadora nuevamente y hurra, está funcionando.

optirun ./deviceQuery

devoluciones

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 670MX"
  CUDA Driver Version / Runtime Version          7.5 / 7.5
  CUDA Capability Major/Minor version number:    3.0
  Total amount of global memory:                 3072 MBytes (3221028864 bytes)
  ( 5) Multiprocessors, (192) CUDA Cores/MP:     960 CUDA Cores
  GPU Max Clock rate:                            601 MHz (0.60 GHz)
  Memory Clock rate:                             1400 Mhz
  Memory Bus Width:                              192-bit
  L2 Cache Size:                                 393216 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GTX 670MX
Result = PASS

Por cierto, sospecho que los últimos pasos que probé no son realmente necesarios. Si sigues la información de la pregunta anterior, intentanohaciendo los últimos pasos:

  • Reinstalación del controlador. No creo que esto deba ser necesario. También es molesto porque te revierte a una versión mucho más antigua del controlador. Me interesaría saber si alguien que siguió la información de la pregunta pudo hacer que CUDA funcionara sin realizar este paso.

Creo que la información de la pregunta podría ser muy útil para cualquiera (y para mí) que intente instalar:

  • CUDA 7.5 (o CUDA 7)

en Linux, específicamente una distribución relacionada con Ubuntu;

  • ubuntu, xubuntu, lubuntu, ubuntu mate, kubuntu,
  • y quizás también linux mint 17, linux mint 17.1 y linux mint 17.2 [sin embargo, anteriormente he tenido problemas con linux mint 17 y linux mint 17.2 al intentar instalar CUDA]
  • tal vez una de las distribuciones de Debian (creo que estamos en Debian 8 en este momento, pero posiblemente también en Debian 7 o Debain 6)

Mi intención es probar esta respuesta con todas estas distribuciones, ya que muchas de las guías que existen en la web para configurar CUDA para Linux son para versiones desactualizadas de Linux o para versiones desactualizadas de CUDA.

Me llevará algún tiempo hacer esto, pero intentaré hacerlo pronto.

Además, podría cambiar esta respuesta a una wiki comunitaria si alguien desea contribuir.

Siga buscando actualizaciones. Cualquier comentario házmelo saber comentando a continuación.

información relacionada