Fortran Coder

查看: 12784|回复: 6

[编译器] 使用intel mkl的syevd函数求解特征值特征向量内存不足

[复制链接]

33

帖子

12

主题

0

精华

熟手

F 币
138 元
贡献
93 点
发表于 2020-2-28 22:23:15 | 显示全部楼层 |阅读模式
使用intel mkl的syevd函数,求解特征值特征向量内存不足:Intel MKL INTERNAL ERROR: Insufficient workspace available in function SYEVD.我用的语言是fortran :call syevd(C,W,'V')


33

帖子

12

主题

0

精华

熟手

F 币
138 元
贡献
93 点
 楼主| 发表于 2020-2-29 09:12:15 | 显示全部楼层
自顶自顶自顶自顶自顶自顶自顶

803

帖子

2

主题

0

精华

大宗师

F 币
3811 元
贡献
2276 点
发表于 2020-3-1 11:10:10 | 显示全部楼层
矩阵多大?电脑内存多大?

33

帖子

12

主题

0

精华

熟手

F 币
138 元
贡献
93 点
 楼主| 发表于 2020-3-1 17:31:48 | 显示全部楼层
li913 发表于 2020-3-1 11:10
矩阵多大?电脑内存多大?

矩阵20000*20000,服务器内存125G,不过我搞了搞又没事了。现在碰上一个新问题。fortran保存数组到dat是不是有行列限制?怎么我保存一个20000长度的向量到dat,保存之后变成了4000*5的。保存3*20000的二维数组变成10000*6,行列数都对不上。程序如下
M=20000
open(10,file='eigenvalue.dat')
      write(10,*) (W(i),i=1,M)
      close(10)
      open(11,file='eigenstate.dat')
      do i=1,3
          write(11,*) (EigenState(i,j),j=1,M)
      end do
      close(11)

803

帖子

2

主题

0

精华

大宗师

F 币
3811 元
贡献
2276 点
发表于 2020-3-4 14:06:49 | 显示全部楼层
默认输出,每行不超过80字符。你需要用输出格式。

33

帖子

12

主题

0

精华

熟手

F 币
138 元
贡献
93 点
 楼主| 发表于 2020-3-5 14:08:49 | 显示全部楼层
li913 发表于 2020-3-4 14:06
默认输出,每行不超过80字符。你需要用输出格式。

大神,前段时间的问题又出现了。为什么计算特征值时syevd函数老出错呢?
use lapack95,only: syevd
use blas95,only:gemm
call syevd(C,W,'V','U',info)
现在计算出来的特征值全是0,info=-1000
编译指令是ifort -mkl EM.f -o EM  /opt/intel/mkl/lib/intel64/libmkl_lapack95_ilp64.a /opt/intel/mkl/lib/intel64/libmkl_blas95_ilp64.a

803

帖子

2

主题

0

精华

大宗师

F 币
3811 元
贡献
2276 点
发表于 2020-3-6 12:22:41 | 显示全部楼层
给个单位阵试试结果。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-25 21:26

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表