Подтвердить что ты не робот

После создания 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
4b9b3361

Ответ 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"