我不明白BLAS,LAPACK和ATLAS是如何相关的以及我应该如何一起使用它们!我一直在查看他们的所有手册,我对BLAS和LAPACK以及如何在我找到的极少数示例中使用它们有了一般概念,但我找不到任何使用ATLAS的实际示例来查看它与这两个.
我正在尝试对矩阵做一些低级别的工作,我的主要语言是C.首先我想使用GSL,但它说如果你想要最好的性能,你应该使用BLAS和ATLAS.有没有什么好的网页提供一些很好的例子,说明如何一起使用这些(在C中)?换句话说,我正在寻找使用这三个(或其中任何一个子集!)的教程.总之我很困惑!
我现在在mongodb Atlas上自由地创建并创建了集群,我现在想知道如何使用robomongo创建数据库并连接到它?
该theano安装文档状态,即theano将作为默认使用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库.如果你sudo apt-get install python-numpy python-scipy在Ubuntu下安装它,我认为numpy带有BLAS .
这是文件列表 /usr/lib64/python2.6/dist-packages/scipy/lib/blas
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
Run Code Online (Sandbox Code Playgroud)
这是输出distutils.__config__.show()如下
blas_info:
libraries = ['blas']
library_dirs = ['/usr/lib64'] …Run Code Online (Sandbox Code Playgroud) 我正在尝试将armadillo库安装到我的linux系统(ubuntu 12.04)上.首先需要BOOST BLAS ATLAS和LAPACK进行安装.有没有办法检查这些库是否已经安装?
我正在使用ATLAS进行LAPACK和多线程BLAS例程,并且注意到当我的矩阵足够大以致ATLAS使用BLAS的多线程版本时,我从Valgrind得到初始化错误.这是我的代码中的一个最小示例:
#include <stdio.h>
#include <stdlib.h>
extern void dgetrf_(int *, int *, double *, int *, int *, int *);
extern void dgetri_(int *, double *, int *, int *, double *, int *, int *);
extern void dgemm_(char *, char *, int *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *);
int main(void)
{
double *m1,*m2,*work,*temp;
int dim = 576;
int i,j,info;
int lwork = dim * dim; …Run Code Online (Sandbox Code Playgroud) 我正在尝试编译numpyv1.12,以获得对ATLAS / LAPACK例程的支持。
问题
我用于编译的设置似乎无法将ATLAS / LAPACK库引入numpy。
设置
我正在使用的主机(计算群集)没有管理员特权。
但是,节点可以通过GNU模块访问gcc4.7.2和glibc5.3.0、2.17和2.22以及ATLAS / LAPACK库和标头v3.10.2。
出于兼容性原因,我正在使用包含Python 2.7.16的虚拟环境。同样,numpy出于同样的原因,我正在安装旧版本的。如果一切正常,我可以探索的较新版本,numpy但目前,这就是我正在使用的版本。
我的源目录numpy有一个名为的配置文件site.cfg,其中包含以下指令:
[ALL]
library_dirs = /usr/local/lib:/net/module/sw/glibc/2.22/lib64:/net/module/sw/atlas-lapack/3.10.2/lib
include_dirs = /usr/local/include:/net/module/sw/glibc/2.22/include:/net/module/sw/atlas-lapack/3.10.2/include
[atlas]
libraries = lapack,f77blas,cblas,atlas
library_dirs = /net/module/sw/atlas-lapack/3.10.2/lib
include_dirs = /net/module/sw/atlas-lapack/3.10.2/include
Run Code Online (Sandbox Code Playgroud)
我numpy通过以下命令进行编译:
$ CFLAGS="${CFLAGS} -std=c99 -fPIC" LDFLAGS="-L/home/areynolds/.conda/envs/genotyping_environment/lib -Wl,-rpath=/home/areynolds/.conda/envs/genotyping_environment/lib -Wl,--no-as-needed -Wl,--sysroot=/,-L/net/module/sw/glibc/2.22/lib64" python setup.py build --fcompiler=gnu95
Run Code Online (Sandbox Code Playgroud)
我正在使用--fcompiler=gnu95ATLAS / LAPACK库,是使用GNU Fortran编译的。我重写CFLAGS,并LDFLAGS以变量的GCC工具包可以编译和链接正确。
问题
编译之后,我测试该numpy库以查看通过一种方法安装了什么:
$ python
... …Run Code Online (Sandbox Code Playgroud) ATLAS 3.10.1不会安装在我组织的CentOS 6.x平台上,因为它会检测CPU限制.在旧版本的软件包中,有一个配置标志可以将油门检查关闭(-Si cputhrchk 0)并且无论如何都要向前进.该选项在几个版本之前就被删除了.我理解这个决定背后的原因 - 开发人员担心他们软件的性能和声誉以及CPU限制使得ATLAS无法自我调整.精细.我的问题是,无论ATLAS的性能如何,我只需要完成构建.我知道,有很多方法可以停止节流,但是我没有,也许不会获得许可在这台机器上乱用CPU频率.所以我需要的是一种通过ATLAS油门检查的方法.我已经看到了一些关于破解配置脚本的讨论,但是我看不出自己该怎么做.没有人在ATLAS sourceforge网站上回答,这不是批评那里的任何人.只是想表明我的情况.所以:任何人都知道如何通过ATLAS的油门检查?谢谢.
我一直在将MATLAB代码移植到Python上,经过大量工作后,我发现了一些有用的东西.然而,缺点是Python运行我的代码比MATLAB运行得慢.我知道使用优化的ATLAS库会加快速度,但实际上实现这一点会让我感到困惑.这是发生了什么:
我启动了没有安装BLAS的ipython会话:
import numpy.distutils.system_info as sysinfo
import time
In [11]: sysinfo.get_info('atlas')
Out[11]: {}
timeit( eig(randn(1E2,1E2)) )
100 loops, best of 3: 13.4 ms per loop
Run Code Online (Sandbox Code Playgroud)
Matlab中的相同代码运行速度是原来的两倍
tic,eig(randn(1E2));toc*1000
6.5650
Run Code Online (Sandbox Code Playgroud)
我从Ubuntu存储库安装了非优化的ATAS deb.重新启动ipython,现在我得到:
In [2]: sysinfo.get_info('atlas')
...
Out[2]:
{'define_macros': [('ATLAS_INFO', '"\\"3.8.4\\""')],
'include_dirs': ['/usr/include/atlas'],
'language': 'f77',
'libraries': ['lapack', 'f77blas', 'cblas', 'atlas'],
'library_dirs': ['/usr/lib/atlas-base/atlas', '/usr/lib/atlas-base']}
Run Code Online (Sandbox Code Playgroud)
和测试代码:
In [4]: timeit( eig(randn(1E2,1E2)) )
100 loops, best of 3: 16.8 ms per loop
Run Code Online (Sandbox Code Playgroud)
所以没有更快.如果有任何触摸速度较慢.但我还没有切换到优化的BLAS.我按照这些说明操作:http://danielnouri.org/notes/category/python/我构建库并用这些库覆盖非优化版本.我重新开始ipython但是没有变化:
In [4]: timeit( eig(randn(1E2,1E2)) )
100 loops, best of 3: …Run Code Online (Sandbox Code Playgroud)