Intel® Math Kernel Library

3D FFT in MKL with data larger than cache


I am working on a 3D numerical integrator for a non-linear PDE using the parallel FFT library included in MKL. 

My arrays consist of 2^30 data points which is much much larger than the cache. This results in ~50% of cache references being misses leading to a massive amount of execution time being purely accessing memory.

Is there a clever way I can deal with this? Is it expected to have 50% cache misses using an array this large?

Any help would be much appreciated.



MKL 3D FFT of 1D function (fortran)

Dear all,

I want to perform a 3D Fourier transformation (using fortran) of a complex function which is in a 10^9 array, where each element corresponds to a 3D vector k. So each element of the array is in fact a particle in Fourier space with k vector being its wavenumber.

 In a mathematical notation I want to do:

F(x)=3D integral(f(k vector)*exp(i*k*x))dx

F(x) is a real function and x is a real 3D vector

f(k) is a complex function of vector k

k*x is the dot product of the two 3D vectors

Why mkl 11.2.3 can not use all the cpu in Intel(R) Core(TM) i7-4700HQ CPU @ 2.40GHz


   I use mkl_dss to solve a problem. I already use mkl_set_num_threads(8) to set the maximum threads of my computer. But when I run the program, I use top command and just can see only 4 cpu are 100% running, the other 4 cpu just 1%. My cpu is Intel(R) Core(TM) i7-4700HQ CPU @ 2.40GHz, 4 cores and 8 threads.

However, I run the same program on the other machine Intel(R) Xeon(R) CPU  X5650  @ 2.67GHz, 6 cores 12 threads. I use mkl_set_num_threads(12) to set the maximum threads. The program can take full advantage of all 12 cpu.

about in-place VML operations

Hi all,

  I am writing to check if MKL VML library supports in-place operations like vzmul(100, x, y, x) or vzmul(100, x, y, y); I saw a post in this forum and there it said VML support in-place operations. But when I click on the link for the document, it doesn't mention anything on in-place operations or not. Thanks.

Same numbers differente signal

Dear MKL forum,

     I am rewriting some code using the MKL library from a fortran + open source math library, in the validation process i realize the function LAPACKE_dgesv giving the exact solution from the former code. But, in the eigenvectors some signals are changed, where is positive should be negative in several cases.

    The input matrix is exact the same, the fortran code:

         call dsyev ( jobz , uplo , m, dd , m, w, work , lm, info )

     The C code:

    LAPACKE_dgesv(LAPACK_COL MAJOR,jobz, uplo, m, temp, m,w);

Subscribe to Intel® Math Kernel Library