计算化学公社
标题:
编译调用lapack问题
[打印本页]
作者Author:
didi_dudu
时间:
2016-11-15 14:17
标题:
编译调用lapack问题
老板给了一个程序让编译一下,编译中老是报错,
mpif90 -O3 -r8 -g /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_lapack95_ilp64.a /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_blas95_ilp64.a -o mca.x base.o rdmca.o mpi.o rdcontcar.o rdoutcar.o rdpotcar.o rdwavecar.o socmatr.o functions.o projection.o diagonalize.o mca.o
diagonalize.o: In function `diagonalizeh':
/home/wangzf/vaspsc/mag/final-torque-IV/diagonalize.f90:215: undefined reference to `zheev_'
diagonalize.o: In function `diagonalize_mp_diagonalizeh_':
/home/wangzf/vaspsc/mag/final-torque-IV/diagonalize.f90:215: undefined reference to `zheev_'
make: *** [mca.x] Error 1
这应该是lapack库中的内容 makefile中已经设置了
LAPACK = /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_lapack95_ilp64.a
BLAS = /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_blas95_ilp64.a
LIBS = $(LAPACK) $(BLAS)
依然调用不了lapack库
makefile中其他关键参数如下
FC = mpif90
MFFLAGS = -O3 -r8 -g
EXE = mca.x
OBJS = base.o rdmca.o mpi.o\
rdcontcar.o rdoutcar.o rdpotcar.o rdwavecar.o\
socmatr.o functions.o projection.o diagonalize.o\
mca.o
$(EXE) : $(OBJS)
$(FC) $(MFFLAGS) $(LIBS) -o $(EXE) $(OBJS)
---------------------------------------------
求大神帮助~
作者Author:
greatzdk
时间:
2016-11-16 08:50
你确定你的代码的lapack是使用的mkl? 且mpif90是wrap的ifort?
作者Author:
didi_dudu
时间:
2016-11-16 13:12
greatzdk 发表于 2016-11-16 08:50
你确定你的代码的lapack是使用的mkl? 且mpif90是wrap的ifort?
额 不确定
我在make file里面设置了 LAPACK = /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_lapack95_ilp64.a 。这是调用intel mkl的lapack的意思吧?
“mpif90是wrap的ifort” 这句话是什么意思?我用的mpif90是openmpi1.6版本的mpif90。
然后按我的理解,程序中的call zheev调用的子程序是属于lapack库的,那么设置了lapack路径就应该能找到这个库文件?
或者比如说我自己写一个程序test.f,里面用了call zheev 我编译的时候是应该用
mpif90 -O3 -r8 -g /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_lapack95_ilp64.a test.f 。 这样test.f 里面的cal zheev就能被识别到?还是我写的不对~~
===================
继续求指导~~~谢谢!
欢迎光临 计算化学公社 (http://bbs.keinsci.com/)
Powered by Discuz! X3.3