• LAPACK(1)——安装与测试


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

    1、安装

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

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

    1)LAPACK的安装

      从官方网站上下载lapack包,目前最新版本是3.3.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,那么就不用改了,没有安装的话,就把上一行注释掉,把这一行的注释去掉。或者自己手动加上。

    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下面,那么使用的时候,可以直接包含这些头文件。另一种方法就是把这些库文件,和那几个头文件放在自己的工程目录里。这两种方法差不多。

  • 相关阅读:
    Proc、宿主变量、指示变量、数组变量、通信区sqlca,oraca ---(day07)
    Cursor、Exception、Procedure、Function、Package、Trigger(day06)
    大话设计模式C++版——建造者模式
    大话设计模式C++版——观察者模式
    大话设计模式C++版——代理模式
    大话设计模式C++版——工厂模式在COM中的典型应用
    大话设计模式C++版——抽象工厂模式
    大话设计模式C++版——工厂方法模式
    exe文件无法打开
    数据驱动编程之表驱动法
  • 原文地址:https://www.cnblogs.com/Frandy/p/Lapack_Install_Test.html
Copyright © 2020-2023  润新知