- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I compile my test.f as "ifort -mkl test.f -o test" but the system feedback is undefined reference and it cann't find this function. However, the ssyevd function works well. In the intel mkl Developer Reference, the function description is:
Syntax
call ssyevd(jobz, uplo, n, a, lda, w, work, lwork, iwork, liwork, info)
call dsyevd(jobz, uplo, n, a, lda, w, work, lwork, iwork, liwork, info)
call syevd(a, w [,jobz] [,uplo] [,info])
Why the system cann't find the syevd function? Please help me, I need the fortran mkl to calculate the eigenvalue of matrice 20000*20000.
The file test.f is:
program main
implicit none
integer,parameter :: M=20000,N=500
integer i,j,info
real dataM(M,N),C(M,M),T(N,M),W(M)
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)
end
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In order to use the Lapack95 call to SYEVD as you did in your program, you should insert a "use lapack95" statement after the first line, and you should link with the MKL Lapack95 library (IA32, LP64 or ILP64, as appropriate). See https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor for help with the command line to link.
This thread is more appropriate for the MKL forum.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for your reply. But now, I have a new problem. It makes me trouble! When I calculate the eigenvalues using the syevd function, the result of eigenvalues are all zero and the info=-1000. What's wrong with it or my procedure?
use lapack95,only: syevd
use blas95,only:gemm
call syevd(C,W,'V','U',info)
ifort -mkl EM.f -o EM /opt/intel/mkl/lib/intel64/libmkl_lapack95_ilp64.a /opt/intel/mkl/lib/intel64/libmkl_blas95_ilp64.a
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
mecej4 wrote:In order to use the Lapack95 call to SYEVD as you did in your program, you should insert a "use lapack95" statement after the first line, and you should link with the MKL Lapack95 library (IA32, LP64 or ILP64, as appropriate). See https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor for help with the command line to link.
This thread is more appropriate for the MKL forum.
Thank you for your reply. But now, I have a new problem. It makes me trouble! When I calculate the eigenvalues using the syevd function, the result of eigenvalues are all zero and the info=-1000. What's wrong with it or my procedure?
use lapack95,only: syevd
use blas95,only:gemm
call syevd(C,W,'V','U',info)
ifort -mkl EM.f -o EM /opt/intel/mkl/lib/intel64/libmkl_lapack95_ilp64.a /opt/intel/mkl/lib/intel64/libmkl_blas95_ilp64.a
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page