CUDNN_STATUS_NOT_INITIALIZED imprévisible sur Windows

J’exécute la formation sur réseau neuronal et la prédiction de keras sur GTX 1070 sous Windows 10. La plupart du temps, cela fonctionne, mais de temps en temps il se plaint

E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:359] could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:366] error resortingeving driver version: Unimplemented: kernel reported driver version not implemented on Windows E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:326] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM F c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\kernels\conv_ops.cc:659] Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms) 

Cela ne peut être expliqué ni par une erreur littérale, ni par une erreur de MOO.

Comment réparer?

    Essayez de limiter votre utilisation de gpu avec l’option set gpu per_process_gpu_memory_fraction.

    Jouez avec elle pour voir ce qui fonctionne et ce qui ne fonctionne pas.

    Je recommande d’utiliser .7 comme base de départ.

    J’ai trouvé la solution à ce problème. J’ai eu le même problème sur Windows 10 avec Nvidia GEforce 920M. Recherchez la version correcte de la bibliothèque cudnn. Si la version n’est pas compatible avec la version CUDA, elle ne jettera pas l’erreur lors de l’installation du tensorflow mais interférera lors de l’allocation de mémoire dans le GPU. Vérifiez vos versions CUDA et CUDNN. Suivez également les instructions concernant la création des sessions mentionnées ci-dessus.

    J’ai rencontré le problème parfois sur Windows10 et Keras. Redémarrez le problème pendant une courte période, mais recommencez.

    Je me réfère à https://github.com/fchollet/keras/issues/1538

     import tensorflow as tf from keras.backend.tensorflow_backend import set_session config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.3 set_session(tf.Session(config=config)) 

    les parameters résolvent le problème d’arrêt.

    le tf doku m’aide beaucoup Permettant la croissance de la mémoire GPU

    La première est l’option allow_growth, qui tente d’allouer autant de mémoire GPU basée sur les allocations d’exécution: elle commence à allouer très peu de mémoire, et à mesure que les sessions s’exécutent et que davantage de mémoire GPU est nécessaire, nous étendons la Processus TensorFlow. Notez que nous ne libérons pas de mémoire, car cela peut aggraver encore la fragmentation de la mémoire. Pour activer cette option, définissez l’option dans ConfigProto par:

     config = tf.ConfigProto() config.gpu_options.allow_growth = True session = tf.Session(config=config, ...) 

    ou

     with tf.Session(graph=graph_node, config=config) as sess: ... 

    La seconde méthode est l’option per_process_gpu_memory_fraction, qui détermine la fraction de la quantité totale de mémoire à allouer à chaque GPU visible. Par exemple, vous pouvez indiquer à TensorFlow de n’allouer que 40% de la mémoire totale de chaque GPU en:

     config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.4 session = tf.Session(config=config, ...)