Math Kernel Library Explained

Intel oneAPI Math Kernel Library
Developer:Intel
Latest Release Version:2024.2
Latest Release Date:[1]
Programming Language:C/C++, DPC++, Fortran
Operating System:Microsoft Windows, Linux
Platform:CPU[2]

GPU

Genre:Library and framework
License:freeware under ISSL[3] [4]

Intel oneAPI Math Kernel Library (Intel oneMKL), formerly know as Intel Math Kernel Library, is a library of optimized math routines for science, engineering, and financial applications. Core math functions include BLAS, LAPACK, ScaLAPACK, sparse solvers, fast Fourier transforms, and vector math.[5] [6]

The library supports x86 CPUs and Intel GPUs[2] and is available for Windows and Linux operating systems.[6] [7]

Intel oneAPI Math Kernel Library is not to be confused with oneMKL Interfaces, an open-source wrapper library that allows DPC++ applications to call oneMKL routines that can be offloaded to multiple hardware architectures and vendors defined during runtime.[8]

History and licensing

Intel launched the oneAPI Math Kernel Library on November, 1994, and called it Intel BLAS Library. In 1996, the library was renamed to Intel Math Kernel Library until April 2020, when intel oneMKL has become part of oneAPI initiative to support multiple hardware architectures, holding the current name Intel oneAPI Math Kernel Library.

The library is available as part of oneAPI Toolkits and in a standalone form, free of charge under the terms of Intel Simplified Software License which allow redistribution.[9] Commercial support for Intel oneMKL is available when purchased as part of oneAPI Base Toolkit.

Following Apple’s transition away from x86 CPUs, Intel oneMKL last release available for macOS is the version 2023.2.2 and it is scheduled for removal by the end of 2024.

Performance and vendor lock-in

MKL and other programs generated by the Intel C++ Compiler and the Intel DPC++ Compiler improve performance with a technique called function multi-versioning: a function is compiled or written for many of the x86 instruction set extensions, and at run-time a "master function" uses the CPUID instruction to select a version most appropriate for the current CPU. However, as long as the master function detects a non-Intel CPU, it almost always chooses the most basic (and slowest) function to use, regardless of what instruction sets the CPU claims to support. This has netted the system a nickname of "cripple AMD" routine since 2009.[10], Intel's MKL remains the numeric library installed by default along with many pre-compiled mathematical applications on Windows (such as NumPy, SymPy).[11] [12] Although relying on the MKL, MATLAB implemented a workaround starting with Release 2020a which ensures full support for AVX2 by the MKL also for non Intel (AMD) CPUs.[13]

Details

Functional categories

Intel oneMKL has the following functional categories:[14]

BLAS routines are vector-vector (Level 1), matrix-vector (Level 2) and matrix-matrix (Level 3) operations for real and complex single and double precision data. LAPACK consists of tuned LU, Cholesky and QR factorizations, eigenvalue and least squares solvers. MKL also includes Sparse BLAS, ScaLAPACK, Sparse Solver, Extended Eigensolver (FEAST, PARDISO), PBLAS and BLACS. MKL is even better at small dimensions than libxsmm.

Since oneMKL uses standard interfaces for BLAS and LAPACK, the application which uses other implementations can get better performance on Intel and compatible processors by re-linking with MKL libraries.

Cluster versions of LAPACK and FFTs are also available as part of MKL to take advantage of MPI parallelism in addition to single node parallelism from multithreading.

Once, oneMKL included Deep Neural Network functions, but they were removed in version 2020 as a spin-off that originated the open-source Intel oneAPI Deep Neural Network Library.[15]

See also

External links

Notes and References

  1. Web site: Intel® Math Kernel Library Release Notes and New Features. software.intel.com.
  2. https://software.intel.com/oneapi/onemkl Intel® oneAPI Math Kernel Library (oneMKL) | Intel® Software
  3. Web site: Intel Simplified Software License .
  4. Web site: OneMKL — oneAPI Specification 1.1-rev-1 documentation .
  5. Web site: Intel Math Kernel Library.
  6. Web site: Intel Math Kernel Library (MKL).
  7. Web site: MKL - Intel Math Kernel Library. 23 April 2012.
  8. Web site: oneapi-src/oneMKL . oneAPI-SRC . 19 March 2021 . oneMKL interfaces are an open-source implementation of the oneMKL Data Parallel C++ (DPC++) interface according to the oneMKL specification. It works with multiple devices (backends) using device-specific libraries underneath..
  9. Web site: Intel Math Kernel Library Licensing FAQ.
  10. Web site: Agner's CPU blog - Intel's "cripple AMD" function. Agner Fog. Agner Fog.
  11. Web site: Comment chain in: r/matlab - How-To force Matlab to use a fast codepath on AMD Ryzen/TR CPUs - up to 250% performance gains. reddit. en-US. 2020-06-06.
  12. Web site: High-Performance Computing Center Stuttgart - Knowledge Base - Libraries(Hawk). en-US. 2020-06-06.
  13. Web site: Crippled No Longer: Matlab Now Runs on AMD CPUs at Full Speed - ExtremeTech. 2020-10-29. www.extremetech.com.
  14. Web site: Developer Reference for Intel® Math Kernel Library - C. admin. 2019-11-14. software.intel.com. en. 2019-11-27.
  15. Web site: Transitioning from Intel MKL-DNN to oneDNN . Intel . 25 July 2024 .