Intel Math Kernel Library (MKL) consists of high-performance, multithreaded mathematics libraries for linear algebra, fast Fourier transforms, vector math, and more.
Availability and Restrictions
Versions
OSC supports single-process use of MKL for LAPACK and BLAS levels one through three. For multi-process applications, we also support the ScaLAPACK, FFTW2, and FFTW3 MKL wrappers. MKL modules are available for the Intel, GNU, and PGI compilers. MKL is available on Pitzer, Ruby, and Owens Clusters. The versions currently available at OSC are:
Version | Owens | Pitzer | Cardinal | Notes |
---|---|---|---|---|
11.3.2 | X | |||
11.3.3 | X | |||
2017.0.2 | X | |||
2017.0.4 | X | |||
2017.0.7 | X | |||
2018.0.3 | X | X | ||
2019.0.3 | X | X | ||
2019.0.5 | X* | X* | ||
2021.3.0 | X | X | ||
2023.2.0 | X | |||
2024.1.0 | X* |
You can use module spider mkl
to view available modules for a given machine. On cardinal, these modules are availabe as intel-oneapi-mkl/version.
Feel free to contact OSC Help if you need other versions for your work.OSC users.
Access
MKL is available to all OSC users.
Publisher/Vendor/Repository and License Type
Intel, Commercial
Usage
Usage on Owens
Set-up
To load the default MKL, run the following command: module load mkl
. To load a particular version, use module load mkl/version
. For example, use module load mkl/11.3.3
to load MKL version 11.3.3. You can use module spider mkl
to view available modules.
This step is required for both building and running MKL applications. Note that loading an mkl module defines several environment variables that can be useful for compiling and linking to MKL, e.g., MKL_CFLAGS and MKL_LIBS.
Usage on Pitzer
Set-up
To load the default MKL, run the following command: module load mkl
.
This step is required for both building and running MKL applications. Note that loading an mkl module defines several environment variables that can be useful for compiling and linking to MKL, e.g., MKL_CFLAGS and MKL_LIBS.
Dynamic Linking Variables
These variables indicate how to link to MKL. While their contents are used during compiling and linking, the variables themselves are usually specified during the configuration stage of software installation. The form of specification is dependent on the application software. For example, some softwares employing cmake for configuration might use this form:
cmake .. -DMKL_INCLUDE_DIR="$MKLROOT/include" -DMKL_LIBRARIES="MKL_LIBS_SEQ"
Here is an exmple for some software employing autoconf:
./configure --prefix=$HOME/local/pkg/version CPPFLAGS="$MKL_CFLAGS" LIBS="$MKL_LIBS" LDFLAGS="$MKL_LIBS"
Variable | Comment |
---|---|
MKL_LIBS | Link with parallel threading layer of MKL |
GNU_MKL_LIBS | Dedicated for GNU compiler in Intel programming environment |
MKL_LIBS_SEQ | Link with sequential threading layer of MKL |
MKL_SCALAPACK_LIBS | Link with BLACS and ScaLAPACK of MKL |
MKL_CLUSTER_LIBS | Link with BLACS, CDFT and ScaLAPACK of MKL |