计算化学公社

 找回密码 Forget password
 注册 Register
Views: 4571|回复 Reply: 2
打印 Print 上一主题 Last thread 下一主题 Next thread

[编译与编译器] 编译调用lapack问题

[复制链接 Copy URL]

132

帖子

0

威望

1025

eV
积分
1157

Level 4 (黑子)

跳转到指定楼层 Go to specific reply
楼主
老板给了一个程序让编译一下,编译中老是报错,
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)

---------------------------------------------
求大神帮助~



336

帖子

2

威望

4531

eV
积分
4907

Level 6 (一方通行)

2#
发表于 Post on 2016-11-16 08:50:44 | 只看该作者 Only view this author
你确定你的代码的lapack是使用的mkl? 且mpif90是wrap的ifort?

132

帖子

0

威望

1025

eV
积分
1157

Level 4 (黑子)

3#
 楼主 Author| 发表于 Post on 2016-11-16 13:12:31 | 只看该作者 Only view this author
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就能被识别到?还是我写的不对~~
===================
继续求指导~~~谢谢!

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-24 02:07 , Processed in 0.690168 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list