Как использовать Numpy с OpenBLAS вместо Atlas в Ubuntu?

Я искал простой способ установить / скомпилировать Numpy с OpenBLAS, но не нашел простого ответа. Вся документация, которую я видел, требует слишком много знаний для тех, кто, как я, не используется для компиляции программного обеспечения. В Ubuntu есть два пакета, связанных с OpenBLAS: libopenblas-base а также libopenblas-dev, После того, как они установлены, что я должен сделать, чтобы снова установить Numpy вместе с ними? Спасибо!

Обратите внимание, что когда эти пакеты OpenBLAS установлены, Numpy больше не работает: его нельзя импортировать: ImportError: /usr/lib/liblapack.so.3gf: неопределенный символ: ATL_chemv. Проблема возникает также при установке Theano с инструкциями на сайте для Ubuntu.

Это было замечено здесь уже.

3 ответа

Решение

Бежать sudo update-alternatives --all и установить liblapack.so.3gf в /usr/lib/lapack/liblapack.so.3gf

Добавить к принятому ответу (использования update-alternatives), причина этого в том, что OpenBlas несовместим с версией Atlas Lapack. Для каждой из версий Blas и Lapack:

  1. Blas по умолчанию + Lapack по умолчанию => ОК
  2. OpenBlas + по умолчанию Lapack => ОК
  3. Атлас-Блас + Лапак по умолчанию => ОК
  4. Атлас-Блас + Атлас-Лапак => ОК
  5. OpenBlas + Atlas-Lapack => ОШИБКА! (Следующий случай здесь.)

Это как из личного опыта (с точно такой же проблемой), так и из-за понимания, почему такая комбинация не упоминалась в этом блоге сравнения.

Кстати, вы можете просто найти нужные файлы в /etc/alternatives/обычно с именем файла, начинающимся с lib*, Для каждого делать sudo update-alternatives --config <filename>, Например, сделайте следующее:

  • sudo update-alternatives --config libblas.so
  • sudo update-alternatives --config libblas.so.3

изменить версию Blas.

Подумайте об использовании EasyBuild ( http://hpcugent.github.io/easybuild/), инфраструктуры с открытым исходным кодом для сборки и установки программного обеспечения.

Это позволяет (очень легко) создавать и устанавливать (научное) программное обеспечение с использованием различных компиляторов и с использованием различных библиотек BLAS (ATLAS, OpenBLAS, ACML, Intel MKL, ...).

После установки EasyBuild (совет для профессионалов: используйте процедуру начальной загрузки, описанную по адресу https://github.com/hpcugent/easybuild/wiki/Bootstrapping-EasyBuild), он сводится к выполнению одной команды, что-то вроде:

eb numpy-1.6.2-goolf-1.4.10-Python-2.7.3.eb -ldr

Сначала он соберет и установит полный набор инструментов компилятора (goolf: GCC+OpenBLAS+OpenMPI+LAPACK+FFTW), а затем соберет Python и NumPy с этим набором инструментов. И все это, пока ты обедаешь.;-)

Отказ от ответственности: я один из разработчиков EasyBuild.

Другие вопросы по тегам