主题:Linux下Lapack如何安装呀?
sanxung
[专家分:20] 发布于 2007-07-13 10:59:00
我的系统是fc6,安装了ifort9,fc6自带的gcc,
安装Lapack怎么配置呀?
我自己倒是安装了,但是我安装的另外一个软件却找不到它的库
所以想看看大家怎么安装Lapack的,是不是我安装的有问题。
回复列表 (共29个回复)
11 楼
sanxung [专家分:20] 发布于 2007-07-13 13:32:00
刚刚吃过饭了,我今天没有上班。不过一会儿我就去单位,去试一试。我想一定会成功的。
12 楼
sanxung [专家分:20] 发布于 2007-07-13 18:02:00
我去单位试验了,发现了一些问题,请您帮忙解答一下:
将
FORTRAN = g77
OPTS = -funroll-all-loops -O3
DRVOPTS = $(OPTS)
NOOPT =
LOADER = g77
LOADOPTS =
改为:
FORTRAN = ifort
[color=FF0000]OPTS = -funroll-all-loops -O3[/color]
DRVOPTS = $(OPTS)
NOOPT =
LOADER = ifort
LOADOPTS =
红色部分表示没有修改
make之后有许多的warning,到Test complete之后便不动了
而用
FORTRAN = g77
OPTS = -funroll-all-loops -O3
DRVOPTS = $(OPTS)
NOOPT =
LOADER = g77
LOADOPTS =
则可以完成,不过时间很长我没有进行完
所以我猜想OPTS = -funroll-all-loops -O3 也应该随着编译器修改一下
不知道我说的对么?
您是怎么做的呢??
13 楼
f2003 [专家分:7960] 发布于 2007-07-13 18:55:00
我忘记了,那是很久以前的事情了...,好像需要把-funroll-all-loops去掉。
如果你对ifort熟悉,自己可以定制编译器选项的。-O3优化还是留着为妙
14 楼
sanxung [专家分:20] 发布于 2007-07-13 20:35:00
那就麻烦您再试一试了,我对ifort的参数一点也不明白。谢谢您了!
15 楼
sanxung [专家分:20] 发布于 2007-07-13 21:29:00
在hhsy的帖子中提到了用OPTS = -optimize:5,是否可以呢?
下载后解压,比较解压路径为G:\lapack。需要修改里面的make.inc文件:
1、修改里面的 HOME = G:\lapack 你解压的文件夹
2、如果用CVF编译的话FORTRAN = df这一个不需要改,如果用IVF编译的话,改为FORTRAN = ifort
3、修改优化级别OPTS = -optimize:5,默认为2
16 楼
hhsy [专家分:330] 发布于 2007-07-13 21:40:00
[quote]在hhsy的帖子中提到了用OPTS = -optimize:5,是否可以呢?
下载后解压,比较解压路径为G:\lapack。需要修改里面的make.inc文件:
1、修改里面的 HOME = G:\lapack 你解压的文件夹
2、如果用CVF编译的话FORTRAN = df这一个不需要改,如果用IVF编译的话,改为FORTRAN = ifort
3、修改优化级别OPTS = -optimize:5,默认为2
[/quote]
OPTS = -optimize:5是在CVF的优化参数
LINUX下如果要用Intel FORTRAN的话,可以保留-O3,其它的那些都要删除。如果你的CPU是双核的,可以用如下参数
OPTS =-O3 -xP -axP
如果是P4非双核的,不能用上面的参数,可以用
OPTS =-O3 -xN -axN
17 楼
anuini [专家分:0] 发布于 2007-08-23 23:21:00
我使用的程序需要BLAS。
我将LAPACK编译后产生的三个.a文件考到上面说的目录下。
可是当运行我的程序时却还是找不到BLAS。
请高手指点指点!!
18 楼
f2003 [专家分:7960] 发布于 2007-08-23 23:51:00
linux下,ifort,gfortran,g95都是通过联合使用-L和-l来调用库。
要调用一个库,你必须知道库所在的目录,库文件的名称,和要调用的函数。
库所在的目录 用 -L 来指定;一些路径为通用路径,可以省略指定。
库文件的名称 用 -l 来指定,注意 -llapack 指使用 liblapack.a这个库。即去掉.a后缀,去掉前面lib三个字母后再用-l调用;lapack编译后产生的库都不带lib,要改名加上。
至于调用函数 当然是在源程序里call
19 楼
anuini [专家分:0] 发布于 2007-08-24 18:03:00
还有一个问题要请教!
我以前用的linux下自带有BLAS
它的/usr/lib下有文件
liblbas.a
libblas.so
libblas.so.3
libblas.so.3.0
libblas.so.3.0.3
可是我编译好的LAPACK中只有blas_LINUX.a
改后就是libblas.a考过去后
还少四个文件!
LAPACK同样也有五个文件,而我的只有liblapack.a!
怎样才能得到他们!?
谢谢赐教!
20 楼
f2003 [专家分:7960] 发布于 2007-08-24 19:14:00
libblas.so
libblas.so.3
libblas.so.3.0
libblas.so.3.0.3
是同一个东西,前三个只是最后那个文件的链接。
libblas.a是静态库,而libblas.so是动态库。-lblas对两个都有效。
gfortran或者ifort编译器都有选项让你控制连接到哪个库。如果同时有两种库又不加任何编译选项,那么连接到动态库;如果只有一种库且不加编译选项,当然就是它了。
至于lapack源代码编译后只有静态库,那是因为Makefile里没有生成动态库的指令。但是由于编译动态、静态库的过程中各文件依赖关系不变,所以基本上只要改变Makefile中编译器选项,以及最后一步制造库的命令,就能制造动态库。并不难。
动态库优点是节省磁盘空间以及控制版本一致性,操作系统大量使用,但这些对我们用处不大。如果使用动态库,你的程序传到另一台机器可能就会因没有那个库而不能运行。
我来回复