ubuntu14.04 下 ARPACK/PARPACK 安装具体步骤

首先要说明的是自己在用 PHG ,PHG 中解特征值和特征向量时要用到相关的包,首先是选择安装 Trilinos 和 PARPACK(这是两个独立的包,都可解特征值问题) ,其实我觉得只用安装 Trilinos 包就够用了,并且 PARPACK 官方已经放弃维护了,关于 Trilinos 的安装会在之后的博客中提及,这里先说安装 PARPACK 具体步骤,参考了一篇博客和一个帖子,会在最后列出地址。

要先安装gcc(c编译器),g++(c++编译器),gfortran(fortran编译器)

1. 若是只选择安装 ARPACK 时,可以选择用 ubuntu 自带的包

     sudo apt-get install build-essential
     sudo apt-get install gfortran
     sudo apt-get install libarpack2-dev

     arpack官网上的库和补丁包已经没有维护了,代码里有很多问题,比如说second.f文件里面有bug, abs()函数里面规则过久,编译器大多已经不支持。相反,通过Linux包管理系统安装的arpack都没有这些问题,很干净。


2. 要并行计算时还要安装 PARPACK ,这时就需要从最开始的源码进行安装了,源码的下载地址:http://www.caam.rice.edu/software/ARPACK/download.html

    或者在上传的资源里: http://download.csdn.net/detail/mifangdebaise/8954649

    要分别下载 arpack96.tar.gz,patch.tar.gz,parpack96.tar.gz,ppatch.tar.gz,并按此顺序依次解压缩,按照我自己的习惯是解压缩到 /usr/local/src/,注意这里依次解压缩后只归并得到一个文件夹 /usr/local/src/ARPACK/

    

3. 下面就是要依次编译 ARPACK 和 PARPACK 了,但要有一些需要修改 

    1). 将 /usr/local/src/ARPACK/UTIL/second.f 文档中 external etime 那行注释掉,.f 是fortran文档,用!,c,C进行注释。

    2). 修改 /usr/local/src/ARPACK/ARmake.inc 文档

          a). 根据READEME,首先将 home 变量改为 home = /usr/local/src/ARPACK

          b). FC      = gfortran

                FFLAGS    = -O

                这里要解释的是,首先将编译器改为了 gfortran,其次在flag中,要把cg89选项去掉,这个目前的fortran编译器已经不支持,所以会出各种奇怪的错误

          c). PLAT = LINUX,其实这个地方改不改问题不大,改了,那只是一个符号,无妨碍的。

          d). 至于
                LAPACKLIB =
                BLASLIB =
                先空着(我不太确定要怎么填),因为 arpack 带了 blas 和 lapack 的源码,让 arpack 用它自己带的,如果提示有错误,再修改……

           e). 至于 MAKE    = /bin/make
                 你可以先用 which make,找出来哪个,就填哪个好了……,我的修改后为 MAKE    = /usr/bin/make

           然后在arpack根目录下 make lib就可以编译出arpack的lib了。

           下面编译parpack的lib,注意,查看 makefile 的 plib: 选项(其实是 parpacklib: 下面的那些操作中变量在 ARmake.inc 中没定义),同时对比 lib: 选项(即是 arpacklib: 下面的那些操作中变量在 ARmake.inc 都有没定义),这样就需要将变量 PUTILdir,PSRCdir,PARPACKLIB 在 ARmake.inc 中给出定义,分别如下 f) 中(其实就是参考 arpacklib: 操作中变量 UTILdir,SRCdir,ARPACKLIB 的定义给出的):

            f). PUTILdir      = $(home)/UTIL

                 PSRCdir       = $(home)/SRC

                 PARPACKLIB  = $(home)/libarpack_$(PLAT).a

            g). 还要参照 ARmake.inc 中 ALIBS =  $(ARPACKLIB) $(LAPACKLIB) $(BLASLIB) 

                  增添 PLIBS =  $(PARPACKLIB) $(LAPACKLIB) $(BLASLIB)

这里可以附上自己修改好的 ARmake.inc 文档进行对比:http://download.csdn.net/detail/mifangdebaise/8954421


    3). 此外,在parpack/src/mpi下有pssaitr.f文件的第307行出错,它提示该行不能在data后,往前看几行,果然有个data,把这几行移过去就好了,然后回到arpack根目录下,执行make plib ,就可以成功的编译出plib了!


    编译完 plib 时其实名字跟由 ARPACK 编译出来的 lib 相同,只是覆盖了原来的由 ARPACK 生成的 lib 。


参考的文章:http://blog.sina.com.cn/s/blog_48f85e1d0100uucf.html

                        http://emuch.net/html/201210/5047984.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值