走进LAPACK(一)

一、LAPACK简介

    LAPACK是一个高性能的线性代数计算库,以BLAS(Basic Linear Algebra Subprograms)为基础,用Fortran语言编写,可用于计算诸如求解线性代数方程、线性系统方程组的最小平方解、计算特征值和特征向量等问题。

 

二、下载与编译

1、下载

    可以在LAPACK上找到链接,目前最新的release版本是3.2.1,建议下载带cmake list的压缩包LAPACK with CMAKE,CMAKE可以生成不同编译环境的makefile或者工程。

    当然你也可以通过SVN下载最新的源码(dev版本),Access为

svn co http://icl.cs.utk.edu/svn/lapack-dev/lapack/trunk

2、编译

    Linux下面编译就比较简单,直接make就好,或者仅make blas和make lapack。

    Windows下面推荐使用Cmake生成相应的工程(可以生成MinGW32、Visual Studio、Code::Blocks等的工程或者makefile)。

    使用LAPACK所需的目标库文件是blas.lib、lapack.lib(VS工程)或是libblas.a、liblapack.a(Linux下或MinGW32 makefile)。

 

三、测试

    如果上述编译时,选择了make all或是build all,那么makefile本身就可以自行执行测试程序来确保编译没有出现问题。不过一般为了节省时间,只make blas和make lapack,所以可以编写一个小程序来测试下LAPACK库。

    下面的小程序使用了DGESV函数来求解线性方程组AX=b。

program main
    implicit none
    INTEGER :: N, LDA, LDB
    INTEGER :: NRHS
    INTEGER :: INFO
    INTEGER :: IPIV(4)
    REAL(8) :: A(4,4), B(4,1)
    
    N=4;LDA=4;LDB=4
    NRHS=1
    
    A=reshape((/1.80,2.88,2.05,-0.89,&
                5.25,-2.95,-0.95,-3.80,&
                1.58,-2.69,-2.90,-1.04,&
                -1.11,-0.66,-0.59,0.80/),(/4,4/))
    B=reshape((/9.52,24.35,0.77,-6.22/),(/4,1/))
  
    call DGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO )
    
    write(*,*) "Solution:"
    write(*,'(f8.3)') B
    write(*,*) "INFO=", INFO
    
    stop
end program

    把blas.lib、lapack.lib和该程序一起链接编译。

    输出结果为

        

 

转载于:https://www.cnblogs.com/xunxun1982/archive/2010/05/12/1734001.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值