2017-06-08 2 views
0

J'ai suivi les instructions pour installer Theano un GPUArray à partir de la source (versions git), dans les dossiers système (pas en tant qu'utilisateur). Les tests GPUArray s'exécutent correctement sans erreur.Problèmes avec l'installation de Theano en utilisant CUDA lors de l'utilisation de l'utilisateur non-root

Le problème est que Theano ne fonctionne qu'avec le GPU si je l'exécute en tant que root. Exécution de l'example to test gpu:

(python35) [email protected]:~$ THEANO_FLAGS=device=cuda python temp.py 
ERROR (theano.gpuarray): Could not initialize pygpu, support disabled 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/dist-packages/theano/gpuarray/__init__.py", line 179, in <module> 
    use(config.device) 
    File "/usr/local/lib/python3.5/dist-packages/theano/gpuarray/__init__.py", line 166, in use 
    init_dev(device, preallocate=preallocate) 
    File "/usr/local/lib/python3.5/dist-packages/theano/gpuarray/__init__.py", line 73, in init_dev 
    context.cudnn_handle = dnn._make_handle(context) 
    File "/usr/local/lib/python3.5/dist-packages/theano/gpuarray/dnn.py", line 83, in _make_handle 
    cudnn = _dnn_lib() 
    File "/usr/local/lib/python3.5/dist-packages/theano/gpuarray/dnn.py", line 70, in _dnn_lib 
    raise RuntimeError('Could not find cudnn library (looked for v5* or v6*)') 
RuntimeError: Could not find cudnn library (looked for v5* or v6*) 
[Elemwise{exp,no_inplace}(<TensorType(float64, vector)>)] 
Looping 1000 times took 3.201078 seconds 
Result is [ 1.23178032 1.61879341 1.52278065 ..., 2.20771815 2.29967753 
    1.62323285] 
Used the cpu 

si elle est exécutée en tant que root cela fonctionne, bien qu'il y ait encore une erreur liée à cuDNN ne pas être en mesure d'identifier les périphériques peut-être:

(python35) [email protected]:~$ sudo THEANO_FLAGS=device=cuda python3 temp.py 
Can not use cuDNN on context None: cannot compile with cuDNN. We got this error: 
b'/tmp/try_flags_bg7m03hd.c:4:19: fatal error: cudnn.h: No such file or directory\ncompilation terminated.\n' 
Mapped name None to device cuda: TITAN X (Pascal) (0000:01:00.0) 
[GpuElemwise{exp,no_inplace}(<GpuArrayType<None>(float64, vector)>), HostFromGpu(gpuarray)(GpuElemwise{exp,no_inplace}.0)] 
Looping 1000 times took 0.390976 seconds 
Result is [ 1.23178032 1.61879341 1.52278065 ..., 2.20771815 2.29967753 
    1.62323285] 
Used the gpu 

Il y a 2 Titan X sur cette machine. Fonctionne très bien avec Tensorflow. Je ne suis pas en utilisant le fichier .theanorc, mais je l'ai mis à la fois:

(python35) [email protected]:~$ echo $LD_LIBRARY_PATH 
/usr/local/cuda-8.0/lib64 
(python35) [email protected]:~$ echo $CUDA_ROOT 
/usr/local/cuda-8.0/ 

J'ai fait tout en suivant les instructions, et malgré quelques avertissements il n'y avait pas d'erreurs.

Je ne pense pas que ce soit une erreur d'autorisation sur le répertoire de compilation .theano, car si je vois le .theano dir le comportement est le même.

Comment puis-je résoudre ce problème?

Répondre

2

J'ai finalement trouvé le problème. Il y a un aspect manquant dans les instructions pour installer Theano qui est que vous devez vérifier si LIBRARY_PATH est réglé et ajouter les bibliothèques de cuda à lui (notez que ce n'est pas le LD_LIBRARY_PATH).

Si ce n'est pas le cas, exportez-le et vous serez prêt à partir. Donc, pour solution temporaire:

export LIBRARY_PATH=/usr/local/cuda-8.0/lib64 

Persister peut dépendre du système, mais en général, vous pouvez ajouter à la /etc/environment, en ajoutant une ligne:

LIBRARY_PATH=/usr/local/cuda-8.0/lib64 

Ce fixe le message lorsque la racine, et Cuda fixe pour l'utilisateur régulier.