intel的mkl库求解大型矩阵(20000*20000)的特征值。系统是ubuntu,用到的函数是mkl库的syevd。
[Fortran] 纯文本查看 复制代码 program main
implicit none
integer,parameter :: M=20000,N=500,WORKL=M,iWORKL=M
integer i,j,info
real dataM(M,N),C(M,M),T(N,M),W(M),WORK(WORKL)
integer iWORK(iWORKL)
open(5,file='output_1.47_0.000_1.dat')
do i=1,M
read(5,*) (dataM(i,j),j=1,N)
end do
write(*,*) "load the dat file!"
do i=1,M
dataM(i,:)=dataM(i,:)/sqrt(sum(dataM(i,:)**2))
end do
write(*,*) "dataM has been unitary"
T=transpose(dataM)
C=matmul(dataM,T)
write(*,*) "C has been done!"
call syevd(C,W,'V')
编译ifort -mkl test.f -o test,文件名test.f.但是系统找不到这个函数,可是我用同样的操作ssyevd函数就可以编译,但是ssyecd函数输入的参数太多,执行起来也很困难。有没有大神用过这个mkl的函数,求指点。
|