Obtendo o CUDA 8.0 para funcionar no Ubuntu 16.04, problema com o driver da NVIDIA

6

Eu passei alguns dias com isso e estou no fim da minha sagacidade sobre como seguir em frente.

Eu tenho um ASUS Zenbook UX303UB com o Windows 10 e o Ubuntu 16.04 Dual boot. Ele possui uma GPU dedicada NVIDIA GeForce 940M com 2 GB de memória. Eu uso o Ubuntu principalmente para programação. Eu quero brincar com algumas ferramentas de aprendizado profundo, como tensorflow e theano, para as quais eu preciso primeiro que CUDA funcione. Apenas o CUDA 8.0rc parece funcionar oficialmente com o Ubuntu 16.04.

Primeiro, fui ao site da NVIDIA e baixei o arquivo de execução CUDA 8.0. Eu segui suas instruções para instalar e fiz isso em TTY1, incluindo a lista negra do noveau e adicionando

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

ao final do arquivo .bashrc.

Quando eu tento o exemplo de teste que a NVIDIA fornece,

$ cd NVIDIA_CUDA-8.0_Samples/5_Simulations/nbody
$ make

minha saída é:

>>> WARNING - libGLU.so not found, refer to CUDA Getting Started Guide for how to find and install them. <<<
>>> WARNING - gl.h not found, refer to CUDA Getting Started Guide for how to find and install them. <<<
>>> WARNING - glu.h not found, refer to CUDA Getting Started Guide for how to find and install them. <<<
[@] /usr/local/cuda-8.0/bin/nvcc -ccbin g++ -I../../common/inc -m64 -ftz=true -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_60,code=compute_60 -o bodysystemcuda.o -c bodysystemcuda.cu
[@] /usr/local/cuda-8.0/bin/nvcc -ccbin g++ -I../../common/inc -m64 -ftz=true -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_60,code=compute_60 -o nbody.o -c nbody.cpp
[@] /usr/local/cuda-8.0/bin/nvcc -ccbin g++ -I../../common/inc -m64 -ftz=true -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_60,code=compute_60 -o render_particles.o -c render_particles.cpp
[@] /usr/local/cuda-8.0/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_60,code=compute_60 -o nbody bodysystemcuda.o nbody.o render_particles.o -L/usr/lib/nvidia-361 -lGL -lGLU -lX11 -lglut
[@] mkdir -p ../../bin/x86_64/linux/release
[@] cp nbody ../../bin/x86_64/linux/release

quando eu faço

$ ./nbody -benchmark -numbodies=256000 -device=0

Eu recebo a mensagem

bash: ./nbody: No such file or directory

No processo de diagnóstico, percebi duas coisas:

1) nvidia-smi parece não funcionar ( nvidia-smi: command not found )

2) Quando eu faço cat /proc/driver/nvidia/version eu recebo cat: /proc/driver/nvidia/version: No such file or directory

Eu então decidi que talvez haja algum problema com o driver da NVIDIA. Então eu segui as instruções Problemas com o driver gráfico da Nvidia e CUDA após o apt- obtenha upgrade

Basicamente, para limpar todos os drivers nvidia, desative o lightdm e entre no runlevel3, e instale o arquivo de execução do driver NVIDIA no site da NVIDIA.

No entanto, há um erro de instalação e é anulado.

Eu reinicio e purga todos os drivers nvidia e faço um sudo apt-get install nvidia-367

Estou de volta à estaca zero agora. Informações adicionais de diagnóstico, como segue:

$ sudo nvidia-modprobe
sudo: nvidia-modprobe: command not found

$ uname -r
4.4.0-36-generic

$ dpkg -l | grep ii | grep -i linux-headers
ii  linux-headers-4.4.0-31                      4.4.0-31.50                                                 all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-31-generic              4.4.0-31.50                                                 amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-4.4.0-34                      4.4.0-34.53                                                 all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-34-generic              4.4.0-34.53                                                 amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-4.4.0-36                      4.4.0-36.55                                                 all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-36-generic              4.4.0-36.55                                                 amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-generic                       4.4.0.36.38                                                 amd64        Generic Linux kernel headers

$ dpkg -l | grep -i nvidia
ii  bbswitch-dkms                               0.8-3ubuntu1                                                amd64        Interface for toggling the power on NVIDIA Optimus video cards
ii  libcuda1-367                                367.44-0ubuntu0~gpu16.04.1                                  amd64        NVIDIA CUDA runtime library
ii  nvidia-367                                  367.44-0ubuntu0~gpu16.04.1                                  amd64        NVIDIA binary driver - version 367.44
ii  nvidia-opencl-icd-367                       367.44-0ubuntu0~gpu16.04.1                                  amd64        NVIDIA OpenCL ICD
ii  nvidia-prime                                0.8.2                                                       amd64        Tools to enable NVIDIA's Prime
ii  nvidia-settings                             370.23-0ubuntu0~gpu16.04.1                                  amd64        Tool for configuring the NVIDIA graphics driver

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Wed_May__4_21:01:56_CDT_2016
Cuda compilation tools, release 8.0, V8.0.26

Qualquer ajuda seria muito apreciada, já que cheguei muito perto de quebrar o Ubuntu várias vezes!

    
por mwolverine 05.09.2016 / 05:35

1 resposta

0

Eu resolvi isso seguindo este tutorial: link

Siga-o livremente, ou seja, baixe e instale o driver mais recente do site da nvidia em vez de baixar e instalar a nvidia-367 que o tutorial recomenda.

    
por E. Stoelinga 01.03.2017 / 12:14