2015-03-13 96 views
2

我试图在Ubuntu 14.04 LTS(64位)中使用NumPy加速矩阵操作。而不是使用ATLAS(实际上,当我使用ATLAS时,只有1个线程完全运行,其他7个线程无所事事,即使我指定了OMP_NUM_THREADS=8也是如此),我决定给OpenBLAS一试。安装OpenBLAS和Numpy后没有_dotblas.so

我花了好几个小时的时间,按照几个教程来构建OpenBLASNumPy的源代码,例如, [1],[2],[3],[4][5]。但是,编译NumPy后,它们都不能生成_dotblas.so,这是一个加速矩阵之间操作的关键文件。

我可以知道有人在Ubuntu 14.04下成功构建NumPy和OpenBLAS吗?如果是这样,请你让我知道该怎么办?

谢谢。


更新:

下面基本上是我从上面的五个职位总结,并在我的机器上试过:

# OpenBLAS 
git clone git://github.com/xianyi/OpenBLAS 
cd OpenBLAS 
make FC=gfortran 
sudo make PREFIX=/opt/OpenBLAS/ install 
cd .. 
# let the system know 
sudo sh -c 'echo "/opt/OpenBLAS/lib" > /etc/ld.so.conf.d/openblas.conf' 
sudo ldconfig 

# Numpy 
git clone https://github.com/numpy/numpy 
cd numpy 
vim site.cfg # and put the following content within #### in site.cfg 
#### 
[default] 
library_dirs = /opt/OpenBLAS/lib 
[atlas] 
atlas_libs = openblas 
library_dirs = /opt/OpenBLAS/lib 
[lapack] 
lapack_libs = openblas 
library_dirs = /opt/OpenBLAS/lib 
#### 
export BLAS=/opt/OpenBLAS/lib/libopenblas.a 
export LAPACK=/opt/OpenBLAS/lib/libopenblas.a 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/OpenBLAS/lib/ 
python setup.py build 
sudo python setup.py install 

UPDATE:以上脚本已经过测试,在Ubuntu 12.04和14.04 64位上都能很好地工作。

回答

3

对于那些还在用OpenBLAS构建NumPy的人来说,_dotblas模块从NumPy 1.10.0开始不再可用,根据Release Notes。从this post找到。

+0

感谢您提出这一点 - 我已经添加了一个[新的测试脚本](https://gist.github.com/alimuldal/eb0f4eea8af331b2a890)到[我以前的指南](http://stackoverflow.com/questions/11443302 /编译-numpy-with-openblas-integration/14391693#14391693)用于编译针对OpenBLAS的numpy – 2015-03-14 19:49:17

+0

@ali_m:感谢您的精彩指南!我以前从中学到很多东西。实际上,在你的指南中,你没有把'[atlas]'和'[lapack]'放在* site.cfg *文件中,而另一些人则声称这两个很重要。如果'[atlas]'和'[lapack]'真的有必要,你可以评论吗? – mintaka 2015-03-15 00:16:09

+0

[ATLAS](http://math-atlas.sourceforge.net/)是一个替代BLAS实现。如果你想使用ATLAS而不是OpenBLAS(如果你同时包含'[atlas]'和'[openblas]'部分,那么'site.cfg'的这一部分将是非常重要的,那么我认为numpy优先考虑通过ATLAS与OpenBLAS进行链接,所以它不会有任何区别)。因为OpenBLAS的[默认版本](https://github.com/xianyi/OpenBLAS/blob/develop/Makefile.rule#L75-L77),所以''[lapack]'部分也是不必要的。还包括[netlib-lapack](http://www.netlib.org/lapack/)的内容。 – 2015-03-15 00:23:27