Как использовать 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:
- Blas по умолчанию + Lapack по умолчанию => ОК
- OpenBlas + по умолчанию Lapack => ОК
- Атлас-Блас + Лапак по умолчанию => ОК
- Атлас-Блас + Атлас-Лапак => ОК
- 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.