web-dev-qa-db-fra.com

AVERTISSEMENT (theano.sandbox.cuda): CUDA est installé, mais le périphérique n'est pas disponible

sous Ubuntu MATE 16.04 J'essaie d'exécuter ici des exemples d'apprentissage approfondi en python à l'aide du GPU:

test de Theano avec GPU

J'ai couru l'exemple de code, 

THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python check1.py

mais il semble que ce soit le processeur utilisé et non le GPU. Voici la dernière partie de la sortie du terminal:

WARNING (theano.sandbox.cuda): CUDA is installed, but device gpu0 is not  available  (error: cuda unavailable)
...
Used the cpu

J'ai aussi essayé de lancer ce code:

THEANO_FLAGS=device=cuda0 python check1.py

mais le résultat est:

ERROR (theano.sandbox.gpuarray): pygpu was configured but could not be imported
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/theano/sandbox/gpuarray/__init__.py", line 20, in <module>
    import pygpu
ImportError: No module named pygpu
...
used cpu

J'ai installé le cuda toolkit d'apt . Il contient (espérons-le) des données utiles:

python --version
Python 2.7.12

g++ -v
gcc version 5.4.0

nvcc --version
Cuda compilation tools, release 7.5, V7.5.17

lspci
NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)

nvidia-smi

+------------------------------------------------------+                       
| NVIDIA-SMI 361.42     Driver Version: 361.42         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 750 Ti  Off  | 0000:01:00.0      On |                  N/A |
| 29%   35C    P8     1W /  38W |    100MiB /  2044MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      2861    G   /usr/lib/xorg/Xorg                              90MiB |
+-----------------------------------------------------------------------------+
7
valerio_sperati

Enfin, j'ai résolu! Ce message Ubuntu 16.04, Theano et Cuda

suggère d'ajouter un drapeau 

nvcc.flags=-D_FORCE_INLINES 

en ligne de commande, la ligne de commande devient:

THEANO_FLAGS=floatX=float32,device=gpu,nvcc.flags=-D_FORCE_INLINES python check1.py

Il semble corriger un bogue lors de l’utilisation de la glibc 2.23

correctif pour glibc 2.23

Maintenant, le programme utilise correctement le GPU, voici le bon résultat:

THEANO_FLAGS=floatX=float32,device=gpu,nvcc.flags=-D_FORCE_INLINES python check1.py
Using gpu device 0: GeForce GTX 750 Ti (CNMeM is disabled, cuDNN not available)
[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 0.317012 seconds
Result is [ 1.23178029  1.61879349  1.52278066 ...,  2.20771813  2.29967761
  1.62323296]
Used the gpu

Notez qu'avant d'essayer cette solution, j'avais supprimé nvidia-cuda-toolkit et installé le site Web CUDA à partir de Nvidia, en suivant une partie des instructions trouvées ici: 

CUDA avec Ubuntu 16.04

C'est ce que j'ai fait exactement:

1) J'ai téléchargé CUDA à partir d'ici Téléchargement de CUDA 7.5 En sélectionnant LINUX, x86_64, Ubuntu 15.04, deb local

2) j'ai installé le fichier deb

dpkg -i cuda_repo-ubuntu1504-7-5-local_7.5-18_AMD64.deb

3) Puis courez 

apt-get update

Cela donne des erreurs! Je l'ai corrigé en écrasant le fichier Release dans\var\cuda-repo-7.5-local avec les lignes suivantes:

Origin: NVIDIA
Label: NVIDIA CUDA
Architecture: repogenstagetemp
MD5Sum:
 51483bc34577facd49f0fbc8c396aea0            75379 Packages
 4ef963dfa4276be01db8e7bf7d8a4f12            21448 Packages.gz
SHA256:
 532b1bb3b392b9083de4445dab2639b36865d7df1f610aeef8961a3c6f304d8a            75379 Packages
 2e48cc13b6cc5856c9c6f628c6fe8088ef62ed664e9e0046fc72819269f7432c            21448 Packages.gz

(désolé, je ne me rappelle plus où j'ai lu cette solution).

4) Je cours avec succès 

apt-get-update
apt-get install cuda

5) Tout a été inséré dans\usr\local\cuda-7.5

6) J'ai commenté la ligne n 115 dans le fichier\usr\local\cuda-7.5\include\Host-config.h

 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9)

//#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!

#endif /* __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9) */

ce qui semble empêcher CUDA d'utiliser gcc 5.4 Après toutes ces opérations, j'ai mis à jour le fichier .theanorc, en ajoutant la racine cuda

[cuda] 
root = /usr/local/cuda-7.5 

C'est tout :)

PS: Je ne sais pas si cela fonctionnerait même avec nvidia-cuda-toolkit!

8
valerio_sperati

Dans mon système, ce problème a été résolu simplement en redémarrant le système. Peut-être que vous pouvez essayer. 

0
sv_jan5

J'ai résolu ce problème en ajoutant le chemin cuda au ~/.bashrc, comme suit:

export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
0
H.WEI