Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

MKL 5.2 and ifc 8.0

Keith_R_
Novice
578 Views
I'm trying to link some code compiled with ifc 8.0 with the Intel MKL v 5.2, and am getting link failures:

/opt/intel/mkl52/lib/32/libmkl_lapack64.so: undefined reference to `z_abs'
/opt/intel/mkl52/lib/32/libmkl_lapack64.so: undefined reference to `c_sqrt'
/opt/intel/mkl52/lib/32/libmkl_lapack64.so: undefined reference to `z_exp'
/opt/intel/mkl52/lib/32/libmkl_lapack64.so: undefined reference to `c_exp'
/opt/intel/mkl52/lib/32/libmkl_lapack64.so: undefined reference to `z_sqrt'
/opt/intel/mkl52/lib/32/libmkl_lapack64.so: undefined reference to `s_cat'
/opt/intel/mkl52/lib/32/libmkl_lapack64.so: undefined reference to `c_abs'
/opt/intel/mkl52/lib/32/libmkl_lapack64.so: undefined reference to `s_copy'

This worked perfectly well when using the 7.1 compiler.
A little investigation reveals that these symbols were defined in:
/opt/intel/compiler70/ia32/lib/libF90.so.3.

Can it really be true that the MKL library is dependent on compiler version-specific basic maths functions?

Keith Refson
0 Kudos
1 Reply
Martyn_C_Intel
Employee
578 Views
You are using a rather old version of MKL with a new compiler. There were major, one-timechanges in the 8.0 Fortran compiler, with the adoption of a new front end and runtime libraries (whose roots are in Compaq Visual Fortran). Whilst we strive to make MKL insensitive to the RTL, thedifferences hereare too great. For example, some intrinsics, such as complex double precision square roots, are not part of the Fortran standard, and 7.1 (ZSQRT) and 8.0 (CDSQRT) front ends and corresponding libraries have different conventions. In general, objects built with older compilers will need to be rebuilt with 8.0. We do not expect comparable changes between future compiler versions.
Future versions of MKL are anyway intended to be independent of the runtime library. I believe the current MKL version (6.1) should already be compatible with both the 7.1 and 8.0 compilers.
Martyn
0 Kudos
Reply