Search
Support & Downloads
All of Support
This Category
Software Products
Performance Tools for Software Developers
For easily migrating from MKL 9.x to 10.x

In order to provide maximum support for our users, we re-architected Intel® MKL since MKL 10.0. This new Intel® MKL architecture provides 4 layer libraries so that users can choose numerous linking combinations according to the wanted configurations of interfaces, compilers, and threading mode. But some users who used to previous MKL version may be confused by this change.

The following are some tips for easily migrating from 9.x to 10.x MKL. (For who begin from MKL 10.0 and want to learn how to use it, please refer to the Intel® MKL User’s Guide or online help Linking applications with Intel® MKL version 10.0.

First, please know all new libraries are physically separated into 4 layers in MKL 10:

  1. Interface layer
  2. Threading layer
  3. Computation layer
  4. Compiler Support RTL layer (RTL layer, for brevity)

In addition, the new link command is required to select only one library to link from each layer. For example, general required libraries are as follows:

libmkl_intel_c.lib libmkl_intel_thread.lib libmkl_core.lib libguide40.lib

We call this kind of link mode as layered pure mode

Please refer to Intel® MKL User’s Guide for more details.

Secondly, MKL 10.x removes some libraries and introduces more libraries. So the main work of migrating from early version to 10.x is to modify the input MKL libraries for use of MKL 10.0. But please know that MKL 10.x providing backward compatibility with earlier version by dummy libraries, such as mkl_c.lib,mkl_c_dll.lib. They are same as the earlier version. So for most cases, it is easy to migrate from 9.x to 10.x by keeping the libraries in link line unchangeable.

We call this kind of link mode as layered default mode.

When migrating, you can choose either layered default mode, which is backward compatible on link line or layered pure mode that supports more configurations, You are strongly encouraged to using layered pure mode.


Windows*

If you have used earlier version of MKL for windows* and decide to migrate from previous version to MKL 10.x, please refer to the following steps:

  1. Add MKL 10.x executable path in SYSTEM environment.

  2. Open My Computer » System Properties » Advanced » Environment Variables » System variables » Path » Edit.
    Remove the executable path of previous MKL and add MKL 10.x’s (e.g., default: remove the C:\Program Files\Intel\MKL\9.0\ia32\bin, and
    add C:\Program Files\Intel\MKL\10.0.1.015\ia32\bin).
  3. Add MKL 10.x header file INCLUDE path in your compiler command line, your makefile or configure file or in MSVC IDE. Please refer to Compiling and Linking with Microsoft* Visual C/C++*.
    (e.g., default: remove the C:\Program Files\Intel\MKL\9.0\include, and
    add C:\Program Files\Intel\MKL\10.0.1.015\include).
  4. Add MKL 10.x library files in LIBRARY path in your compiler command line, your makefile or configure file or in MSVC IDE. Please refer to >Compiling and Linking with Microsoft* Visual C/C++*.
    (e.g. default: remove the C:\Program Files\Intel\MKL\9.0\ia32\lib, and
    add C:\Program Files\Intel\MKL\10.0.1.015\ia32\lib).
  5. Specify the corresponding libraries in your compiler command line, your makefile or configure file or in MSVC IDE. Please refer to Compiling and Linking with Microsoft* Visual C/C++*.

    With layered pure mode, e.g., if with static link, they areas follows:

    mkl_intel_c.lib mkl_intel_thread.lib mkl_core.lib libguide40.lib
    And if with dynamic link, they are:
    mkl_intel_c_dll.lib mkl_intel_thread_dll.lib mkl_core_dll.lib libguide40.lib

    For selecting which libraries to link, please refer to chapter 5 of Intel® MKL User’s Guide.

    With layered default mode, as we mentioned above, MKL 10.x is backward compatible with the earlier version of Intel MKL by providing dummy libraries such as mkl_c.lib, mkl_c_dll.lib. So if the libraries you specified before were mkl_c.lib libguide40.lib or mkl_c.lib libguide40.lib, you can keep them and no more mkl library is required.

    Note 1: Actually, the dummy libraries in MKL 10.x are like interfaces library of layer libraries combination. For example:

    mkl_c.lib is “mkl_intel_c.lib mkl_intel_thread.lib mkl_core.lib” in ia32 mode
    mkl_c_dll.lib is “mkl_intel_c_dll.lib mkl_intel_thread_dll.lib mkl_core_dll.lib”

    Note 2: libguide40.lib (or libguide.lib) is required.


Linux

If you have used earlier version of Intel MKL for Linux* and decide to migrate from previous version to MKL 10.x, please refer to the following steps:

  1. Add MKL 10.x header file INCLUDE path in your compiler command line, your makefile or configure file. (default: /opt/intel/mkl/10.x.x.xxx/include)

  2. Add MKL 10.x library path in your compiler command line, your makefile or configure file. (default: /opt/intel/mkl/10.x.x.xxx/lib/32)

  3. Specify the corresponding libraries in your compiler command line, your makefile or configure file.

    With layered pure mode, e.g. with static link, they are as follows:

    -Wl,--start-group
    /opt/intel/mkl/10.0.xxx/lib/32/libmkl_intel.a
    /opt/intel/mkl/10.0.xxx/lib/32/libmkl_intel_thread.a
    /opt/intel/mkl/10.0.xxx/lib/32/libmkl_core.a
    Wl,--end-group
    /opt/intel/mkl/10.0.xxx/lib/32/libguide.so –lpthread -lm
    With dynamic link,
    -L/opt/intel/mkl/10.0.xxx/lib/32/ they are
    -lmkl_intel.so –lmkl_intel_thread.so -lmkl_core.so [-lguide]
    [-lpthread] [-lm]

    Note 3: In case of employing the pure layered model for static linking, the interface layer, threading layer, and computation layer libraries must be enclosed in grouping symbols (<-Wl,--start-group, -Wl,--end-group).

    With layered default mode, same as Windows, MKL 10.x is backward compatible with the earlier version of Intel MKL by providing dummy libraries, such as libmkl.so, libmkl_ia32.a, libmkl_em64.a, libmkl_lapack.a libmkl_solver.a. So if you employ the above interface and use OpenMP* threading provided by the Intel® compiler, you may not change your link lines when you migrate from early version to MKL 10.x.

    Note 4: The dummy libraries in MKL 10.x are actually ASCII text files. For example:

    libmkl_ia32.a: GROUP (libmkl_intel.a libmkl_intel_thread.a libmkl_core.a)
    libmkl_lapack.a: GROUP (libmkl_intel.a libmkl_intel_thread.a libmkl_core.a)
    libmkl.so : GROUP (libmkl_intel.so libmkl_intel_thread.so)

    For the dummy library under em64 folder, the content of libmkl_em64t.a is GROUP (libmkl_intel_lp64.a libmkl_intel_thread.a libmkl_core.a) and so on.

    Note 5: To specify the MKL, library path in the link line is required. For example, -L/opt/intel/mkl/10.0.011/lib/32, so that the linker can search for real archive libraries.

    Note 6: The order of listing libraries in the link line is essential, except for the libraries enclosed in the grouping symbols.

    Please refer to chapter 5 of Intel® MKL User’s Guide or online help Linking applications with Intel® MKL version 10.0 for more information.

  4. Set MKL library path to LD_LIBRARY_PATH environment variable before running application, e.g.,#export LD_LIBRARY_PATH=/opt/intel/mkl/10.0.1.014/lib/32:$LD_LIBRARY_PATH

Mac OS* X

If you have used earlier version of Intel MKL for Mac OS* and decide to migrate from previous version to MKL 10.x, please refer to the following steps:

  1. Add MKL 10.x header file INCLUDE path in your compiler command line, your makefile or configure file, or the Apple* Xcode*development environment. (default: MKLINCLUDE= /Library/Frameworks/Intel_MKL.framework/Headers)

  2. Add MKL 10.x library search path in your compiler command line, your makefile or configure file, or the Apple* Xcode*development environment. (default: MKLPATH =/Library/Frameworks/Intel_MKL.framework/Versions/10.0.012/lib/32)

  3. Specify the libraries in your compiler command line, your makefile or configure file or the Apple* Xcode* development environment.

    Please note, MKL 10.x for Mac OS only supports layered pure mode. For example, with static link, they are as follows:

    $MKLPATH/libmkl_intel.a $MKLPATH/libmkl_intel_thread.a
    $MKLPATH/libmkl_core.a
    $MKLPATH/libmkl_intel.a $MKLPATH/libmkl_intel_thread.a
    $MKLPATH/libmkl_core.a
    $MKLPATH/libmkl_intel.a $MKLPATH/libmkl_intel_thread.a
    $MKLPATH/libmkl_core.a
    -lguide –lpthread

    With dynamic link, they are as follows:

    -L$MKLPATH -lmkl_intel -lmkl_intel_thread -lmkl_core -lguide -lpthread

    Note 7: The libraries like libmkl_ia32.a, libmkl_em64.a, libmkl.dylib were removed from MKL 10.x. The replaced link line could be “-lmkl_intel -lmkl_intel_thread -lmkl_core”.

    Note 8: When static linking, the interface layer, threading layer, and computation layer libraries (for example, libmkl_intel_ilp64.a libmkl_intel_thread.a libmkl_core.a) must be repeated two times for all components except BLAS and FFT. For the LAPACK component, threading layer and computation layer libraries must be repeated three times.

    Note 9: When static linking, to specify the MKL library path in the link line like $MKLPATH/libmkl_core.a is required as both shared and static library has same name in MKL 10.x.

    Note 10: The libraries under “32” folder is used for 32-bit applications.

    The libraries under “em64t” folder is or Intel® Xeon® processor using Intel® 64 architecture.

  4. Set MKL library path to the following environment variables before running application. For example:
    export MANPATH=/Library/Frameworks/Intel_MKL.framework/Versions/10.0.012/man:$MANPATH
    export DYLD_LIBRARY_PATH=/Library/Frameworks/Intel_MKL.framework/Versions/10.0.012/lib/32:$DYLD_LIBRARY_PATH
    export LIBRARY_PATH=/Library/Frameworks/Intel_MKL.framework/Versions/10.0.012/lib/32:$LIBRARY_PATH
For more details of link MKL library, please refer to Intel® MKL User’s Guide or online help Linking applications with Intel® MKL version 10.0 for more information.

Operating System:
Red Hat* Linux, Red Hat* Desktop Linux* 3, Red Hat* Enterprise Linux Desktop 4, Red Hat* Desktop 3 Update 4, Windows* XP Professional x64 Edition, Windows Server* 2003 Standard x64 Edition, Windows Server* 2003 Enterprise x64 Edition, Longhorn Beta 1, Windows Vista* Beta 1, Red Hat* Enterprise Linux Desktop 3 Update 3, Red Hat* Enterprise Linux Desktop 3 Update 4, Red Hat* Enterprise Linux Desktop 3 Update 5, Red Hat* Enterprise Linux Desktop 4 Update 1, Mac OS*, Red Hat* Enterprise Linux 2.1, Red Hat* Enterprise Linux 4.0, Windows* Storage Server, Redhat* Desktop 3 Update 5, Redhat* Desktop 3 Update 6, Redhat* Desktop 3 Update 7, Redhat* Desktop 4 Update 2, Redhat* Desktop 4 Update 3, Redhat* Desktop 4 Update 4, Windows Vista* 64, Windows Vista* Starter, 32-bit version, Windows Vista* Home Basic, 32-bit version, Windows Vista* Home Premium, 32-bit version, Windows Vista* Business, 32-bit version, Windows Vista* Enterprise, 32-bit version, Windows Vista* Ultimate, 32-bit version, Windows Vista* RC2, Windows Vista* Home Basic, 64-bit version, Windows Vista* Home Premium, 64-bit version, Windows Vista* Business, 64-bit version, Windows Vista* Enterprise, 64-bit version, Windows Vista* Ultimate, 64-bit version, Windows Vista*, Windows Vista* 32, Windows Server* 2003 for Itanium-based Systems, Windows* XP Starter Edition, Red Hat* Enterprise Linux 5.0, Windows* Compute Cluster Server 2003, Windows* XP 64-Bit Edition, Windows* XP Professional, Windows* XP Home Edition, Red Hat* Linux 6.2, Red Hat* Linux 6.2 SBE2, Red Hat* Linux 7.0, Red Hat* Linux 7.1, Red Hat* Linux 7.2, Red Hat* Linux 7.3, Red Hat* Linux 8.0, Red Hat* Linux Advanced Server 2.x, Windows* XP Tablet PC Edition, Windows Server* 2003, Windows* XP Media Center Edition, Red Hat* Linux 9.0, Red Hat* Enterprise Linux 3.0, Windows Server* 2003 Standard Edition, Red Hat* Linux Advanced Server 3.x, Windows* XP 64-Bit Edition Version 2003

This applies to:
Intel® Math Kernel Library (Intel® MKL)
Intel® Math Kernel Library (Intel® MKL) for Linux*
Intel® Math Kernel Library (Intel® MKL) for Windows*
Intel® Math Kernel Library for Mac OS*

Solution ID: CS-028699
Date Created: 06-Jan-2008
Last Modified: 07-Jan-2008
Back to Top