走进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为
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和该程序一起链接编译。
输出结果为
作者:PcX
出处:http://www.cnblogs.com/xunxun1982/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。