Как использовать numpy с OpenBLAS вместо Atlas в Ubuntu?
Я искал простой способ установки / компиляции Numpy с OpenBLAS, но не нашел простого ответа. Вся документация, которую я видел, принимает слишком много знаний как должное для кого-то вроде меня, кто не привык компилировать программное обеспечение.
В Ubuntu есть два пакета, связанных с OpenBLAS: libopenblas-base
и libopenblas-dev
.
Как только они установлены, что я должен сделать, чтобы установить Numpy снова с ними?
Спасибо!
Обратите внимание, что когда эти пакеты OpenBLAS установлены, Numpy больше не работает: это не может быть импортные: ImportError: /УСР/Либ/liblapack.так.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:
- Default Blas + Default Lapack = > OK
- OpenBlas + Default Lapack = > OK
- Atlas-Blas + Default Lapack = > OK
- Atlas-Blas + Atlas-Lapack = > OK
- 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 (pro tip: используйте процедуру начальной загрузки, описанную в 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.