4 merge requests!368Update prace.md to document the change from qprace to qprod as the default...,!367Update prace.md to document the change from qprace to qprod as the default...,!366Update prace.md to document the change from qprace to qprod as the default...,!323extended-acls-storage-section
@@ -13,22 +13,22 @@ Intel Math Kernel Library (Intel MKL) is a library of math kernel subroutines, e
...
@@ -13,22 +13,22 @@ Intel Math Kernel Library (Intel MKL) is a library of math kernel subroutines, e
* Data Fitting Library, which provides capabilities for spline-based approximation of functions, derivatives and integrals of functions, and search.
* Data Fitting Library, which provides capabilities for spline-based approximation of functions, derivatives and integrals of functions, and search.
* Extended Eigensolver, a shared memory version of an eigensolver based on the Feast Eigenvalue Solver.
* Extended Eigensolver, a shared memory version of an eigensolver based on the Feast Eigenvalue Solver.
For details see the [Intel MKL Reference Manual][a].
For details, see the [Intel MKL Reference Manual][a].
Intel MKL is available on the cluster
Intel MKL is available on the cluster.
```console
```console
$ml av imkl
$ml av imkl
$ml imkl
$ml imkl
```
```
The module sets up environment variables, required for linking and running mkl enabled applications. The most important variables are the $MKLROOT, $CPATH, $LD_LIBRARY_PATH and $MKL_EXAMPLES
The module sets up environment variables, required for linking and running MKL-enabled applications. The most important variables are the $MKLROOT, $CPATH, $LD_LIBRARY_PATH, and $MKL_EXAMPLES
Intel MKL library may be linked using any compiler. With intel compiler use -mkl option to link default threaded MKL.
The Intel MKL library may be linked using any compiler. With the Intel compiler, use the -mkl option to link default threaded MKL.
### Interfaces
### Interfaces
Intel MKL library provides number of interfaces. The fundamental once are the LP64 and ILP64. The Intel MKL ILP64 libraries use the 64-bit integer type (necessary for indexing large arrays, with more than 231^-1 elements), whereas the LP64 libraries index arrays with the 32-bit integer type.
The Intel MKL library provides a number of interfaces. The fundamental once are the LP64 and ILP64. The Intel MKL ILP64 libraries use the 64-bit integer type (necessary for indexing large arrays, with more than 231^-1 elements), whereas the LP64 libraries index arrays with the 32-bit integer type.
@@ -37,9 +37,9 @@ Intel MKL library provides number of interfaces. The fundamental once are the LP
...
@@ -37,9 +37,9 @@ Intel MKL library provides number of interfaces. The fundamental once are the LP
### Linking
### Linking
Linking Intel MKL libraries may be complex. Intel [mkl link line advisor][b] helps. See also [examples][1] below.
Linking the Intel MKL libraries may be complex. Intel [mkl link line advisor][b] helps. See also [examples][1] below.
You will need the mkl module loaded to run the mkl enabled executable. This may be avoided, by compiling library search paths into the executable. Include rpath on the compile line:
You will need the mkl module loaded to run the MKL-enabled executable. This may be avoided, by compiling library search paths into the executable. Include rpath on the compile line:
Advantage in using Intel MKL library is that it brings threaded parallelization to applications that are otherwise not parallel.
Advantage in using the Intel MKL library is that it brings threaded parallelization to applications that are otherwise not parallel.
For this to work, the application must link the threaded MKL library (default). Number and behaviour of MKL threads may be controlled via the OpenMP environment variables, such as OMP_NUM_THREADS and KMP_AFFINITY. MKL_NUM_THREADS takes precedence over OMP_NUM_THREADS
For this to work, the application must link the threaded MKL library (default). Number and behavior of MKL threads may be controlled via the OpenMP environment variables, such as OMP_NUM_THREADS and KMP_AFFINITY. MKL_NUM_THREADS takes precedence over OMP_NUM_THREADS.
```console
```console
$export OMP_NUM_THREADS=24 # 16 for Anselm
$export OMP_NUM_THREADS=24 # 16 for Anselm
...
@@ -60,7 +60,7 @@ The application will run with 24 threads with affinity optimized for fine grain
...
@@ -60,7 +60,7 @@ The application will run with 24 threads with affinity optimized for fine grain
## Examples
## Examples
Number of examples, demonstrating use of the Intel MKL library and its linking is available on clusters, in the $MKL_EXAMPLES directory. In the examples below, we demonstrate linking Intel MKL to Intel and GNUcompiled program for multi-threaded matrix multiplication.
A number of examples demonstrating use of the Intel MKL library and its linking is available on clusters, in the $MKL_EXAMPLES directory. In the examples below, we demonstrate linking Intel MKL to Intel- and GNU-compiled program for multi-threaded matrix multiplication.
### Working With Examples
### Working With Examples
...
@@ -72,7 +72,7 @@ $ cd /tmp/cblas
...
@@ -72,7 +72,7 @@ $ cd /tmp/cblas
$make sointel64 function=cblas_dgemm
$make sointel64 function=cblas_dgemm
```
```
In this example, we compile, link and run the cblas_dgemm example, demonstrating use of MKL example suite installed on clusters.
In this example, we compile, link, and run the cblas_dgemm example, demonstrating use of the MKL example suite installed on clusters.
In this example, we compile, link and run the cblas_dgemm example, demonstrating use of MKL with icc -mkl option. Using the -mkl option is equivalent to:
In this example, we compile, link, and run the cblas_dgemm example, demonstrating use of MKL with the icc -mkl option. Using the -mkl option is equivalent to:
In this example, we compile, link and run the cblas_dgemm example, using LP64 interface to threaded MKL and gnu OMP threads implementation.
In this example, we compile, link, and run the cblas_dgemm example, using the LP64 interface to threaded MKL and GNU OMP threads implementation.
## MKL and MIC Accelerators
## MKL and MIC Accelerators
The Intel MKL is capable to automatically offload the computations o the MIC accelerator. See section[Intel Xeon Phi][2]for details.
The Intel MKL can automatically offload the computations to the MIC accelerator. For details, see the[Intel Xeon Phi][2]section.
## LAPACKE C Interface
## LAPACKE C Interface
MKL includes LAPACKE C Interface to LAPACK. For some reason, although Intel is the author of LAPACKE, the LAPACKE header files are not present in MKL. For this reason, we have prepared LAPACKE module, which includes Intel's LAPACKE headers from official LAPACK, which you can use to compile code using LAPACKE interface against MKL.
MKL includes LAPACKE C Interface to LAPACK. However, note that although Intel is the author of LAPACKE, the LAPACKE header files are not present in MKL. For this reason, we have prepared the LAPACKE module, which includes Intel's LAPACKE headers from official LAPACK, which you can use to compile code using the LAPACKE interface against MKL.
## Further Reading
## Further Reading
Read more on [Intel website][c], in particular the [MKL users guide][d].
Read more on [Intel website][c], in particular the [MKL user guide][d].