大家好,欢迎来到IT知识分享网。
今天需要使用LAPACK库当中的几个函数,之前师兄编译好的LAPACK库在我的系统上怎么也没法通过编译,没办法,只能自己编译一遍啦!
下面的文章当中,加粗的是在命令行里面输入的,其他的修改可以用各种编辑器完成,我是用的vim
首先,找到LAPACK的官网,直接百度就行了。找到LAPACK的压缩包。
我现在最新的版本是lapack-3.7.0.tgz
将这个压缩包放在某个目录当中,解压缩。解压的命令是 tar -zxvf lapack-3.7.0.tgz
解压完成之后会出现一个名为lapack-3.7.0的文件夹。进入这个文件夹的目录下。 命令 vi lapack-3.7.0
下一步命令 cp make.inc.example make.inc
vi make.inc
将 make.inc当中第19行的 FORTRAN = gfortran 修改为 FORTRAN = ifort -g
第23行 LOADER = gfortran 修改为 LOADER = ifort -g
(这一步的目的是修改编译的编译器,我们组里都是使用ifort编译的,如果用gfortran编译其实应该也是可以的。)
因为我用的ifort,所以把第38行TIMER = INT_ETIME 修改为 # TIMER = INT_ETIME
(其实就是把这一行注释掉)
然后把第41行# TIMER = INT_CPU_TIME 修改为 TIMER = INT_CPU_TIME
(其实就是把注释取消。)
点击键盘的Esc键,然后输入 :wq 保存并退出
这时候就回到了bash。我们这时候再来修改另外一个文件
命令 vi Makefile
第11和第12行的内容为
lib: lapacklib tmglib
# lib: blaslib variants lapacklib tmglib
修改成
#lib: lapacklib tmglib
lib: blaslib variants lapacklib tmglib
(其实就是把注释的位置换一下。)保存退出
命令 make
等待编译成功之后,会出现新的文件和目录,其中有三个后缀为.a的文件。
liblapack.a librefblas.a libtmglib.a
将liblapack.a librefblas.a拷贝到需要编译的程序的目录下
然后编译的时候的命令就是 ifort main.f90 liblapck.a librefblas.a
贴出一段从网上down的代码,我测试的时候就是用这段代码编译的,然后就编译成功了,非常开心!
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
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/24221.html