2011-07-04 18:10:02| 分类: linux&shell | 标签: |举报 |字号大中小 订阅
http://www.programfan.com/club/post-242326-2.html
http://blog.163.com/wanghui_jl@126/blog/static/2543734720082241046315/
下载最新的lapack包
http://www.netlib.org/lapack/
安装lapack
1) gzip –cd lapack-3.1.1.tgz | tar xf -
2) cd lapack-3.1.1
3) cp make.inc.example make.inc
4) gedit make.inc
. . . . . . . . .
FORTRAN = g77
OPTS = -funroll-all-loops -O3
DRVOPTS = $(OPTS)
NOOPT =
LOADER = g77
LOADOPTS =
. . . . . . . . .
修改成:
. . . . . . . . .
FORTRAN = gfortran
OPTS = -funroll-all-loops -O3 -fPIC -msse2 -mfpmath=sse -ftree-vectorize -g
DRVOPTS = $(OPTS)
NOOPT =
LOADER = gfortran
LOADOPTS =
. . . . . . . . .
保存
5) gedit Makefile
如果之前没安装blas:
include make.inc
all: lapack_install lib lapack_testing blas_testing
lib: lapacklib tmglib
#lib: blaslib lapacklib tmglib
clean: cleanlib cleantesting cleanblas_testing
. . . .
修改成:
include make.inc
all: lapack_install lib lapack_testing blas_testing
#lib: lapacklib tmglib
lib: blaslib lapacklib tmglib
clean: cleanlib cleantesting cleanblas_testing
. . . .
保存
6) make
7) 复制blas_LINUX.a lapack_LINUX.a和tmglib_LINUX.a则三个文件到/usr/lib和/usr/local/lib两个文件夹中,并改名为:libblas.a liblapack.a和libtmglib.a
-------------------------
用glibc的命令ldd就能知道程序是否动态连接的。
默认产生静态库即: 后缀.a 的库文件。动态库为后缀为 .so的文件
产生blas动态库要改动两处,一处是make.inc中给编译器加fPIC命令行参数,另一处是在makefile中修改制造库的命令,制造动态库是使用gcc,而制造静态库是ar命令。
-------------------------
make.inc
我给楼上再补充一句,改成:
OPTS = -funroll-all-loops -O3 -msse2 -mfpmath=sse -ftree-vectorize -g
加上-msse2 -mfpmath=sse -ftree-vectorize让gfortran编译成矢量sse代码而不是x87,速度甚至能提高50%;加上-g便于调试。
如果不是gfortran而是ifort,使用xP选项可达到同样的目的
评论