mkl fft

mkl fft

I would like to know what the max fft N size is for the dft and fft of the MKL and IPP libraries.

13 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hi,

Thanks for posting. For Intel MKL there is no set limit on size of transform, N. You are of course limited practically by the amount of memory you have.

I'm not as familiar with IntelIPP so I will need to check on this.

-Todd

The same is true for IPP. Memory is the only thing limiting the size of transform performed on either MKL or IPP. -Todd

Thanks for the reply!
So is it limited by the range of the int data type used for the size of the FFT and the amount of memory?

Yes. You're right of course abouth the in data type being a limiting factor as well. -Todd

I'm writing a FFT Plan pool for DFT, after allocating 16 or 17 plans, regardless of size, the runtime fails to create another plan, and returns the error message, DFTI_MEMORY_ERROR, Is there anything I can do to bypass this limitation?

Thanks in advance
Nathan

Interesting. I hadn't seen this behavior before. Have you submitted an issue at IntelPremier support?

Is anyone else having trouble with this?

I'll ask around.

I haven't done anything yet, I thought it was a "feature",

I'm running on Redhat 2.1, icc 7(latest?)

The memory management software limits the number of memory allocations. You can turn it off (see http://www.intel.com/software/products/mkl/docs/mklusel.htm#Memory%20Management), but this may decrease performance since you will be allocating memory with each function call.

Todd

Todd,

Thanks for the reply,

MKL_DISABLE_FAST_MM worked.

I still use my fall-back fft library for small fft's <256 bytes, to bypass the mallocing overhead problem.

I would think the memory manager would have a fall back mode, (dynamicly allocate more memory) if it ran out of "pre-allocated" resources!!
That way the end use would have the best of both worlds.

The DFTI_MEMORY_ERROR doesn't seem to occur consistently on my application.

I am performing a lot of large 2D fft's. They have different sizes so I call DftiCreateDescriptor and DftiCommitDescriptor a lot.

One the same idle machine, in once case I got the DFTI_MEMORY_ERROR error on a 2D complexfft of size about 6400 x 2500 and then later I got it again with a size of 3900 x 2000. My machine has 2 gigabytes of memory a 4 gigabytes of virtual.

These sizes are not very large. The first one uses only 128 megabytes and the second one only 62 megabytes.

I'm concerned that the mkl fft isn't reliable enough. Can you give me more indication of what causes it and how to predict when I'm in danger?

My decriptors are pretty simple:
Code:

      DftiCreateDescriptor( &desc, DFTI_SINGLE, DFTI_COMPLEX, 2, dimen);

DFTI_MEMORY_ERROR is declared in mkl_blas.h, but it's not defined in mkl_c_dll.lib . I couldn't find it in a lib. What lib is it defined in?

This is MKL 8.0.

Message Edited by C-Stork on 10-23-2005 05:54 PM

DFTI_MEMORY_ERROR is a constant declared in the header files (although I find it in mkl_dfti.h). Since it is not a function you won't find it in the libraries. This constant is described in the section of the manual on the DftiErrorClass function.

-Todd

Leave a Comment

Please sign in to add a comment. Not a member? Join today