
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 glxspheres64
sin problemas. Sin embargo cuando ejecuto optirun ./deviceQuery
me 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 .run
archivos.
Hice lo siguiente: (Esto está directamente fuera de mi history
control).
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 bumblebeed
no ejecutar.
Entonces:
34 sudo vim /etc/bumblebee/bumblebee.conf
Cambie la línea con Driver=
(que estaba en blanco) a Driver=nvidia
y también la línea KernelDriver=nvidia-current
a 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 -l
que funcione la opción para brindar más información aquí.
Cuando ejecuto optirun ./deviceQuery
me 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-current
se 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.