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

Как убедиться, что библиотеки BLAS numpy доступны в виде динамически загружаемых библиотек?

документация по установке anano утверждает, что theano будет по умолчанию использовать библиотеки BLAS из numpy, если "библиотеки BLAS доступны в виде динамически загружаемых библиотек". Это, похоже, не работает на моей машине, см. Сообщение об ошибке.

  • Как узнать, могут ли библиотеки numys BLAS быть динамически загружаемыми?
  • Как перекомпилировать библиотеки BLAS с numpy, если они не являются динамически загружаемыми?

Просьба указать, если вам нужна дополнительная информация!

Сообщение об ошибке

We did not found a dynamic library into the library_dir of the library we use for blas. If you use ATLAS, make sure to compile it with dynamics library. /usr/bin/ld: cannot find -lblas

Приложение

Библиотека theano требует, помимо прочего, numpy и библиотеки BLAS. Я понял, что numpy поставляется с BLAS, если вы установите его с помощью sudo apt-get install python-numpy python-scipy под Ubuntu.

Это список файлов /usr/lib64/python2.6/dist-packages/scipy/lib/blas

cblas.so  info.py   __init__.py   scons_support.py   setup.py     
fblas.so  info.pyc  __init__.pyc  scons_support.pyc  setup.pyc  
setupscons.py  test
setupscons.pyc

Это вывод distutils.__config__.show() выглядит следующим образом

blas_info:
    libraries = ['blas']
    library_dirs = ['/usr/lib64']
    language = f77

lapack_info:
    libraries = ['lapack']
    library_dirs = ['/usr/lib64']
    language = f77

atlas_threads_info:
  NOT AVAILABLE

blas_opt_info:
    libraries = ['blas']
    library_dirs = ['/usr/lib64']
    language = f77
    define_macros = [('NO_ATLAS_INFO', 1)]

atlas_blas_threads_info:
  NOT AVAILABLE

lapack_opt_info:
    libraries = ['lapack', 'blas']
    library_dirs = ['/usr/lib64']
    language = f77
    define_macros = [('NO_ATLAS_INFO', 1)]

atlas_info:
  NOT AVAILABLE

lapack_mkl_info:
  NOT AVAILABLE

blas_mkl_info:
  NOT AVAILABLE

atlas_blas_info:
  NOT AVAILABLE

mkl_info:
  NOT AVAILABLE
4b9b3361

Ответ 1

После загрузки дистрибутива библиотек Anaconda из библиотеки python я столкнулся с той же проблемой на 64-битной версии Ubuntu 12.04 LTS. Указание Theano на каталог, содержащий libblas.so, позаботился об этом.

$ THEANO_FLAGS=blas.ldflags="-L/usr/lib/ -lblas" python rbm.py

Ответ 2

С ubuntu, в менеджере пакетов, libblas.so поставляется с пакетом libblas3gf. Если каким-то образом он не создает libblas.so, но создает libblas.so.X, вручную создайте символическую ссылку вроде:

cd /usr/lib64
sudo ln -s libblas.so.3gf libblas.so

NB: Это отлично работает для меня, но прочитайте комментарий ниже. И имейте в виду, что этот пакет не будет оптимизирован для вашего конкретного оборудования (прочитайте другие ответы, которые предлагают ATLAS, например).

Ответ 3

В вашем случае вы должны посмотреть /usr/lib64 и посмотреть, доступны ли libblas и т.д. в виде файлов .so или .so.X.

Повторная компиляция BLAS не является тривиальной, но вы можете попробовать установить соответствующие пакеты ATLAS для своего распространения.

Ответ 4

Если установлена ​​последняя версия numpy, установленная достаточно, theano будет работать правильно во всех случаях.

Оттуда единственная причина, по которой нужно заботиться о бласах, - это скорость. Блаз по умолчанию очень медленный. Многие distro компилируют numpy снова эту медленную версию blas.

Легкий/быстрый способ ускорить внедрение blas - установить дистрибутив на атлас и атлас devel. Это оптимизированная реализация blas.

Более новая версия Unbuntu, установка атласа в готовом виде - это способ, которым numpy начнет использовать его. Поэтому нет необходимости что-то менять на Theano. Я не знаю, сделает ли это другой дистрибутив.

Лучший способ проверить блавы, которые использует Anano быстро или нет, - это время. Для этого запустите это под bash:

Х = python -c "import theano;import os.path; print os.path.split(theano.__file__)[0]" python ${X}/misc/check_blas.py

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

Ответ 5

Ваш основной вопрос по существу состоит в том, имеют ли поддерживающие дистрибутивы правильные установки или нет, и для этого у меня нет ответа или решения.

Однако у меня есть рекомендация. ATLAS не очень сложно построить. Получите исходный код, распакуйте, убедитесь, что вы удовлетворены его зависимостями, затем запустите настройку и выполните шаги. Часть зависимостей, вероятно, является самой трудоемкой ручной частью процесса.

Конечно, тогда вам нужно пережить numpy, theano и т.д. Хотя я понимаю, что это боль (поверьте, я прошел через нее как для Theano, так и для Hannes Shulz и Andy Mueller CSV), вы получите BLAS настроен для оптимальной работы на вашем оборудовании.