После создания TensorFlow из источника, видя ошибки libcudart.so и libcudnn
Я создаю TensorFlow из исходного кода. Похоже, что сборка выполнена успешно; однако, когда моя программа TensorFlow вызывает import tensorflow
, появляется одна или обе следующие ошибки:
-
ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory
-
ImportError: libcudnn.5: cannot open shared object file: No such file or directory
Ответы
Ответ 1
Первый, для следующей ошибки:
ImportError: libcudart.so.8.0: невозможно открыть файл общих объектов: нет такого файла или каталога
убедитесь, что ваш LD_LIBRARY_PATH
включает ваш каталог lib64
в том, какой путь вы установили в свой пакет cuda. Вы можете сделать это, добавив строку export
в свой .bashrc
. Для Омара это выглядело так:
Я исправил это, просто добавив путь cuda к моему .bashrc
export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
Для меня мне пришлось сделать линию Омара, а также:
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/
потому что у меня есть две директории, связанные с cuda (возможно, не лучшие).
Второй, вы уверены, что установили cuDNN? Обратите внимание, что это отличается от обычного пакета cuda. Вам необходимо будет зарегистрироваться, а затем загрузить и установить пакет со следующей страницы:
https://developer.nvidia.com/cudnn
Третий, у меня была та же проблема:
ImportError: libcudnn.5: невозможно открыть файл общих объектов: нет такого файла или каталога
Оказывается, нет libcudnn.5
в моих каталогах /usr/local/cuda/lib64
или /usr/local/cuda-8.0/lib64
. Однако у меня есть файл libcudnn.so.6.*
. Чтобы решить проблему, я создал мягкую ссылку:
ln -s libcudnn.so.6.* libcudnn.so.5
в моем каталоге /usr/local/cuda/lib64
. Теперь все работает для меня. Ваш каталог может отличаться, если у вас уже есть cuDNN
, а ваш libcudnn.so.6.*
может быть другой версией, поэтому проверьте это.
Ответ 2
Я столкнулся с той же проблемой
In [1]: import tensorflow
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>()
40 sys.setdlopenflags(_default_dlopen_flags | ctypes.RTLD_GLOBAL)
---> 41 from tensorflow.python.pywrap_tensorflow_internal import *
42 from tensorflow.python.pywrap_tensorflow_internal import __version__
/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py in <module>()
27 return _mod
---> 28 _pywrap_tensorflow_internal = swig_import_helper()
29 del swig_import_helper
/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py in swig_import_helper()
23 try:
---> 24 _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
25 finally:
/usr/local/lib/python3.5/imp.py in load_module(name, file, filename, details)
241 else:
--> 242 return load_dynamic(name, filename, file)
243 elif type_ == PKG_DIRECTORY:
/usr/local/lib/python3.5/imp.py in load_dynamic(name, path, file)
341 name=name, loader=loader, origin=path)
--> 342 return _load(spec)
343
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory
During handling of the above exception, another exception occurred:
ImportError Traceback (most recent call last)
<ipython-input-1-a649b509054f> in <module>()
----> 1 import tensorflow
/usr/local/lib/python3.5/site-packages/tensorflow/__init__.py in <module>()
22
23 # pylint: disable=wildcard-import
---> 24 from tensorflow.python import *
25 # pylint: enable=wildcard-import
26
/usr/local/lib/python3.5/site-packages/tensorflow/python/__init__.py in <module>()
49 import numpy as np
50
---> 51 from tensorflow.python import pywrap_tensorflow
52
53 # Protocol buffers
/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>()
50 for some common reasons and solutions. Include the entire stack trace
51 above this error message when asking for help.""" % traceback.format_exc()
---> 52 raise ImportError(msg)
53
54 # pylint: enable=wildcard-import,g-import-not-at-top,unused-import,line-too-long
ImportError: Traceback (most recent call last):
File "/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "/usr/local/lib/python3.5/imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "/usr/local/lib/python3.5/imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/install_sources#common_installation_problems
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
Я установил cudnn 6.0, когда ему нужно libcudnn.so.5
, видимо, он не смог найти libcudnn.so.5
. Кажется, что вашему тензорному потоку требуется cudnn 5.x, поэтому установите cudnn 5.x
![УСТАНОВКА CUDNN]()
Убедитесь, что вы уже установили cuda 8.0 и экспортировали PATH
и LD_LIBRARY_PATH
Чтобы установить cudnn 5.x, попробуйте выполнить следующие команды
Извлечь файлы tgz
$ tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
Проверьте файлы
$ cd cuda/lib64/
$ ls -l
total 150908
lrwxrwxrwx 1 doom doom 13 Nov 7 2016 libcudnn.so -> libcudnn.so.5
lrwxrwxrwx 1 doom doom 18 Nov 7 2016 libcudnn.so.5 -> libcudnn.so.5.1.10
-rwxr-xr-x 1 doom doom 84163560 Nov 7 2016 libcudnn.so.5.1.10
-rw-r--r-- 1 doom doom 70364814 Nov 7 2016 libcudnn_static.a
Здесь вы увидите 2 символических файла ссылок и просто скопируйте libcudnn.so.5.1.10
и libcudnn_static.a
в /usr/local/cuda/lib64
Сделать символические файлы ссылок
$ cd /usr/local/cuda/lib64/
$ sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5
$ sudo ln -s libcudnn.so.5 libcudnn.so
$ ls -l libcudnn*
lrwxrwxrwx 1 root root 13 May 24 09:24 libcudnn.so -> libcudnn.so.5
lrwxrwxrwx 1 root root 18 May 24 09:24 libcudnn.so.5 -> libcudnn.so.5.1.10
-rwxr-xr-x 1 root root 84163560 May 24 09:23 libcudnn.so.5.1.10
-rw-r--r-- 1 root root 70364814 May 24 09:23 libcudnn_static.a
Скопируйте cudnn.h
в каталог include
в /usr/local/cuda/include
$ sudo cp cudnn.h /usr/local/cuda/include/
Надеюсь, это поможет вам!
Ответ 3
Я исправил это, просто добавив путь cuda к моему .bashrc
export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
Просто имейте в виду, что сначала вам нужно перейти на страницу nvidia Deep Learning, зарегистрировать и загрузить cuDNN, извлечь и скопировать файлы из include и lib64 в вашу установку cuda.
Ответ 4
Я видел подобную ошибку (внизу этого сообщения), но жалуюсь на libcudnn.so.6 вместо libcudart.so.8.0 (см. примечание ниже).
Решение:
- Загрузить ' библиотека cuDNN v6.0 для Linux':
- Перейдите к https://developer.nvidia.com/rdp/cudnn-download
- Нажмите " Загрузить cuDNN v6.0 (27 апреля 2017 г.), для CUDA 8.0 '
- Затем нажмите " библиотека cuDNN v6.0 для Linux". Будет загружен файл (с именем " cudnn-8.0-linux-x64-v6.0.tgz" ).
- Следуйте инструкциям Alexander Yau выше, чтобы установить библиотеку cuDNN v6.0.
Примечание:
Инструкции по установке Tensorflow (начиная с 20/Aug/2017) требуют установки cuDNN v5.1, но моя установка Tensorflow (после инструкции для установка в virtualenv) требуется cuDNN v6.x(как указано в ошибке). Я не знаю, если это ошибка на моей стороне или документация Tensorflow. Тем не менее, выше решение работало для меня.
Обнаруженная ошибка:
In [1]: import tensorflow as tf
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-41389fad42b5> in <module>()
----> 1 import tensorflow as tf
/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/__init__.py in <module>()
22
23 # pylint: disable=wildcard-import
---> 24 from tensorflow.python import *
25 # pylint: enable=wildcard-import
26
/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/__init__.py in <module>()
47 import numpy as np
48
---> 49 from tensorflow.python import pywrap_tensorflow
50
51 # Protocol buffers
/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>()
50 for some common reasons and solutions. Include the entire stack trace
51 above this error message when asking for help.""" % traceback.format_exc()
---> 52 raise ImportError(msg)
53
54 # pylint: enable=wildcard-import,g-import-not-at-top,unused-import,line-too-long
ImportError: Traceback (most recent call last):
File "/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/install_sources#common_installation_problems
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
Ответ 5
Предыдущие ошибки обычно вызваны тем, что не указывать номер версии для Cuda SDK или cuDNN при запуске configure
script. Другими словами, при запуске configure
script всегда указывайте номер версии в ответ на следующие два вопроса:
-
Please specify the Cuda SDK version you want to use, e.g. 7.0.
-
Please specify the cuDNN version you want to use.
Не принимайте системные значения по умолчанию.
Ответ 6
В MacOS эта проблема часто вызвана тем, что bazel работает в среде песочницы, поэтому не соблюдает набор LD_LIBRARY_PATH в вашей локальной оболочке. Я бы не стал вникать в заслугу глубокой интеграции песочницы в инструмент построения.
Простым обходным путем является симплицирование библиотек в /usr/local/lib.
cd /usr/local/lib && ln -s ../cuda/lib/libcudart.8.0.dylib
Ответ 7
Сначала установите библиотеку CUDA (версия 7.5) из здесь
Инструкции по установке:
1- sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
2- sudo apt-get update
3- sudo apt-get install cuda
![введите описание изображения здесь]()
Во-вторых, установите cuDNN из здесь
![введите описание изображения здесь]()
В-третьих, экспортируйте путь cuDNN:
export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
Если у вас есть ошибка типа " Пакет libcudnnX необходимо переустановить", выполните следующие шаги здесь
Ответ 8
TensorFlow 1.2.1 совместим с cuDNN 5.1, но еще не с 6.0. Поэтому просто установите cuDNN 5.1. Кроме того, вам кажется, что отсутствует CUDA 8.0.
Ответ 9
Таинственно, мой libcudnn.so.5
был установлен в ~/cuda/lib64
. Для таких людей, как я, вам нужно изменить
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:~/cuda/lib64"
к
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/yourusername/cuda/lib64"