Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

Internal error in DftiCommitDescriptor

barry0727
Beginner
483 Views
I have been trying to use MKL to perform fast, large FFTs on a 64 bit Windows system, but I seem to have run into an upper limit on array size. I have been able to perform 128 Msample FFTs with no problem, but 512 Msample give me an error code 7 during the DftiCommitDesciptor call. I am compiling under VC++ 2008, with MKL_ILP64 defined in my stdafx.h header. The specific sequence of steps I am using is:

DftiCreateDescriptor(&h, DFTI_SINGLE, DFTI_REAL, 1, N); // N = 512*1024L*1024L
DftiSetValue(h, DFTI_PACKED_FORMAT, DFTI_PERM_FORMAT);
DftiCommitDescriptor(h);

The create and set value calls return OK.

The test machine has 12G or RAM. As a test, I tried allocating very large byte arrays, and I was able to allocate 16G of contiguous memory with no problems.

Am I running into a limit of MKL/DFTI? Or is there a work-around?
0 Kudos
3 Replies
Evgueni_P_Intel
Employee
483 Views

Hello barry0727,

Currently, MKL can't do real-to-complex single-precision transforms of lengths >= 256Mbecause of an internal limitation.
In MKL 10.2 Update 1 and earlier versions, DftiCommitDescriptorsignals this fact by an incorrecterror code.
Error handling in DftiCommitDescriptorwill be fixed in the future MKL release.

0 Kudos
barry0727
Beginner
483 Views
Quoting - espetrov

Hello barry0727,

Currently, MKL can't do real-to-complex single-precision transforms of lengths >= 256Mbecause of an internal limitation.
In MKL 10.2 Update 1 and earlier versions, DftiCommitDescriptorsignals this fact by an incorrecterror code.
Error handling in DftiCommitDescriptorwill be fixed in the future MKL release.

Can MKL handle larger complex to complex DFTs?
0 Kudos
Evgueni_P_Intel
Employee
483 Views

Transforms ofsizes >= 2G are a known limitationin MKL 10.2 http://software.intel.com/en-us/articles/known-limitations-in-intel-mkl-10-2/

De facto MKL 10.2 handles 1D complex-to-complex transforms if their length is a product of factors < 64M butisn'ta power of 2 (single precision) or is a product of factors < 32M (double precision.)
Other transforms of sizes >= 2G are not supported currently.
0 Kudos
Reply