回 帖 发 新 帖 刷新版面

主题:求助:lapack问题

我用ifort安装lapack,调用的时候出了问题,用dsyevr对角化出来的结果不对。
用gfortran安装就没有问题。有谁用ifort安装lapack的,能不能帮我测试一下,
看一看你们的结果。我用的是    intel fortran 10.00

程序如下
program main
implicit none
integer( 4 ) :: n, il, iu, m, isuppz( 6 ), iwork( 30 ), lwork, liwork, info
real( 8 ) :: a( 3, 3 ), z( 3, 3 ), w( 3 ), work( 80 ), vl, vu, abstol

n = 3
il = 1
iu = 3
abstol = 0.0_8
lwork = 80
liwork = 30

a( 1, 1 ) = 0.694444444444445_8
a( 2, 1 ) = 0.208135487069874_8
a( 3, 1 ) = 1.069274406890994E-002_8
a( 1, 2 ) = 0.208135487069874_8
a( 2, 2 ) = -0.211332634659698_8
a( 3, 2 ) = 0.133515358818456_8
a( 1, 3 ) = 1.069274406890994E-002_8
a( 2, 3 ) = 0.133515358818456_8
a( 3, 3 ) = -0.417584606439560_8

call dsyevr( 'V', 'I', 'U', n, a, n, vl, vu, il, iu, abstol, &
              m, w, z, n, isuppz, work, lwork, iwork, liwork, info )
print *, "eval"
print *, w
end program main

我用ifort编译lapack 得到的结果:
 0.174584482225418       0.174584482225418       0.174584482225418
用gfortran编译lapack得到的结果是:
-0.489430566447896      -0.186354201199526       0.741311970992605

回复列表 (共9个回复)

沙发

apple@localhost ~ $ ifort test.f90 -llapack_if -lblas_if
apple@localhost ~ $ ./a.out 
 eval
  0.174584482225417       0.174584482225417       0.174584482225417  

apple@localhost ~ $ gfortran test.f90 -llapack -lblas $FCFLAGS
apple@localhost ~ $ ./a.out 
 eval
 -0.48943056644789246      -0.18635420119952728       0.74131197099260637     

建议:
0) ifort编译结束后,运行lapack的test routine,查看结果。
1) intel的mkl库已经包含了lapack,用ifort调用试试看。
2) 用g95编译器验证一下gfortran结果的正确性。
3) 建议赋值语句写成:
a  = reshape([0.694444444444445_8,0.208135487069874_8,1.069274406890994E-002_8,0.208135487069874_8,-0.211332634659698_8,&
0.133515358818456_8,1.069274406890994E-002_8,0.133515358818456_8,-0.417584606439560_8],[3,3])

板凳


我用g95重新编译了lapack和blas,得到的结果和gfortran相同。

 -0.48943056644789246 -0.18635420119952723 0.7413119709926064

3 楼

用MKL结果就是对的,很奇怪,谁能解释一下原因? 不胜感激!
本来想试一下f2003兄建议的-xP选项的,却发现ifort 编译的
lapack有问题,而用MKL就没问题。

4 楼

继续关注。
我向intel报告了这个问题,他们也下载了lapack编译,说运行结果正确。
 -0.489430566447892      -0.186354201199528       0.741311970992606    


他建议我设置OPTS= -O3 -xT -ip
由于酷睿才能支持-xT,所以我改成了-xN。结果还是错的。而且我们的错误是经过两个人证实了的啊。

5 楼


搞不懂是什么原因,linux 下不敢用 ifort 了。
我也试了那几个选项,还是不行。

6 楼

优化导致的兼容性问题吧。

7 楼

ifort 10.1.008看来已经fix了这个bug。

8 楼


是吗!多谢!我试一下。

9 楼

我也遇到了linux用ivf编译 LAPACK有问题

我来回复

您尚未登录,请登录后再回复。点此登录或注册