Developer Guide for Intel® oneAPI Math Kernel Library for Linux*
For more documentation on this and other products, visit the oneAPI Documentation Library.
Intel® Math Kernel Library is now Intel® oneAPI Math Kernel Library (oneMKL). Documentation for older versions of Intel® Math Kernel Library is available for download only. For a list of available documentation downloads by product version, see these pages:
- Download Documentation for Intel® Parallel Studio XE
- Download Documentation for Intel® System Studio
Starting with the 2024.0 release, macOS is no longer supported in Intel® oneAPI Toolkits and components.
Several Intel-led open-source developer-tool projects will continue supporting macOS on Apple Silicon including oneAPI Threading Building Blocks (oneTBB) and Intel® Implicit SPMD Program Compiler, and we welcome the opportunity to work with contributors to expand support to additional tools in the future.
All macOS content will be removed from technical documentation in the 2024.1 release. If you need to keep a copy of the documentation, download it from the Downloadable Documentation site.
Intel® oneAPI Math Kernel Library (oneMKL) is a computing math library of highly optimized, extensively threaded routines for applications that require maximum performance. The library provides Fortran and C programming language interfaces. oneMKL C language interfaces can be called from applications written in either C or C++, as well as in any other language that can reference a C interface.
oneMKL provides comprehensive functionality support in these major areas of computation:
- BLAS (level 1, 2, and 3) and LAPACK linear algebra routines, offering vector, vector-matrix, and matrix-matrix operations.
- ScaLAPACK distributed processing linear algebra routines, as well as the Basic Linear Algebra Communications Subprograms (BLACS) and the Parallel Basic Linear Algebra Subprograms (PBLAS).
- oneMKL PARDISO (a direct sparse solver based on Parallel Direct Sparse Solver PARDISO*), an iterative sparse solver, and supporting sparse BLAS (level 1, 2, and 3) routines for solving sparse systems of equations, as well as a distributed version of oneMKL PARDISO solver provided for use on clusters.
- Fast Fourier transform (FFT) functions in one, two, or three dimensions with support for mixed radices (not limited to sizes that are powers of 2), as well as distributed versions of these functions provided for use on clusters.
- Vector Mathematics (VM) routines for optimized mathematical operations on vectors.
- Vector Statistics (VS) routines, which offer high-performance vectorized random number generators (RNG) for several probability distributions, convolution and correlation routines, and summary statistics functions.
- Data Fitting Library, which provides capabilities for spline-based approximation of functions, derivatives and integrals of functions, and search.
- Extended Eigensolver, a shared memory programming (SMP) version of an eigensolver based on the Feast Eigenvalue Solver.
For detailed function descriptions, including calling syntax, see:
- Intel® oneAPI Math Kernel Library Developer Reference - C
- Intel® oneAPI Math Kernel Library Developer Reference - Fortran
Intel® oneAPI Math Kernel Library (oneMKL) is optimized for performance on Intel processors. oneMKL also runs on non-Intel x86-compatible processors.
For Windows* and Linux* systems based on Intel® 64 Architecture, oneMKL also includes support for the Intel® Many Integrated Core Architecture (Intel® MIC Architecture) and provides libraries to help you port your applications to Intel MIC Architecture.
This document explains different aspects of Intel® oneAPI Math Kernel Library (oneMKL) usage and helps you perform multiple tasks related to programming with Intel® oneAPI Math Kernel Library (oneMKL), in particular:
Benchmark your cluster with Intel® Distribution for LINPACK* Benchmark or Intel® Optimized High Performance Conjugate Gradient Benchmark.
- Obtain numerically reproducible results.
oneMKL provides limited input validation to minimize the performance overheads. It is your responsibility when using oneMKL 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 oneMKL 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 oneMKL routines do limited checking of parameter errors, your application should check for NULL pointers, for example.
Product and Performance Information
Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.
Notice revision #20201201