web-dev-qa-db-fra.com

CUDNN_STATUS_NOT_INITIALIZED lors de la tentative d'exécution de TensorFlow

J'ai installé TensorFlow 1.7 sur Ubuntu 16.04 avec Cuda 9.0, CuDNN 7.0.5 et Vanilla Python 2.7 et, bien que leurs échantillons soient exécutés correctement pour CUDA et CuDNN, et que TensorFlow voit le GPU (certains exemples de TensorFlow sont exécutés), ceux utilisant (comme la plupart des exemples de CNN) ne le font pas. Ils échouent avec ces messages d'information:

2018-04-10 16:14:17.013026: I tensorflow/stream_executor/plugin_registry.cc:243] Selecting default DNN plugin, cuDNN
25428 2018-04-10 16:14:17.013100: E tensorflow/stream_executor/cuda/cuda_dnn.cc:403] could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED
25429 2018-04-10 16:14:17.013119: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:369] driver version file contents: """NVRM version: NVIDIA UNIX x86_64 Kernel Module  384.130  Wed Mar 21 03:37:26 PDT 2018
25430 GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)
25431 """
25432 2018-04-10 16:14:17.013131: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:112] version string "384.130" made value 384.130.0
25433 2018-04-10 16:14:17.013135: E tensorflow/stream_executor/cuda/cuda_dnn.cc:411] possibly insufficient driver version: 384.130.0
25434 2018-04-10 16:14:17.013139: E tensorflow/stream_executor/cuda/cuda_dnn.cc:370] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
25435 2018-04-10 16:14:17.013143: F tensorflow/core/kernels/conv_ops.cc:712] Check failed: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNonfusedAlgo<T>(), &algorithms)

L'activation d'un flot de messages VLOG (voir mon lien ci-dessous pour savoir comment faire) ne produisit aucun message pertinent supplémentaire.

Le message clé ici pourrait être "Sélection du plugin DNN par défaut, cuDNN", car en regardant le code, je pourrais penser qu'il ne peut pas charger les modules de la bibliothèque cuDNN, mais je sais que c'est en fait normal (donc un avertissement) et le problème pourrait être autre chose. 

Par exemple, le message "CUDNN_STATUS_NOT_INITIALIZED" semble avoir été provoqué dans une version antérieure par TF de manière trop agressive en allouant la mémoire à l'avance (trouvé dans la liste des problèmes de TF GitHub), de sorte que CuDNN ne pouvait pas initialiser, mais j'ai essayé ces solutions GPU et redémarrage), mais ils ne ont pas aidé.

Des idées sur ce que je devrais essayer ensuite? 

4
Mike Wise

Ok, j’ai trouvé ceci. C’est parce que j’avais la mauvaise version de cuDNN que j’ai installé, donc je soupçonnais que ce n’était pas réellement de trouver la bonne bibliothèque partagée.

En gros, j’ai installé cuDNN v7.1.2 for Cuda 9.1 au lieu de cuDNN v7.1.2 for Cuda 9.0, ce qui semble l’avoir fait échouer en silence - bien que je me serais attendu à un message d’erreur à ce stade. Notez que des VLOG détaillés étaient en cours d’exécution (pour plus d’informations sur la procédure à suivre, consultez ma réponse dans cet article Activer les journaux TF ):

Lorsque j'ai installé cuDNN v7.1.2 for Cuda 9.0, il l'a trouvé et s'est plaint du fait que cette version n'était pas assez nouvelle. En réalité, le vrai problème était qu'elle n'était pas assez âgée, mais au moins j'avais de vraies données avec lesquelles travailler.

À la fin, cuDNN v7.0.5 for Cuda 9.0 était ce dont j'avais besoin et cela fonctionnait.

7
Mike Wise

Avez-vous déjà rencontré cette erreur?

UnknownError (voir ci-dessus pour le suivi): Échec d'obtention de l'algorithme de convolution. Ceci est probablement dû au fait que l'initialisation de cuDNN a échoué. Essayez donc de voir si un message de journal d'avertissement a été imprimé ci-dessus . [[noeud 0-convolutional_2 (défini dans D:\brevet-reconnaissance-multi-GPU\darkflow\darkflow\net\ops\convolution.py: 71) = Conv2D [T = DT_FLOAT, _class = ["loc: @ 0- convolutional_3/cond/FusedBatchNorm_1/Switch "], data_format =" NCHW ", dilations = [1, 1, 1, 1], padding =" VALID ", strides = [1, 1, 1, 1], use_cudnn_on_gpu = true, _device = "/ job: localhost/replica: 0/task: 0/périphérique: GPU: 0"] (0-convolutional_2-0-TransposeNHWCToNCHW-LayoutOptimizer, 0-convolutional/kernel/read)]] [[{{noeud sortie/_89}} = _Recvclient_terminated = false, recv_device = "/ travail: hôte local/réplique: 0/tâche: 0/unité: CPU: 0", send_device = "/ emploi: localhost/réplique: 0/tâche: 0/périphérique: GPU: 0 ", send_device_incarnation = 1, tensor_name =" Edge_676_output ", tensor_type = DT_FLOAT, _device ="/job: localhost/replica: 0/task: 0/device: 0/device: 0:]

0
James