标签: lapack

犰狳+ BLAS + LAPACK:链接错误?

当我尝试编译Armadillo 2.4.2附带的example1.cpp时,我不断收到以下链接错误:

/tmp/ccbnLbA0.o: In function `double arma::blas::dot<double>(unsigned int, double const*, double const*)':
main.cpp:(.text._ZN4arma4blas3dotIdEET_jPKS2_S4_[double arma::blas::dot<double>(unsigned int, double const*, double const*)]+0x3b): undefined reference to `wrapper_ddot_'
/tmp/ccbnLbA0.o: In function `void arma::blas::gemv<double>(char const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)':
main.cpp:(.text._ZN4arma4blas4gemvIdEEvPKcPKiS5_PKT_S8_S5_S8_S5_S8_PS6_S5_[void arma::blas::gemv<double>(char const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)]+0x68): undefined reference to `wrapper_dgemv_'
/tmp/ccbnLbA0.o: In function `void arma::blas::gemm<double>(char const*, …
Run Code Online (Sandbox Code Playgroud)

linker blas lapack armadillo

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

如何使用加速框架执行矩阵逆运算?

我想找到矩阵的逆.

我知道这涉及到第一次LU分解然后是反转步骤但是我找不到所需的功能,通过搜索苹果的10.7文档!

这似乎是使用CBLAS/LAPACK在C中有用的后对称矩阵求逆,指出应该使用sgetrf_sgetri_函数.但是在搜索这些术语时,我在Xcode文档中找不到任何内容.

有没有人有这种矩阵运算的锅炉板代码?

matrix-inverse lapack accelerate-framework osx-lion

5
推荐指数
1
解决办法
4497
查看次数

scipy.linalg.solve(LAPACK gesv)在大型矩阵上的时间复杂度?

如果我用scipy.linalg.solve(我相信调用LAPACK的gesv功能)上〜12000未知的问题(有〜12000平方米,致密,非对称矩阵)我的工作站上,我得到了一个很好的答案10-15分钟.

只是为了探究可能的极限(注意我并没有说"有用"),我将基础问题的分辨率加倍,这导致需要解决约50000个未知数.虽然有一次,我添加交换的GB的一些10S这在技术上我的工作站上运行,它似乎更谨慎地使用一些硬件有足够的RAM,所以我踢它关闭上的AWS EC2高内存四超大. ..在过去的14个小时里它一直在磨砺(嘿,现场实例很便宜)而且它无法分辨它到底有多远.

不幸的是,我不知道所涉及的解算器的时间复杂性是什么(我的google-fu在这个问题上失败了).如果它是O(N ^ 2)那么我预计它将在大约4小时后完成; 如果它是O(N ^ 3)那么它可能会在16小时内完成.当然,这将N解释为未知数 - 已经翻了四倍 - 矩阵中的元素数量增加了16倍!

并且建议将帮助我确定这是否有可能在我(项目)的生命中完成或不感激地收到!

其他信息:

稀疏矩阵在这里并不重要(我的矩阵是密集的,并且在任何情况下,2**31即使在64位上,scipy也不能用于非零元素).

我在工作站上使用Debian/Squeeze的scipy,在EC2上使用Ubuntu 12.04.两者都显然是64位.

performance amazon-ec2 time-complexity scipy lapack

5
推荐指数
1
解决办法
2715
查看次数

使用双精度浮点精确到2 ^ 53实现整数乘法吗?

我问,因为我正在计算矩阵乘法,其中所有矩阵值都是整数.

我想使用LAPACK,以便获得正确的快速代码.将两个大整数(其乘积小于2^53)整数存储为doubles时,会产生double包含精确整数结果的整数吗?

math floating-point linear-algebra double-precision lapack

5
推荐指数
1
解决办法
422
查看次数

Lapack链接错误,使用-fPIC重新编译

我有一个用Levenberg-Marquardt方法拟合非线性函数的复杂程序.

该程序使用来自Lapack库的线性方程组的求解器,我使用过:

extern "C" ...
Run Code Online (Sandbox Code Playgroud)

链接到外部fortran库.该程序在我的笔记本电脑上运行没有问题(使用Ubuntu 12.04),我一直在使用它进行测试.

问题:

现在我搬到了大胖64核计算机上才开始做一些真正的计算,计算机上有一个科学的linux 6就可以了.事实证明,大型计算机没有安装lapack,所以我得到了lapack 3.4.2,编译它,并按照这里的说明构建它:

http://matrixprogramming.com/2011/04/using-lapack-from-c/comment-page-1

在那之后,我在之前工作的cmake文件中完全没有改变,只是添加了链接选项:

-L/xdata/Compilers/Sources/lapack-3.4.2
Run Code Online (Sandbox Code Playgroud)

现在我收到错误:

/usr/bin/ld: /xdata/Compilers/Sources/lapack-3.4.2/liblapack.a(dsytrf.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
Run Code Online (Sandbox Code Playgroud)

只是为了记录,我的cmake脚本到处都是-fPIC和-fPIE ...我使用它的链接:

target_link_libraries(LibsModule -lgsl)
target_link_libraries(LibsModule -lgslcblas)
target_link_libraries(LibsModule -lrt)
target_link_libraries(LibsModule -lpthread)
target_link_libraries(LibsModule -pie)
target_link_libraries(LibsModule -fPIC)
target_link_libraries(LibsModule -L/xdata/Compilers/Sources/lapack-3.4.2)
target_link_libraries(LibsModule -lgfortran)
target_link_libraries(LibsModule -llapack -fPIC)
target_link_libraries(LibsModule -lblas -fPIC)
Run Code Online (Sandbox Code Playgroud)

我做错了什么?请指教.

谢谢.

c++ linker makefile cmake lapack

5
推荐指数
1
解决办法
2721
查看次数

使用Cython包装LAPACKE函数

我正在尝试dgtsv使用Cython 包装LAPACK函数(三对角方程组的求解器).

我遇到了这个前面的答案,但由于dgtsv不是LAPACK功能之一,scipy.linalg我不认为我可以使用这种特殊的方法.相反,我一直试图遵循这个例子.

这是我的lapacke.pxd文件的内容:

ctypedef int lapack_int

cdef extern from "lapacke.h" nogil:

    int LAPACK_ROW_MAJOR
    int LAPACK_COL_MAJOR

    lapack_int LAPACKE_dgtsv(int matrix_order,
                             lapack_int n,
                             lapack_int nrhs,
                             double * dl,
                             double * d,
                             double * du,
                             double * b,
                             lapack_int ldb)
Run Code Online (Sandbox Code Playgroud)

...这是我的瘦Cython包装_solvers.pyx:

#!python

cimport cython
from lapacke cimport *

cpdef TDMA_lapacke(double[::1] DL, double[::1] D, double[::1] DU,
                   double[:, ::1] B):

    cdef:
        lapack_int n = D.shape[0]
        lapack_int nrhs = B.shape[1]
        lapack_int ldb …
Run Code Online (Sandbox Code Playgroud)

python numpy linear-algebra cython lapack

5
推荐指数
1
解决办法
483
查看次数

来自Swift中String的UnsafeMutablePointer <Int8>

我正在使用dgeevAccelerate框架中LAPACK实现的算法来计算矩阵的特征向量和特征值.遗憾的是,Apple文档中没有描述LAPACK功能,仅包含http://netlib.org/lapack/faq.html的链接.

如果你查一下,你会发现前两个参数dgeev是表示是否计算特征向量的字符.在Swift,它是要求的UnsafeMutablePointer<Int8>.当我只是使用时"N",我收到一个错误.的dgeev功能和错误在下面的截图中描述在此输入图像描述

我该怎么做才能解决这个问题?

pointers char lapack accelerate-framework swift

5
推荐指数
1
解决办法
7529
查看次数

LAPACK给了我不正确的特征值

我正在使用LAPACK库中的DSYEV和DSYEVD来查找特征值和特征向量(编译语法:gfortran -llapack).但是,我找到-0.44,0.35,0.88了特定矩阵的错误特征值().出了什么问题?

可以很容易地看出矩阵具有零行列式,因此至少一个特征值必须为零.

这是我的代码(希望它不是太大):

    Program Real_Eigenvec
    implicit none

    integer, parameter:: n=3
    integer:: i,j, flag
    real*8:: A(n,n),X(n,n) 
    real*8:: lambda(n)
    real*8, parameter:: p=0.5d0/dsqrt(2.d0), q=1.d0-1.d0/dsqrt(2.d0)


    Print*,'Enter flag: 0 for DSYEV, 1 for DSYEVD'
    Read*, flag


    A= transpose(reshape((/ 0.d0, 1.d0, 0.d0, p, q, p, 0.5d0, 0.0d0, 0.5d0 /), shape(A)))


    print*,'Dimension of the matrix, n=',int(sqrt(float(size(A))))

    Print*,'A matrix in full form:'
    Do i=1,n
      print 100, (A(i,j),j=1,n)
    End Do

    call Eigen(A,lambda,X,n,flag)

    !    Print the eigenvalues and eigenvectors.

    PRINT 200
    DO i  = 1, n
      PRINT …
Run Code Online (Sandbox Code Playgroud)

fortran matrix eigenvalue lapack

5
推荐指数
1
解决办法
1369
查看次数

在Mac OS X Yosemite上安装BLAS

我正在尝试在我的Mac上安装BLAS,但每次运行make我都会收到此错误(如下所示).我试图按照本网站上的说明操作:

gfortran -O3 -c isamax.f -o isamax.o
make: gfortran: No such file or directory
make: *** [isamax.o] Error 1
Run Code Online (Sandbox Code Playgroud)

我不知道这意味着什么或如何解决它所以任何帮助将不胜感激.此外,我正在尝试安装CBLAS和LAPACK,所以如果你知道一个好的来源,那么任何提示/指示都会很好......到目前为止我发现的一切都很混乱.我也尝试安装ATLAS,但它仍然无法正常工作.

macos blas lapack

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

从lapack中的LU分解计算行列式

Lapack很可能没有用于计算行列式的例程。但是,我们可以使用LU,QR或SVD分解来计算它。我更喜欢使用LU分解。现在,lapack使用某些dgetrf子例程将矩阵A分解为具有某些IPIV数组的PLU格式。我不知道如何处理这些信息。为了计算行列式,我只将U矩阵的对角元素相乘。但是,PLU格式的L和U是什么以及如何提取它们。我正在用C编程

lapack

5
推荐指数
1
解决办法
2182
查看次数