如何确保numpy的BLAS库可为动态加载库?

问题描述 投票:22回答:5

theano installation documentation状态,即theano将作为默认使用BLAS库从numpy的,如果“BLAS库可为动态加载库”。这似乎并没有被工作我的机器上,看到错误消息。

  • 如何才能知道,如果numpy的BLAS库可为动态加载?
  • 如何重新编译numpy的BLAS库,如果他们没有动态加载?

请注明,如果你需要了解更多信息!

错误信息

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,如果你在Ubuntu下sudo apt-get install python-numpy python-scipy安装。

这是/usr/lib64/python2.6/dist-packages/scipy/lib/blas的filelisting

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
linux numpy shared-libraries blas atlas
5个回答
13
投票

下载Python库的蟒蛇发行后,我正好遇到在Ubuntu 12.04 LTS 64位的同样的问题。指着Theano包含目录libblas.so照顾它。

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


3
投票

与Ubuntu,在包管理器,libblas.so自带libblas3gf包。如果不知它不创造libblas.so,而造成libblas.so.X,手动创建一个符号链接,如:

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

注意:这一直为我好,但是阅读以下虽然评论。并牢记这个包不会被优化到特定的硬件(读取其他答案暗示ATLAS例如)。


2
投票

在你的情况,你应该看看在/usr/lib64,看看是否libblas等可作为.so.so.X文件。

重新编译BLAS是不平凡的,但你也许可以尝试为您配送安装相关的ATLAS包。


1
投票

你的主要问题是本质的发行维护者是否正确或不安装的依赖关系之一 - 对,我不知道答案或解决方案。

不过,我有一个建议。 ATLAS是不是很辛苦去建立。获得源代码,解压,保证你满意它的依赖,然后揭开序幕,配置及制作步骤。依赖部分可能是耗时的过程的手动部分的时间最多。

当然,那么你必须重新链接numpy的,theano等。虽然我承认这是一个痛苦(相信我,我通过它去了两个Theano和汉纳斯Shulz&安迪·穆勒的CSV),你得到的好处是BLAS调整到优化您的硬件上运行。


1
投票

如果安装numpy的最近的一个版本足够多,theano将在所有情况下正常工作。

从那里,关心使用的BLAS的唯一原因是与速度有关。默认BLAS是很慢的。许多发行版编译numpy的再这种缓慢的BLAS版本。

一个简单/快捷方式有一个更快的BLAS实现安装包发行约地图集和Atlas devel的。这是一个优化的BLAS实现。

Unbuntu的新版本,图谱中所做的安装是numpy的开始使用它的方式。因此,没有必要对Theano任何改变这一点。我不知道其他的发行版做到这一点。

最好的方法来检查Theano用途是快速与否对时间它BLAS。要做到这一点,在bash下运行如下命令:

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

然后比较所花费的印一些其他的比较结果运行的速度。

© www.soinside.com 2019 - 2024. All rights reserved.