CUDNN_STATUS_NOT_INITIALIZED при попытке запустить TensorFlow

Я установил TensorFlow 1.7 на Ubuntu 16.04 с Cuda 9.0 и CuDNN 7.0.5 и vanilla Python 2.7, и хотя образцы для CUDA и CuDNN работают нормально, и TensorFlow видит GPU (поэтому некоторые примеры TensorFlow работают), те, которые используют CuDNN (как и большинство примеров CNN) нет. Они терпят неудачу с этими информационными сообщениями:

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)

Включение потока сообщений VLOG (см. мою ссылку ниже, чтобы узнать, как это сделать) не привело к появлению каких-либо дополнительных релевантных сообщений.

Ключевым сообщением здесь может быть «Выбор плагина DNN по умолчанию, cuDNN», потому что, глядя на код, я могу подумать, что он не может загрузить библиотечные модули cuDNN, но, насколько я знаю, это на самом деле нормально. (поэтому не предупреждение) и проблема может быть в чем-то другом.

Например, сообщение «CUDNN_STATUS_NOT_INITIALIZED», по-видимому, было вызвано в более ранней версии тем, что TF слишком агрессивно выделял память раньше времени (нашел это в списке проблем TF GitHub), поэтому CuDNN не мог инициализироваться, но я попробовал эти средства (включая сброс GPU и перезагрузка), но они не помогли.

Любые идеи относительно того, что я должен попробовать дальше?


person Mike Wise    schedule 11.04.2018    source источник


Ответы (1)


Хорошо, я обнаружил это, это было вызвано тем, что у меня была установлена ​​неправильная версия cuDNN, поэтому мое подозрение, что на самом деле он не находил правильную общую библиотеку, было верным.

По сути, я установил cuDNN v7.1.2 for Cuda 9.1 вместо cuDNN v7.1.2 for Cuda 9.0, что, по-видимому, приводило к его молчаливому сбою, хотя в этот момент я ожидал сообщения об ошибке. Обратите внимание, что у меня были запущены подробные VLOG (см. мой ответ на этот пост для получения дополнительной информации о том, как это сделать Включение журналов TF):

Когда я установил cuDNN v7.1.2 for Cuda 9.0, он действительно нашел ее и пожаловался, что эта версия недостаточно нова - хотя на самом деле настоящая проблема заключалась в том, что она была недостаточно старой, но, по крайней мере, у меня были некоторые реальные данные для работы.

В конце концов, cuDNN v7.0.5 for Cuda 9.0 было то, что мне было нужно, и это сработало.

person Mike Wise    schedule 14.04.2018
comment
Благодарю вас! Это был именно мой случай. - person Artur Barseghyan; 12.10.2018