MKL 10 new library scheme

MKL 10 new library scheme

I didn't see an official mention on this forum, but MKL 10.0 has been released. The libraries have changed, which may seem somewhat puzzling.
There are OpenMP libraries which are compatible with VC9 for Windows and with gcc/gfortran 4.2+ for linux. This permits use of threaded MKL with OpenMP applications built with those compilers, as well as mixed OpenMP builds using those compilers together with Intel 10.1 compilers.
I verified the claim that significantly increased gfortran OpenMP x86_64 performance could be obtained simply by linking the libiomp5 from MKL.
The serial and ilp64 libraries have been replaced by a "layered" scheme which should support combinations. The term "serial" has been replaced by "sequential."
There are vociferous warnings in the docs against using static links of the OpenMP libraries, the only reason given being that mixtures of static and dynamic links, or "legacy" (Intel compiler 8.0 through 10.0 conventions) and "compatibility," would break. I can imagine a higher incidence rate of situations where someone tries to run an application which finds the wrong dynamic libraries on path, so I don't expect the advice to be popular.
Somewhat hidden is the warning that MKL links with Intel compilers should be set up to allow the compiler to supply the OpenMP library. This is not a change, except that the Intel 10.1 compilers have the choice between legacy (backward compatible to 8.0 compilers) and compatibility (compatible with VC9 or gcc 4.2+), both intended to work with MKL 10.0.
On the Fortran side, another possible breakage would come from failure to use the correct 'use omp_lib' as the compatibility library uses C interop call by value for functions like omp_num_threads.

1 post / 0 new
For more complete information about compiler optimizations, see our Optimization Notice.