2016-01-19 3 views
0

Я пытаюсь использовать cuda для ускорения тензорного потока. Я использую shadoworflow, используя изображение докера.Невозможно получить cuda для работы в tensorflow

Во-первых, когда я запускаю графический процессор изображения, то есть несоответствие в переменной окружения LT_LIBRARY_PATH:

~# echo $LD_LIBRARY_PATH 
/usr/local/nvidia/lib:/usr/local/nvidia/lib64: 
[email protected]:~# ls /usr/local/ 
bin cuda cuda-7.0 etc games include lib man sbin share src 

Там нет каталога есть NVIDIA. Когда я пытаюсь запустить convolutional.py демо, он не может инициализировать поддержку Cuda:

# python models/image/mnist/convolutional.py 
Succesfully downloaded train-images-idx3-ubyte.gz 9912422 bytes. 
Succesfully downloaded train-labels-idx1-ubyte.gz 28881 bytes. 
Succesfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes. 
Succesfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes. 
Extracting data/train-images-idx3-ubyte.gz 
Extracting data/train-labels-idx1-ubyte.gz 
Extracting data/t10k-images-idx3-ubyte.gz 
Extracting data/t10k-labels-idx1-ubyte.gz 
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 8 
modprobe: ERROR: ../libkmod/libkmod.c:556 kmod_search_moddep() could not open moddep file '/lib/modules/4.2.0-23-generic/modules.dep.bin' 
E tensorflow/stream_executor/cuda/cuda_driver.cc:466] failed call to cuInit: CUDA_ERROR_UNKNOWN 
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:98] retrieving CUDA diagnostic information for host: d578acbbc2cd 
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:106] hostname: d578acbbc2cd 
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:131] libcuda reported version is: Not found: was unable to find libcuda.so DSO loaded into this program 
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:242] driver version file contents: """NVRM version: NVIDIA UNIX x86_64 Kernel Module 352.68 Tue Dec 1 17:24:11 PST 2015 
GCC version: gcc version 5.2.1 20151010 (Ubuntu 5.2.1-22ubuntu2) 
""" 
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:135] kernel reported version is: 352.68 
I tensorflow/core/common_runtime/gpu/gpu_init.cc:112] DMA: 
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 8 

Затем он продолжает тренироваться, используя только центральный процессор.

# find /usr -name libcuda.so 
/usr/lib/x86_64-linux-gnu/libcuda.so 

Таким образом, в изображении докера есть только реализация gnu cpu cuda. Нет материала NVIDIA. В сеансе хост убунту 15.10, я libcuda.so установил:

$ find /usr -name libcuda.so 
/usr/lib/x86_64-linux-gnu/libcuda.so 
/usr/lib/i386-linux-gnu/libcuda.so 
/usr/local/cuda-7.5/targets/x86_64-linux/lib 
/stubs/libcuda.so 

Так что это, кажется, окурки ... не уверен, почему.

Есть ли какой-то трюк, чтобы заставить это работать?

+0

Это похоже на поврежденную установку ядра Linux для меня и не имеет ничего общего с CUDA. Также обратите внимание, что Ubuntu 15.10 в настоящее время не поддерживается CUDA, поэтому вы, вероятно, не собираетесь это работать, даже после решения вашего исправленного обновления ядра. – talonmies

ответ

2

Попробуйте восстановить изображение Docker непосредственно из репозитория Tensorflow (т. Е. Не полагайтесь на изображение в реестре контейнера) и используйте https://github.com/NVIDIA/nvidia-docker для запуска контейнера (команда Docker, описанная в документации Tensorflow, не переносима).

+1

Я получил TensorFlow для запуска 15.10 с ускорением CUDA, но не внутри изображения докера. Думаю, мне просто нужно подождать, пока вещи будут обновлены. – drdozer

1

У меня была аналогичная проблема, хотя и не в докер. Libcuda.so в/usr/local/cuda/lib64/stubs был сломанной символической ссылкой. Когда я искал libcuda.so, он только открыл файл в папке lib32.

Кажется, что проблема заключалась в том, как я изначально установил драйвер устройства NVIDIA. В какой-то момент процесса установки драйвера вам предоставляется возможность установить драйверы lib32. Я думал, это означало в дополнение к драйверам lib64, поэтому я выбрал его. Оказывается, он устанавливает только lib32, а не драйверы lib64.

Я переустановил драйвер устройства NIVDIA, на этот раз не выбрав параметр lib32. Теперь тензорный поток находит libcuda.so.

+1

Такая обратная связь кажется более подходящей в качестве комментария. Это не настоящий ответ. – Kris

1

У меня была такая же проблема с запуском тензорного потока на машине Ubuntu после того, как я обновил свой драйвер до 352.63 и 352.93. (Я помню, что он работает с 346. *, но когда я пытаюсь установить 346., по какой-то причине он устанавливает 352. автоматически).

Я, наконец, понял, что это вызвано проблемой разрешения. (Я могу запустить его с помощью root). Таким образом, я сменил разрешение файла libcuda.so.352-63 на исполняемый файл любым, и теперь он работает хорошо.

Надеюсь, это будет полезно тем, кто все еще борется с этой проблемой.

Я не пробовал докер, но я предполагаю, что это также вызвано настройкой разрешения.

1

после обновления драйвера NVIDIA для 378.09 на Ubuntu 14.10 У меня была такая же ошибка, , хотя все права на файлы lib были установлены правильно.
Благодаря @PhoenixQ, я пытался работать с sudo, и это сработало.

После этого я попытался бежать без sudo еще раз, и ошибка исчезла. Я не уверен, что произошло, но, возможно, что-то было сконфигурировано во время разговора с sudo, что было невозможно без проблем sudo.

Так решение:

  1. Попробуйте запустить то же самое с sudo.
  2. После этого. Трю работает без sudo. Работал для меня.
+0

sudo тоже работал для меня! –

Смежные вопросы