Nenhum dispositivo compatível com CUDA é detectado embora os requisitos estejam instalados

3

Problema

Acabei de instalar cuda seguindo as instruções oficiais de instalação através do arquivo .deb . Quando se trata de seção 6.2.2.3 (executando deviceQuery ) Recebo a mensagem de que nenhum dispositivo compatível com CUDA foi encontrado, embora eu tenha certeza de que tudo está configurado corretamente:

$ ./bin/x86_64/linux/release/deviceQuery
./bin/x86_64/linux/release/deviceQuery Starting...

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

cudaGetDeviceCount returned 38
-> no CUDA-capable device is detected
Result = FAIL

Informação do sistema

Aqui estão algumas informações sobre o meu sistema:

$ uname -m && cat /etc/*release
x86_64
DISTRIB_RELEASE=16.04
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
VERSION="16.04.2 LTS (Xenial Xerus)"

$ uname -r
4.4.0-64-generic

$ lspci | grep -i nvidia
08:00.0 3D controller: NVIDIA Corporation GK208M [GeForce 920M] (rev a1)

$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609

Também verifiquei se os cabeçalhos do kernel estão instalados:

$ sudo apt-get install linux-headers-$(uname -r)
linux-headers-4.4.0-64-generic is already the newest version (4.4.0-64.85).

Instalação do CUDA

Então, meu sistema atende a todos os pré-requisitos. Em seguida, segui as instruções para a instalação da via apt-get (Eu instalei cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb ).

PATH e LD_LIBRARY_PATH estão definidos para apontar para os locais necessários:

$ echo $PATH
/usr/local/cuda-8.0/bin:[...]

$ echo $LD_LIBRARY_PATH 
/usr/local/cuda-8.0/lib64

Observe que eu configurei LD_LIBRARY_PATH manualmente, embora isso tenha sido mencionado como necessário apenas para a instalação do runfile. No entanto, o erro persiste ao redefinir LD_LIBRARY_PATH .

Os drivers da NVIDIA também parecem estar atualizados:

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  367.57  Mon Oct  3 20:37:01 PDT 2016
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)

Informações sobre o driver do compilador cuda:

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Tue_Jan_10_13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61

As instruções mencionam que isso pode ser um problema com a permissão de arquivos:

  

Se um dispositivo compatível com CUDA e o driver CUDA estiverem instalados, mas o deviceQuery informar que nenhum dispositivo com CUDA está presente, isso provavelmente significa que os arquivos / dev / nvidia * estão faltando ou possuem as permissões incorretas.

Esses arquivos não tinham o sinalizador de execução que eu adicionei:

$ ls -al /dev/nvidia*
crwxrwxrwx 1 root root 195,   0 Feb 27 13:17 /dev/nvidia0
crwxrwxrwx 1 root root 195, 255 Feb 27 13:17 /dev/nvidiactl
crwxrwxrwx 1 root root 195, 254 Feb 27 13:17 /dev/nvidia-modeset
crwxrwxrwx 1 root root 243,   0 Feb 27 13:17 /dev/nvidia-uvm
crwxrwxrwx 1 root root 243,   1 Feb 27 18:24 /dev/nvidia-uvm-tools

No entanto, após executar deviceQuery (o que ainda falha), algumas das permissões são redefinidas:

$ ls -al /dev/nvidia*
crwxrwxrwx 1 root root 195,   0 Feb 27 13:17 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Feb 27 13:17 /dev/nvidiactl
crwxrwxrwx 1 root root 195, 254 Feb 27 13:17 /dev/nvidia-modeset
crw-rw-rw- 1 root root 243,   0 Feb 27 13:17 /dev/nvidia-uvm
crw-rw-rw- 1 root root 243,   1 Feb 27 18:24 /dev/nvidia-uvm-tools

Isso é um pouco confuso, especialmente porque estou usando deviceQuery sem sudo .

Talvez relacionado

A compilação de amostras falha

Quando eu tento construir as amostras de cuda via make , ele falha para uma delas com a mensagem

/usr/bin/ld: cannot find -lnvcuvid
collect2: error: ld returned 1 exit status
Makefile:381: recipe for target 'cudaDecodeGL' failed
make[1]: *** [cudaDecodeGL] Error 1

Que, de fato, parece estar faltando:

$ ls /usr/local/cuda-8.0/lib64/libnvcuvid
ls: cannot access '/usr/local/cuda-8.0/lib64/libnvcuvid': No such file or directory

Embora o arquivo de cabeçalho correspondente esteja lá:

$ ls /usr/local/cuda-8.0/targets/x86_64-linux/include/nvcuvid.h 
/usr/local/cuda-8.0/targets/x86_64-linux/include/nvcuvid.h

Problema com a vinculação estática

O erro gerado por deviceQuery sugere um problema com a vinculação estática:

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

AFAIK LD_LIBRARY_PATH é responsável apenas pela vinculação dinâmica. Eu encontrei esta questão onde uma sugestão é incluir /usr/lib/nvidia-current no caminho do vinculador. No entanto, este diretório não existe na minha instalação:

$ ls /usr/lib/nvidia-current
ls: cannot access '/usr/lib/nvidia-current': No such file or directory
    
por a_guest 27.02.2017 / 19:22

1 resposta

2

Parece que você está em um laptop com o Nvidia Optimus, você mudou para a nvidia usando prime-select nvidia

    
por Artyom 27.02.2017 / 20:36