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

trouble with zgeev subroutine

oleglebedev
New Contributor I
679 Views
Hello!

I have to evaluate eigenvalues and eigenvectors for general complex matrix 3by3. I chose a zgeev subroutine to find ones.
I use the following command to link example file on my laptop
http://software.intel.com/sites/products/documentation/hpc/mkl/lapack/mkl_lapack_examples/zgeev_ex.f.htm
ifort main.f90 -O3 -ip -static -fast -parallel -align all -mp1 -mtune=pentium4m -pad \\
-pc80 -prec-div -prec-sqrt -scalar-rep -simd -unroll4 -unroll-aggressive -finline \\
-diag-file=diag.out \\
-I/opt/intel/composerxe-2011.3.174/mkl/include/intel64/ilp64\\
-lmkl_blas95_ilp64 -lmkl_lapack95_ilp64 \\
-Wl,--start-group \\
/opt/intel/composerxe-2011.3.174/mkl/lib/intel64/libmkl_intel_ilp64.a \\
/opt/intel/composerxe-2011.3.174/mkl/lib/intel64/libmkl_sequential.a \\
/opt/intel/composerxe-2011.3.174/mkl/lib/intel64/libmkl_core.a -Wl,--end-group\\
-lpthread -o xmain

An executable file was created successful. But when I execute it I have error msg out of zgeev.
MKL ERROR: Parameter 12 was incorrect on entry to ZGEEV
And lwork from code equals to LWORK=MIN( LWMAX,INT( WORK(1) ) ) = -2 147 483 648.
As it is written in man to zgeev
LWORK (input) INTEGERThe dimension of the array WORK. LWORK >= max(1,2*N).For good performance, LWORK must generally be larger. If LWORK = -1, then a workspace query is assumed; the routineonly calculates the optimal size of the WORK array, returns
this value as the first entry of the WORK array, and no errormessage related to LWORK is issued by XERBLA.
I setted up lwork=-1, but I still have the MKL error.
May I have lost any libraries compiling the executable?
About system:
$ifort --version
ifort (IFORT) 12.0.3 20110309
OS = Ubuntu 11.04
PROC = Intel Core i5-2410M CPU @ 2.30GHz
$lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 4
Thread(s) per core: 2
Core(s) per socket: 2
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 42
Stepping: 7
CPU MHz: 800.000
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
A rebuilt kernel on base on2.6.39*
0 Kudos
1 Solution
mecej4
Honored Contributor III
679 Views
The default integer size in Intel Fortran is 4 bytes.

The libraries that you used (those whose names have ilp64 in them )above are appropriate only if you are using 8 byte integers. Clarify whether you really want to use 8-byte integers,, and whether your ifort.cfg file has the necessary options listed to that end.

If you only wanted to use 4-byte integers, choose the appropriate libraries (those that have lp64 in their names, not ilp64 )

View solution in original post

0 Kudos
3 Replies
TimP
Honored Contributor III
679 Views
As you've selected an ilp64 library, you must take care that all the integers are 64-bit type. ilp64 seems unlikely to be necessary for such small matricies.
Expert advice on this is more likely to be found on the MKL forum.
0 Kudos
mecej4
Honored Contributor III
680 Views
The default integer size in Intel Fortran is 4 bytes.

The libraries that you used (those whose names have ilp64 in them )above are appropriate only if you are using 8 byte integers. Clarify whether you really want to use 8-byte integers,, and whether your ifort.cfg file has the necessary options listed to that end.

If you only wanted to use 4-byte integers, choose the appropriate libraries (those that have lp64 in their names, not ilp64 )
0 Kudos
oleglebedev
New Contributor I
679 Views
Thank you for the rapid answer. It works for me.
0 Kudos
Reply