Intel® MKL and C++ template libraries


Some Intel® MKL users indicated that it would be valuable to have C++ API to invoke MKL functionality.

There are a few existing open source C++ template libraries that can be linked with Intel® MKL. This allows using highly abstracted C++ classes to perform matrix/vector operations, linear algebra factorizations etc. achieving about the same performance as MKL library provides.

Please refer to the documentation placed on the web-pages of the C++ libraries. Feel free to choose the package that mostly fits your needs and/or C++ style requirements.


C++ math library

Supported MKL functionality


Eigen

http://eigen.tuxfamily.org/dox-devel/TopicUsingIntelMKL.html


BLAS (level 2, 3)

LAPACK(LU, Cholesky, QR, SVD, Eigvalues, Shur)

VML

PARDISO



Armadillo

http://sourceforge.net/projects/arma/

 


BLAS (dot, gemv, gemm)

LAPACK (LU, Cholesky, QR, SVD, Eigvalues)


MTL4

http://www.mtl4.org/


BLAS (gemm)

LAPACK (LU)



BOOST uBLAS

http://www.boost.org/doc/libs/1_35_0/libs/numeric/ublas/doc/index.htm

together with BOOST numeric bindings

http://mathema.tician.de//software/boost-bindings

 



BLAS

LAPACK


Trilinos

http://trilinos.sandia.gov/

 


BLAS

LAPACK




Important note:

While the libraries above are known to be the products of high quality, Intel MKL cannot guarantee that all the calls to MKL functions are implemented 100% correctly there.  If you find an issue during incorporating the codes of those libraries into your program, please first report the issue to the owners of these libraries. However, if there is an issue caused by using Intel MKL, please report us by submitting an issue on Intel MKL forum or Intel Premier Support.



For more complete information about compiler optimizations, see our Optimization Notice.