Intel® Math Kernel Library

Announcing new open source project Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN)

Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN) is now available on the Github ( as an open source performance library for Deep Learning (DL) applications intended for acceleration of DL frameworks on Intel® architecture. Intel® MKL-DNN includes highly vectorized and threaded building blocks to implement convolutional neural networks (CNN) with C and C++ interfaces.

Intel® MKL 11.3.3 patch

There are two listed below limitations with Intel® Math Kernel Library (Intel® MKL) 11.3 Update 3 which were discovered recently. The official fix of these issues will be available the nearest update Intel MKL 11.3.4.

If you require an immediate Intel MKL update to address these issues, please submit a ticket at Intel Premier Support ( for the Intel MKL product.

Known Limitations: 

  • FreeBSD*
  • Linux*
  • Microsoft Windows* (XP, Vista, 7)
  • Microsoft Windows* 10
  • Microsoft Windows* 8.x
  • Unix*
  • Fortran
  • Advanced
  • Beginner
  • Intermediate
  • Intel® Math Kernel Library
  • Intel® Advanced Vector Extensions (Intel® AVX)
  • sgemm
  • Intel® AVX2
  • Problems about how to use multithreaded intel MKL


    I have some problems about multithreaded intel MKL

    1.    I use the function MKL_SET_NUM_THREADS(2) to change the thread number. Then I want to check the value of MKL_NUM_THREADS, by using function getnv (mklname, value), mklname = MKL_NUM_THREADS. The value is always 1.

    I wonder if the value of MKL_NUM_THREADS will be changed when the parallelization starts.

    If so, is there a way to check the value of MKL_NUM_THREADS? How do I know if the value of MKL_NUM_THREADS is really changed after I set it?


    MKL FFT: fftw_mpi_plan_many_transpose


    I have been trying to use the MKL FFT through the FFTW3 interface and now am stuck with plan creation. The following line of code produces a NULL value, which is subsequently caught and kills the program:

    plan_t_XY = fftw_mpi_plan_many_transpose(g.nxrtot, g.nyrtot, (g.nzrtot+2), g.nxrtot/g.nProc, g.nyrtot/g.nProc, wr1, wr1, MPI_COMM_WORLD, FFT_PLANNING);

    Each of the *tot variables is an integer power of 2, ditto with g.nproc. wr1 is a pointer to a float work array, and FFT_PLANNING is set to FFTW_MEASURE.

    Any ideas why 

    MKL library


    I have to install a code. it requiyes linking of lapack n blas file.
    the code was written in 2009 using mkl 8 version. according to it for linking paths are

    LROOT = /opt/intel/mkl/lib/intel64/
    LAPACK = -lmkl_lapack -lmkl
    BLAS = -L$(LROOT) -lmkl_intel64 -lguide -lpthread


    now i am having 2016 version of mkl. it does not have guide, mkl, pthread etc.
    i know
    -lmkl_lapack is replaced by lmkl_lapack95_ilp64

    how to modify the commands as per 2016 version to link n compile


    Segmentation faults with sparse FEAST


    I am using the interface dfeast_scsrev for computing eigenvalues and eigenvectors of a sparse matrix sorted using a CSR format (3-vector).

    It works fine with small sparse matrices with  a size of about ~10,000. However, I got a segmentation fault with a sparse matrix of size ~130,000 or bigger.

    Below is the error message I got:

    Subscribe to Intel® Math Kernel Library