lapack



lapack

LAPACK是由美国国家科学基金等资助开发的著名公开软件。LAPACK包含了求解科学与工程计算中最常见的数值线性代数问题,如求解线性方程组、线性最小二乘问题、特征值问题和奇异值问题等


LAPACK(1)——安装与测试

http://www.cnblogs.com/Frandy/archive/2011/05/18/Lapack_Install_Test.html

LAPACKLAPACK,全称是Linear Algebra PACKage,一个高性能的线性代数的程序库,主页http://www.netlib.org/lapack/  。

1、安装

  LAPACK是用fortran写的,LAPACKE是它的C语言接口,先安装LAPACK,然后安装LAPACKE,那么在程序中可以直接调用C函数来实现需要的功能。

下面介绍这两个包的安装。

1)LAPACK的安装

  从官方网站上下载lapack包,目前最新版本是3.7.1。解压之后,查看一下README文件。在Linux上安装(我用的时Ubuntu10.04LTS),需要先配置好make.inc文件。

一些编译参数,

  
  
PLAT 表示使用的平台,会接在生成lib库的名字中,原本是 _LINUX , 我改成空的了。 FORTRAN 表示你使用的fortran编译器,根据自己安装的编译器来设置,我用的是 gfortran。 OPTS 表示 编译时的优化程度,设置为 -O2即可。 LOADER 设置成和FORTRAN 基本一样就可以了。

确定生成目标如下,

  
  
BLASLIB = http://www.cnblogs.com/ libblas $( PLAT ). a LAPACKLIB = liblapack $( PLAT ). a TMGLIB = libtmglib $( PLAT ). a EIGSRCLIB = libeigsrc $( PLAT ). a LINSRCLIB = liblinsrc $( PLAT ). a

  原来的这些库文件的名字前面没有lib的,这里加上。因为linux上库文件一般有前缀lib的,在链接的时候 -l后面带的是库的名字,那个时候是不加lib的。如果已经编译生成了这些库,可以重命名,而不用重新编译。

  在Makefile中,可以看到 all这一行有很多选项,我们make的时候,可以输入lib,那么就会只生成lib,如果直接make,会把所有的都编译,包括测试。还有一行lib, 列出了要生成的lib,注释掉的一行没有blaslib,如果已经安装了blaslib,那么就不用改了,没有安装的话,就把上一行注释掉,把这一行的注释去掉。或者自己手动加上。


编译之前需要先安装 gfortran

gfortran — the GNU Fortran compiler, part of GCC


2) LAPACKE的安装

  从网站上下载lapacke的压缩包,就是Standard C language APIs for LAPACK对应的压缩包,解压缩,查看README文件。

同样地,需要修改make.inc文件,

复制代码
  
  
CC 表示使用的C程序编译器,改成 gcc , LINKER 表示编译时要使用的连接器,前面几行注释提到了,
  之前编译lapack . a 和blas . a用的什么fortran编译器,这里就用什么。那么改成 gfortran . LAPACKE 表示要生成的库文件的名字,类似的,改成liblapacke . a LAPACKE的编译需要之前生成的lapack库文件,所以LIBS这一行需要设置好。 LIBS = $( LAPACK_PATH )/ liblapack . a $( LAPACK_PATH )/ libblas . a
复制代码

其中LAPACK_PATH就是liblapack.a所在的目录了。

查看以下Makefile,没什么需要修改的,可以直接make,或者是make lapacke, 不让它编译test的内容。然后就生成liblapacke.a了。

2、使用示例

  因为生成的是库文件,所以可以把这些库文件放在系统的/usr/lib下面,这样链接这些库的时候可以不用给出路径了。

  先测试一下LAPACK。链接中有一个测试例子,http://blog.sciencenet.cn/home.php?mod=space&uid=271986&do=blog&id=280793。

使用下面的语句编译,

gfortran test.f90 -llapack -lblas

然后就生成了a.out,可以执行了。

  再测试LAPACKE。在lapacke的文件夹下面,有testing目录。我们近测试一个小的程序。新建一个目录,test_lapacke,把testing/include下面的test_utils.h文件拷出来,把utlis文件夹拷出来,把interface的一个.c文件拷出来,比如cbdsqr_1.c。还有lapacke文件夹下面的include里面的头文件。

那么按下面的命令编译,

gcc *.h cbdsqr_1.c utils/*.c -llapack -lblas -llapacke

编译成功,运行,输出PASSED,...。那么就表示程序运行正确了。

  这些只是测试,想要更方便的使用这些库,有两种方法,一是将那几个库文件放在/usr/lib下面,使用-l指定链接这些库,同时把lapacke/include下面的文件放到/usr/include下面,那么使用的时候,可以直接包含这些头文件。另一种方法就是把这些库文件,和那几个头文件放在自己的工程目录里。这两种方法差不多。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值