web-dev-qa-db-fra.com

impossible de créer le descripteur Cudnn: CUDNN_STATUS_INTERNAL_ERROR

J'ai installé la version GPU tensorflow 1.0.1 sur mon Macbook Pro avec GeForce GT 750M. Également installé CUDA 8.0.71 et CUDNN 5.1. J'exécute un code tf qui fonctionne bien avec tensorflow non-processeur mais sur la version GPU, j'obtiens cette erreur (une fois de temps cela fonctionne aussi):

name: GeForce GT 750M
major: 3 minor: 0 memoryClockRate (GHz) 0.9255
pciBusID 0000:01:00.0
Total memory: 2.00GiB
Free memory: 67.48MiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:01:00.0)
E tensorflow/stream_executor/cuda/cuda_driver.cc:1002] failed to allocate 67.48M (70754304 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY
Training...

E tensorflow/stream_executor/cuda/cuda_dnn.cc:397] could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
E tensorflow/stream_executor/cuda/cuda_dnn.cc:364] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
F tensorflow/core/kernels/conv_ops.cc:605] Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms) 
Abort trap: 6

Que se passe-t-il ici? Est-ce un bug dans tensorflow. S'il vous plaît aider.

Voici l'espace mémoire GPU lorsque j'exécute le code python:

Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 83.477 of 2047.6 MB (i.e. 4.08%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 83.477 of 2047.6 MB (i.e. 4.08%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 83.477 of 2047.6 MB (i.e. 4.08%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 1.1016 of 2047.6 MB (i.e. 0.0538%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 1.1016 of 2047.6 MB (i.e. 0.0538%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 1.1016 of 2047.6 MB (i.e. 0.0538%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 1.1016 of 2047.6 MB (i.e. 0.0538%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 91.477 of 2047.6 MB (i.e. 4.47%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 22.852 of 2047.6 MB (i.e. 1.12%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 22.852 of 2047.6 MB (i.e. 1.12%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 36.121 of 2047.6 MB (i.e. 1.76%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 71.477 of 2047.6 MB (i.e. 3.49%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 67.477 of 2047.6 MB (i.e. 3.3%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 67.477 of 2047.6 MB (i.e. 3.3%) Free
MacBook-Pro:cuda-smi-master xxxxxx$ ./cuda-smi
Device 0 [PCIe 0:1:0.0]: GeForce GT 750M (CC 3.0): 67.477 of 2047.6 MB (i.e. 3.3%) Free
5
Shimano

J'ai réussi à le faire fonctionner en supprimant le dossier .nv de mon dossier personnel:

Sudo rm -rf ~/.nv/
12
Félix Fu

Aussi étrange que cela puisse paraître, essayez de redémarrer votre ordinateur et réexécutez votre modèle. Si le modèle fonctionne correctement, le problème concerne votre allocation de mémoire GPU et la gestion de tensorflows de cette mémoire disponible. Sur les fenêtres 10 j’avais deux terminaux ouverts et une fermeture résolut mon problème. Il pourrait y avoir des threads ouverts (zombie) qui conservent encore de la mémoire.

4
ksooklall

Dans mon cas, il semble que le problème soit dû à un décalage entre tensorflow et cudnn . Ce qui suit m’a aidé (j’ai travaillé sur Ubuntu 16.04 avec NVidia Tesla K80 sur Google Cloud. 9.0): 

  1. Enlevez complètement cuDNN:

    Sudo rm /usr/local/cuda/include/cudnn.h
    Sudo rm /usr/local/cuda/lib64/libcudnn*
    

    Après cela, importer tensorflow devrait provoquer une erreur.

  2. Télécharger la version appropriée de CUDNN. Notez qu'il existe cuDNN 7.0.4 pour CUDA 9.0 et cuDNN 7.0.4 pour CUDA 8.0. Vous devriez choisir celui qui correspond à votre version de CUDA. Soyez prudent à cette étape ou vous aurez à nouveau un problème similaire. Installez cuDNN comme d'habitude:

    tar -xzvf cudnn-9.0-linux-x64-v7.tgz
    cd cuda
    Sudo cp -P include/cudnn.h /usr/include
    Sudo cp -P lib64/libcudnn* /usr/lib/x86_64-linux-gnu/
    Sudo chmod a+r /usr/lib/x86_64-linux-gnu/libcudnn*
    

    Dans cet exemple, j'ai installé cuDNN 7.0.x pour CUDA 9.0 (x importe peu). Veillez à faire correspondre votre version de CUDA.

  3. Redémarrer le PC. Dans mon cas, le problème a disparu. Si l'erreur persiste, envisagez d'installer une autre version de tensorflow.

J'espère que ça aide quelqu'un.

3
Danila Savenkov

Je reçois aussi la même erreur et j'ai résolu le problème. Les propriétés de mon système étaient les suivantes: 

  • Système d'exploitation: Ubuntu 14.04
  • GPU: GTX 1050Ti
  • Pilote Nvidia: 375,66
  • Tensorflow: 1.3.0
  • Prix: 6.0.21 (cudnn-8.0-linux-x64-v6.0.deb)
  • Cuda: 8.0.61
  • Keras: 2.0.8

Voici comment j'ai résolu le problème: 

  1. J'ai copié les fichiers cudnn aux emplacements appropriés (/usr/local/cuda/include et/usr/local/cuda/lib64 )
  2. J'ai défini les variables d'environnement comme:

    * export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
    * export CUDA_HOME=/usr/local/cuda
    
  3. J'ai également exécuté Sudo ldconfig -v command pour mettre en cache les bibliothèques partagées pour l'éditeur de liens au moment de l'exécution. 

J'espère que ces étapes aideront également quelqu'un qui est sur le point de devenir fou.

2

Ceci est cudnn problème compatible. Vérifiez par exemple ce que vous avez installé avec le GPU, tensorflow-gpu. Quelle est la version? La version est-elle compatible avec la version de votre cudnn et cudnn est-il la bonne version pour votre cuda ?.

J'ai observé que: cuDNN v7.0.3 pour Cuda 7.*cuDNN v7.1.2 pour Cuda 9.0cuDNN v7.3.1 pour Cuda 9.1 et ainsi de suite.

Vérifiez donc également la version correcte de TensorFlow pour vos configurations cuda . Par exemple -using tensorflow-gpu: TF v1.4 pour cudnn 7.0.*TF v1.7 et supérieur pour cudnn 9.0.*, etc.

Donc, tout ce que vous avez à faire est de réinstaller la version appropriée de Cudnn . J'espère que cela vous aidera!

1
Nwoye CID

J'ai rencontré ce problème lorsque j'ai installé accidentellement CUDA 9.2 libcudnn7_7.2.1.38-1 + cuda9.2_AMD64.deb au lieu de libcudnn7_7.0.5.15-1 + cuda9.0_AMD64.deb sur un système avec CUDA 9.0 installé.

J'y suis arrivé parce que j'avais installé CUDA 9.2 et que j'avais rétrogradé à CUDA 9.0, et évidemment, libcudnn est spécifique aux versions. 

0
jrounds

Pour moi, ré-exécuter l'installation de CUDA comme décrit ici a résolu le problème:

# Add NVIDIA package repository
Sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_AMD64.deb
Sudo apt install ./cuda-repo-ubuntu1604_9.1.85-1_AMD64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_AMD64.deb
Sudo apt install ./nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_AMD64.deb
Sudo apt update

# Install CUDA and tools. Include optional NCCL 2.x
Sudo apt install cuda9.0 cuda-cublas-9-0 cuda-cufft-9-0 cuda-curand-9-0 \
    cuda-cusolver-9-0 cuda-cusparse-9-0 libcudnn7=7.2.1.38-1+cuda9.0 \
    libnccl2=2.2.13-1+cuda9.0 cuda-command-line-tools-9-0

Pendant l'installation, apt-get a dégradé cudnn7, ce qui, à mon avis, est le coupable. Probablement, il a été mis à jour accidentellement avec apt-get upgrade vers une version incompatible avec un autre composant du système.

0
Francesco Pasa

Moi aussi j'ai rencontré le même problème:

Using TensorFlow backend.
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:937] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties: 
name: GeForce GTX 1050
major: 6 minor: 1 memoryClockRate (GHz) 1.493 pciBusID 0000:01:00.0
Total memory: 3.95GiB
Free memory: 3.60GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1050, pci bus id: 0000:01:00.0)
E tensorflow/stream_executor/cuda/cuda_dnn.cc:385] could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
E tensorflow/stream_executor/cuda/cuda_dnn.cc:352] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
F tensorflow/core/kernels/conv_ops.cc:532] Check failed:  stream->parent()->GetConvolveAlgorithms(&algorithms)

Aborted (core dumped)

Mais dans mon cas, utiliser Sudo avec la commande a parfaitement fonctionné.

0
Abhay Jeet Singh