4.2 Mathematical libraries
Intel MKL is a mathematical library collection that is optimized for Intel processors. On Taito, MKL can be used with both Intel and GNU compilers for Fortran and C/C++ programming. However cluster libraries (BLACS, ScaLAPACK and Cluster FFT functions) will work only with IntelMPI on Taito.
MKL includes the following groups of routines:
- BLAS (Basic Linear Algebra Subprograms)
- Sparse BLAS
- LAPACK (Linear Algebra PACKage)
- PBLAS (Parallel Basic Linear Algebra Subprograms)
- BLACS (Basic Linear Algebra Communication Subprograms)
- ScaLAPACK (Scalable LAPACK)
- Sparse Solver routines (direct sparse solver PARDISO, direct sparse solver DSS, iterative sparse solvers RCI, preconditioners for iterative solution process)
- Vector Mathematical Functions (VML, arithmetic, power, trigonometric, exponential, hyperbolic, special, and rounding)
- Vector Statistical Functions (VSL, random numbers, convolution and correlation, statistical estimates)
- General Fast Fourier Transform (FFT) Functions
- Cluster FFT functions
- Partial Differential Equations (PDE) support tools (Trigonometric Transform routines, Poisson routines)
- Nonlinear least squares problem solver routines
- Data Fitting functions (spline-based)
- Support Functions (timing, thread control, memory management, error handling, numerical reproducibility)
MKL library has two integer interfaces 32-bit (they call it: LP64) and 64-bit integer (ILP64) interfaces. So if you work with data arrays that have more than 231-1 elements ILP64 interface is for you.
MKL supports sequential and threaded programming modes. Intel MKL is based on the OpenMP threading. See: Improving performance with threading for more information.
Make sure that mkl module has been loaded. If not give command:
module load mkl
Basic information can be found from link:
Load one of the supported compiler environments. Because MKL includes many libraries and programming interfaces a link line can be a long list. To find a correct line for a case, specify your choices using Intel Math Kernel Library (MKL) Link Line Advisor tool:
Table 4.5 lists the setting you should use with the Link Line Advisor.
Table 4.5 Link Line Advisor tips for Taito:
Select Intel® product
Intel MKL 11.0 (or another installed version)
Intel or Gnu Fortran or C/C++
Select dynamic or static linking
both options (static/dynamic) are OK
Select interface layer
LP64 or ILP64 (what is the integer range in your code)
Select sequential or multi-threaded layer
sequential and threaded programming modes are supported
Select OpenMP library
This is needed only for threaded applications and/or enable threading in MKL
Select cluster library
Select these If a code is using ScaLAPACK, BLACS or Cluster FFT
Select MPI library
Select the Fortran 95 interfaces
Select this only if your application has a Intel MKL Fortran module interface. (if your code has a standard BLAS/LAPACK interface you do not select these)
Link with Intel® MKL libraries explicitly
Copy the results (link line and compiler option results) into a Makefile. In command line compiling and linking case remove all brackets that the advisor gives (for example if there is a variable (MKLROOT) in brackets then remove the brackets.
When you run an OpenMP (threaded) application there are environment variables for threading control. Before running an application set the OMP_NUM_THREADS variable. For example 16 threads:
MKL has also some additional MKL thread control environment variables.
For quick linking Intel compiler supports variants of the -mkl compiler option. The compiler links your application using the LP64 interface and it does not use Intel MKL Fortran module 95 interfaces.
-mkl or -mkl=parallel to link with threaded MKL
-mkl=sequential to link with sequential MKL
-mkl=cluster to link with cluster libraries that use IntelMPI
f95 -o my_code my_code.f90 -mkl=sequential
Add option -static-intel if you want to use static linking, dynamic linking is the default.
MKL include files
This link has a include file table (for Fortran and C/C++).
|Previous chapter||One level up||Next chapter|