Nvidia CUDA, Gráficos híbridos, optirun vglrun, deviceQuery Permission denied

1

Introdução

Estou tentando fazer o CUDA funcionar no meu laptop gráfico híbrido. Eu estou usando (l) Ubuntu 15,04.

Atualmente, segui algumas etapas em um guia on-line, que explicarei abaixo, e posso executar optirun glxspheres64 sem problemas. No entanto, quando executo o optirun ./deviceQuery , recebo o seguinte erro:

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

Parece não haver informações sobre isso on-line.

Detalhe

O guia que eu segui é aqui . Eu não segui todos os passos exatamente como isso agora é bem antigo e a Nvidia mudou o formato no qual eles enviam seus arquivos .run .

Eu fiz o seguinte: (Isso foi direto do meu comando history .)

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

Em seguida, faça o login em tty1, pare o servidor xe o init 3.

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

Instale o pacote de execução com todas as opções padrão, e instale também a versão 352 do driver de gráficos.

Em seguida, configure a variável PATH.

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

Ignorei as próximas etapas de vinculação estática. Eu não recebi nenhum erro de linker (ou pelo menos eu acho que não) ao compilar os códigos de amostra, então presumo que isso não foi necessário. Eu também não vi este passo em nenhum outro guia online. Talvez seja aí que eu errei?

Então algumas coisas obviamente requerem OpenGL, então:

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

Compile as amostras:

30  cd NVIDIA_CUDA-7.5_Samples/
31  make

Então eu tentei executar ./deviceQuery , que está dentro do diretório Utilitários. Eu recebi um erro que eu já vi antes sobre o bumblebeed não ser executado.

Então:

34  sudo vim /etc/bumblebee/bumblebee.conf 

Altere a linha com Driver= (que estava em branco) para Driver=nvidia e também a linha KernelDriver=nvidia-current para KernelDriver=nvidia .

Esta informação está disponível aqui , veja a segunda resposta (atualmente) da pergunta.

Ainda não estava funcionando, então tentei seguir a informação dada na primeira resposta para ser acima da questão vinculada e instalei os cabeçalhos do kernel:

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

Se eu fizer:

54  sudo service bumblebeed status

Agora obtenho:

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

Mas parece que ainda tenho alguns problemas aqui ... É "ativo" agora, enquanto não seria iniciado antes, mas ainda assim nem tudo está funcionando corretamente. Por algum motivo, não consigo fazer com que a opção -l funcione para fornecer mais informações aqui.

Quando executo optirun ./deviceQuery , recebo o erro:

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

O que devo fazer agora?

Atualizações:

Edit: Para qualquer um que segue isto, pode ser uma ideia não fazer este passo. Talvez tente instalar o driver após CUDA para evitar este passo? Parece um pouco desnecessário instalar a versão do driver 352 e depois reverter para o 304 fazendo o seguinte:

Percebi que na pergunta vinculada, o comando sudo apt-get install -reinstall nvidia-current foi anexado após a instalação dos cabeçalhos do kernel.

Eu executei este comando, acho que meu driver voltou para a versão 304. Reinicializado, agora

sudo service bumblebeed status

fornece a seguinte saída:

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

Então, isso parece ser corrigido. Ainda não é possível executar ./deviceQuery , mesmo erro:

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

Ajuda do Plz. L @ l

glxspheres ainda funciona pelo caminho:

optirun glxspheres64

Obtendo ~ 270 FPS?

    
por user3728501 11.10.2015 / 14:38

1 resposta

0

Eu reiniciei meu computador novamente e o hurray está funcionando.

optirun ./deviceQuery

retorna

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

A propósito, suspeito que as últimas etapas que tentei não são realmente necessárias. Se seguir as informações da pergunta acima, tente não fazendo as últimas etapas:

  • Reinstalação do driver. Eu não acho que isso seja necessário. Também é irritante porque o reverte para uma versão muito mais antiga do driver. Eu estaria interessado em saber se alguém seguindo a informação na questão foi capaz de fazer o CUDA funcionar sem fazer este passo.

Acho que a informação na pergunta pode ser muito útil para qualquer pessoa (e para mim) que esteja tentando instalar:

  • CUDA 7.5 (ou CUDA 7)

em um Linux, especificamente uma distribuição relacionada ao Ubuntu;

  • ubuntu, xubuntu, lubuntu, companheiro de ubuntu, kubuntu,
  • e talvez também o linux mint 17, o linux mint 17.1 e o linux mint 17.2 [no entanto, eu já tive problemas com o linux mint 17 e o linux mint 17.2 tentando instalar o CUDA]
  • talvez uma das distribuições debian (acho que estamos no debian 8 agora, mas possivelmente também debian 7 ou debain 6)

É minha intenção testar essa resposta com todas essas distribuições, já que muitos guias disponíveis na Web para configurar o CUDA para Linux são para versões desatualizadas do Linux ou para versões desatualizadas do CUDA. / p>

Levarei algum tempo para fazer isso, mas vou tentar fazer isso em breve.

Além disso, posso alterar essa resposta para um wiki da comunidade se alguém quiser contribuir com ela.

Continue verificando atualizações. Qualquer comentário me avise comentando abaixo.

    
por user3728501 11.10.2015 / 15:29