Developer Reference

  • 2020.2
  • 07/15/2020
  • Public Content
Contents

Overview

This publication, the
Intel®
Math Kernel Library
Developer Reference
, was previously known as the
Intel®
Math Kernel Library
Reference Manual
.
Intel®
Math Kernel Library (
Intel® MKL
) is optimized for performance on Intel processors.
Intel® MKL
also runs on non-Intel x86-compatible processors.
Intel® MKL
provides limited input validation to minimize the performance overheads. It is your responsibility when using
Intel® MKL
to ensure that input data has the required format and does not contain invalid characters. These can cause unexpected behavior of the library. Examples of the inputs that may result in unexpected behavior:
  • Not-a-number (NaN) and other special floating point values
  • Large inputs may lead to accumulator overflow
As the
Intel® MKL
API accepts raw pointers, it is your application's responsibility to validate the buffer sizes before passing them to the library. The library requires subroutine and function parameters to be valid before being passed. While some
Intel® MKL
routines do limited checking of parameter errors, your application should check for NULL pointers, for example.
The
Intel®
Math Kernel Library
includes Fortran routines and functions optimized for Intel® processor-based computers running operating systems that support multiprocessing. In addition to the Fortran interface,
Intel® MKL
includes a C-language interface for the Discrete Fourier transform functions, as well as for the Vector Mathematics and Vector Statistics functions. For hardware and software requirements to use
Intel® MKL
, see
Intel® MKL
Release Notes
.
Functions calls at runtime for
Intel® MKL
libraries on the Microsoft Windows* operating system can utilize the function,
LoadLibrary()
, and related loading functions in static, dynamic, and single dynamic library linking models. These functions attempt to access the loader lock which when used within or at the same time as another
DllMain
function call, can lead to a deadlock. If possible, avoid making your calls to
Intel® MKL
in a
DllMain
function or at the same time as other calls to
DllMain
even on separate threads. Refer to Microsoft documentation about
DllMain
and
Dynamic-Link Library Best Practices
for more details.

BLAS Routines

The BLAS routines and functions are divided into the following groups according to the operations they perform:
  • BLAS Level 1 Routines perform operations of both addition and reduction on vectors of data. Typical operations include scaling and dot products.
  • BLAS Level 2 Routines perform matrix-vector operations, such as matrix-vector multiplication, rank-1 and rank-2 matrix updates, and solution of triangular systems.
  • BLAS Level 3 Routines perform matrix-matrix operations, such as matrix-matrix multiplication, rank-k update, and solution of triangular systems.
Starting from release 8.0,
Intel® MKL
also supports the Fortran 95 interface to the BLAS routines.
Starting from release 10.1, a number of BLAS-like Extensions are added to enable the user to perform certain data manipulation, including matrix in-place and out-of-place transposition operations combined with simple matrix arithmetic operations.

Sparse BLAS Routines

The Sparse BLAS Level 1 Routines and Functions and Sparse BLAS Level 2 and Level 3 Routines routines and functions operate on sparse vectors and matrices. These routines perform vector operations similar to the BLAS Level 1, 2, and 3 routines. The Sparse BLAS routines take advantage of vector and matrix sparsity: they allow you to store only non-zero elements of vectors and matrices.
Intel® MKL
also supports Fortran 95 interface to Sparse BLAS routines.

Sparse QR

Sparse QR in
Intel® MKL
is a set of routines used to solve sparse matrices with real coefficients and general structure. All Sparse QR routines can be divided into three steps: reordering, factorization, and solving. Currently, only CSR format is supported for the input matrix, and Sparse QR operates on the matrix handle used in all SpBLAS IE routines. (For details on how to create a matrix handle, refer to mkl-sparse-create-csr .)

LAPACK Routines

The
Intel®
Math Kernel Library
fully supports the LAPACK 3.7 set of computational, driver, auxiliary and utility routines.
The original versions of LAPACK from which that part of
Intel® MKL
was derived can be obtained from http://www.netlib.org/lapack/index.html . The authors of LAPACK are E. Anderson, Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney, and D. Sorensen.
The LAPACK routines can be divided into the following groups according to the operations they perform:
Starting from release 8.0,
Intel® MKL
also supports the Fortran 95 interface to LAPACK computational and driver routines. This interface provides an opportunity for simplified calls of LAPACK routines with fewer required arguments.

ScaLAPACK Routines

The ScaLAPACK package (
provided only for Intel® 64 and Intel® Many Integrated Core architectures
, see
ScaLAPACK Routines
) runs on distributed-memory architectures and includes routines for solving systems of linear equations, solving linear least squares problems, eigenvalue and singular value problems, as well as performing a number of related computational tasks.
The original versions of ScaLAPACK from which that part of
Intel® MKL
was derived can be obtained from http://www.netlib.org/scalapack/index.html . The authors of ScaLAPACK are L. Blackford, J. Choi, A.Cleary, E. D'Azevedo, J. Demmel, I. Dhillon, J. Dongarra, S. Hammarling, G. Henry, A. Petitet, K.Stanley, D. Walker, and R. Whaley.
The
Intel® MKL
version of ScaLAPACK is optimized for Intel® processors and uses MPICH version of MPI as well as Intel MPI.