标签: lapack

BLAS,LAPACK和ATLAS之间有什么关系

我不明白BLAS,LAPACK和ATLAS是如何相关的以及我应该如何一起使用它们!我一直在查看他们的所有手册,我对BLAS和LAPACK以及如何在我找到的极少数示例中使用它们有了一般概念,但我找不到任何使用ATLAS的实际示例来查看它与这两个.

我正在尝试对矩阵做一些低级别的工作,我的主要语言是C.首先我想使用GSL,但它说如果你想要最好的性能,你应该使用BLAS和ATLAS.有没有什么好的网页提供一些很好的例子,说明如何一起使用这些(在C中)?换句话说,我正在寻找使用这三个(或其中任何一个子集!)的教程.总之我很困惑!

c blas lapack atlas

131
推荐指数
3
解决办法
3万
查看次数

如何检查numpy/scipy中的blas/lapack链接?

我正在建立我的numpy/scipy环境基于blas和lapack或多或少基于这个步骤.

当我完成后,如何检查,我的numpy/scipy函数是否确实使用了之前构建的blas/lapack功能?

python numpy blas scipy lapack

125
推荐指数
5
解决办法
7万
查看次数

MatLab错误:无法打开静态TLS

几天以来,我在使用MATLAB时不断收到同样的错误dlopen.我对MATLAB很新,这就是为什么我不知道该怎么做.谷歌似乎也没有帮助我.当我尝试制作一个特征向量时,我得到了这个:

Error using eig
LAPACK loading error:
dlopen: cannot load any more object with static TLS
Run Code Online (Sandbox Code Playgroud)

在进行乘法时我也得到了这个:

Error using  * 
BLAS loading error:
dlopen: cannot load any more object with static TLS
Run Code Online (Sandbox Code Playgroud)

我当然找到了这个问题的解决方案,但我不太懂,也不知道该怎么办.这些是我找到的主题:

  1. 如何使用MATLAB提供的BLAS库?
  2. http://www.mathworks.de/de/help/matlab/matlab_external/calling-lapack-and-blas-functions-from-mex-files.html

有谁可以帮助我吗?

显示此错误的函数调用示例

>> randn(3,3)

ans =

 2.7694    0.7254   -0.2050             
-1.3499   -0.0631   -0.1241             
 3.0349    0.7147    1.4897            

>> eig(ans)

Error using eig
LAPACK loading error:
dlopen: cannot load any more object with static TLS
Run Code Online (Sandbox Code Playgroud)

matlab blas dlopen lapack libraries

81
推荐指数
5
解决办法
6万
查看次数

使用LAPACK分发基于Cython的扩展

我正在编写一个包含Cython扩展和使用LAPACK(和BLAS)的Python模块.我打开使用两种clapacklapacke,或某种f2cf2py解决方案,如果必要的.最重要的是,我能够调用lapackblas从用Cython在紧密循环不Python的调用开销例程.

我在这里找到了一个例子.但是,该示例取决于SAGE.我希望我的模块可以在不安装SAGE的情况下进行安装,因为我的用户不太可能想要或不需要SAGE.我的用户很可能安装了numpy,scipy,pandas和scikit的软件包,所以这些都是合理的依赖.使用的接口的最佳组合是什么,以及最小的setup.py文件看起来可以获取必要的信息(来自numpy,scipy等)以进行编译?

编辑: 这是我最终做的.它适用于我的macbook,但我不知道它是多么便携.当然有更好的方法.

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
import numpy
from Cython.Build import cythonize
from numpy.distutils.system_info import get_info

# TODO: This cannot be the right way
blas_include = get_info('blas_opt')['extra_compile_args'][1][2:]
includes = [blas_include,numpy.get_include()]

setup(
    cmdclass = {'build_ext': build_ext},
    ext_modules = cythonize([Extension("cylapack", ["cylapack.pyx"],
                                       include_dirs = includes,
                                       libraries=['blas','lapack'])
                   ])
)
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为在我的macbook上,clapack.h头文件与...相同cblas.h.然后我可以在我的pyx文件中执行此操作:

ctypedef np.int32_t …
Run Code Online (Sandbox Code Playgroud)

python numpy cython blas lapack

67
推荐指数
1
解决办法
1996
查看次数

安装lapack for numpy

运行Ubuntu 11.10 + python2.7 ...从源代码构建numpy并安装它,但是当我去安装它时,我得到了

ImportError: /usr/lib/liblapack.so.3gf: undefined symbol: ATL_chemv
Run Code Online (Sandbox Code Playgroud)

当它试图从numpy.linalg导入lapack_lite时.我试图从头开始重建lapack,但它似乎只是制造

/usr/local/lib/libblas.a
/usr/local/lib/liblapack.a
/usr/local/lib/libtmglib.a
Run Code Online (Sandbox Code Playgroud)

和.so文件..so.3gf来自哪里,我该如何解决?

python installation numpy lapack

30
推荐指数
2
解决办法
3万
查看次数

否定std :: vector的最快方法

假设我有一个double的std :: vector,即

std::vector<double> MyVec(N);
Run Code Online (Sandbox Code Playgroud)

在哪里N这么大,性能很重要.现在假设这MyVec是一个非平凡的向量(即它不是一个零向量,但已被某些例程修改).现在,我需要向量的否定版本:我需要-MyVec.

到目前为止,我一直在实施它

std::transform(MyVec.cbegin(),MyVec.cend(),MyVec.begin(),std::negate<double>());
Run Code Online (Sandbox Code Playgroud)

但是,实际上,我不知道这是否合情合理,或者只是我身边的超级天真.

我做得对吗?或者std :: transform在这种情况下只是一个超级慢的例程?

PS:我一直在使用BLAS和LAPACK库,但是我没有发现任何符合这种特殊需求的东西.但是,如果BLAS/LAPACK中存在比std :: transform更快的函数,我很高兴知道.

c++ optimization blas stdvector lapack

26
推荐指数
2
解决办法
3335
查看次数

如何从python访问matlab/octave模块?

我正在寻找一种从python访问matlab模块的方法.我目前的情况是这样的:

  • 我有一个python代码,通过调用Lapack例程进行数值计算,同时将内存分配为ctypes并作为指向Lapack例程的指针传递.
  • 我还有一个matlab模块,它与八度音程兼容,可以做一些我想要使用的数学技巧.

我现在的问题是:
什么是保持python中所有主要工作的有效方法,同时利用matlab/octave模块提供的可能性.如果我的ctype数组不必转换为其他对象以便运行八度音程,那么它也会很好.但是,我可以看到最后一点很难实现.

我目前的研究向我展示了两种可能的选择

  1. Pytave:不过看起来这个包装有点预备吗?!
  2. 走这条笨拙的道路:ctypes - >*.mat文件(通过numpy) - > octave - >*.mat文件 - > ctypes(通过numpy)

python matlab octave lapack

25
推荐指数
2
解决办法
1万
查看次数

使用C中的lapack计算矩阵的逆矩阵

我希望能够NxN使用lapack 计算C/C++中一般矩阵的逆矩阵.

我的理解是在lapack中进行反转的方法是使用dgetri函数,但是,我无法弄清楚它的所有参数应该是什么.

这是我的代码:

void dgetri_(int* N, double* A, int* lda, int* IPIV, double* WORK, int* lwork, int* INFO);

int main(){

    double M [9] = {
        1,2,3,
        4,5,6,
        7,8,9
    };

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

你将如何完成它以3x3使用dgetri_ 获得矩阵M 的逆?

c matrix-inverse lapack

23
推荐指数
2
解决办法
4万
查看次数

qr.Q()神秘化:什么是"紧凑"形式的正交矩阵?

R有一个qr()函数,它使用LINPACK或LAPACK执行QR分解(根据我的经验,后者的速度提高了5%).返回的主要对象是包含在上三角矩阵R(即R=qr[upper.tri(qr)])中的矩阵"qr" .到现在为止还挺好.qr的下三角部分包含Q"紧凑形式".一个可以通过使用提取QR分解Q qr.Q().我想找到倒数qr.Q().换句话说,我确实有Q和R,并希望将它们放在"qr"对象中.R是微不足道的,但Q不是.目标是应用它qr.solve(),这比solve()在大型系统上快得多.

r linear-algebra blas lapack

18
推荐指数
1
解决办法
3881
查看次数

用一个简单的例子来理解C++中的LAPACK调用

我是LAPACK和C++/Fortran接口的初学者.我需要在Mac OS-X Lion上使用LAPACK/BLAS解决线性方程和特征值问题.OS-X Lion提供优化的BLAS和LAPACK库(在/ usr/lib中),我链接这些库而不是从netlib下载它们.

我的程序(下面转载)正在编译并运行正常,但它给了我错误的答案.我已经在Web和Stackoverflow上进行了研究,这个问题可能要处理C++和Fortran如何以不同的格式存储数组(行主要与列主要).但是,正如您将在我的示例中看到的那样,我的示例的简单数组在C++和fortran中应该看起来相同.无论如何这里去了.

让我们说我们要解决以下线性系统:

x + y = 2

x - y = 0

解是(x,y)=(1,1).现在我尝试使用Lapack解决这个问题,如下所示

// LAPACK test code

#include<iostream>
#include<vector>

using namespace std;
extern "C" void dgetrs(char *TRANS, int *N, int *NRHS, double *A, 
                      int *LDA, int *IPIV, double *B, int *LDB, int *INFO );

int main()
{
    char trans = 'N';
    int dim = 2;    
    int nrhs = 1;
    int LDA = dim;
    int LDB = dim;
    int info;

    vector<double> a, b;

    a.push_back(1);
    a.push_back(1);
    a.push_back(1); …
Run Code Online (Sandbox Code Playgroud)

c++ fortran lapack

18
推荐指数
2
解决办法
2万
查看次数