Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
6956 Discussions

MKL Eigensolver DSYGVX return with error

GoldenRetriever
Beginner
267 Views

Hi there,

I used DSYGVX subroutine to find eigenvalues for matrices as in attached file however it runs with error.

Meanwhile, the IMSL subroutine can produce the results for this the same problem.

Please find attached zip file for the code and data files. I would appreciate any advices and solutions for this problem.


Sytem information:

Windows 7 Ultimate

Microsoft Visual Basic 2008

Intel Visual Fortran Compiler Professional Edition 11.1

Intel Math Kernel Library 10.3 Update 5 for Windows* OS

0 Kudos
3 Replies
mecej4
Honored Contributor III
267 Views
You are calling the IMSL and MKL routines incorrectly. When you call subroutines with optional arguments, you must provide the caller with an explicit interface. When you call a subroutine with the F77 interface, you must provide all the arguments and in the required order.

Some library routines overwrite the input matrices, as described in the documentation. If you want to preserve the matrices for reuse, you have to save and restore them as needed.

The mere running of a program without error messages is not to be taken as proof that the program has run correctly.
0 Kudos
GoldenRetriever
Beginner
267 Views

Hi mecej4, in my case, I did not get any input error from the compiler; would you mind to correct any caller which you think was used incorrectly pls?

For the F77 interface, it seems a bit confusing that the code can run in windows 32, but with the same problem when I tried a run on latest Composer 2011 XE SP1 - Windows 7-64bit, it produced an error at argument (20) for lwork=-1 which used in the first call to get lwork value for workspace.

Btw, I just noticed that the dsygvx subroutine could not use in this case as the B matrix is not positive definite. Im still looking for a solution for this.

0 Kudos
mecej4
Honored Contributor III
267 Views
It is natural to observe unpredictable behavior when subroutines are called incorrectly. Unless you have enabled interface checking, the compiler will not detect such erroneous calls.

It is the programmer's responsibility to ensure the the subroutine calls are made correctly. It serves no purpose to attempt to explain the behavior of a program when incorrect calls are known to exist.

The MKL installation contains an examples directory, and the documentation describes the arguments to be provided to the library routines.
0 Kudos
Reply