Starting with release 10.0, Intel MKL employs a layered model.
There are four essential parts of the library:
1. Interface layer
2. Threading layer
3. Computational layer
4. Compiler Support Run-time libraries.
The first part adapts Intel MKL to interface-related issues, for example, whether to use 32-bit or 64-bit integer types, or how different compilers return function values. The second part adapts the library to the OpenMP* implementations used by different threading compilers or to the non-threaded usage mode. The Computational layer is the bulk of the library, which is isolated in a separate part to save space. Rather than generate one library for each of the cases within those parts and thus create a geometric explosion of possibilities, Intel MKL has broken down each part into independent libraries corresponding to those cases. You can combine these libraries to meet your needs. Once the interface library is selected, the threading library you select picks up that interface, and the computational libraries use interfaces and threading chosen in the first two layers.
This layer provides matching between compiled code of your application and the threading and/or computational parts of the library. This layer provides:
- The LP64 and ILP64 interfaces
(see Support for ILP64 Programming for details)
- Compatibility with compilers that return function values differently
- A mapping between single-precision names and double-precision names for applications using Cray*-style naming (SP2DP interface)
|
|
NOTE. SP2DP interface supports Cray-style naming in applications targeted for the Intel 64 or IA-64 architecture and using the ILP64 interface. SP2DP interface provides a mapping between single-precision names (for both real and complex types) in the application and double-precision names in Intel MKL BLAS and LAPACK. Function names are mapped as shown in the following example for BLAS functions *GEMM: |
This layer provides:
- A way to link threaded Intel MKL with different threading compilers.
- An ability for the user to link with a threaded or sequential mode of the library.
This layer is compiled for different environments (threaded or sequential) and compilers (from Intel, GNU*, and so on).
This layer is the heart of Intel MKL. For any given processor architecture (IA-32, IA-64, or Intel(R) 64) and OS, this layer has only one computational library to link with, regardless of the Interface and Threading layer. The Computational layer accommodates multiple architectures through identification of architecture features and chooses the appropriate binary code at run time.
This layer provides RTL support. Not all RTLs are delivered with Intel MKL. Except those that are relevant to the Intel MKL cluster software, the only RTLs provided are Intel(R) compiler RTLs: Intel(R) Compatibility OpenMP* run-time library (libiomp) and Intel(R) Legacy OpenMP* run-time library (libguide). To thread using third-party threading compilers, use libraries in the Threading layer or an appropriate compatibility library (for more information, see Linking with Threading Libraries).