- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
One of our client reported an error on a specific size 1D FFT.
After some investigations we found out the issue was related to the size of the data.
We do 1D FFT, complex numbers in float (single precision), in place configuration (DFTI_INPLACE), and the we link mkl_sequential_dll.lib.
When the number of complex is 205'213'539, the DftiComputeForward() function returns an error code DFTI_INCONSISTENT_CONFIGURATION (3).
We did some tests to pinpoint the problem:
300M points, success
205'212'539, failure (this value is a multiple of 7, 7x29'316'077)
200'000'033 (prime number > 200M), success
100M, success
33'000'001 (prime number > 33M), success
2*33'000'001, success
34'000'009 (prime number > 34M), success
2*34'000'009, failure
3*50'000'017 (prime number > 50M), failure
It seems the FFT implementation has 2 paths, radix or non radix:
- the non radix path (when we use a prime number) can do the calculations on whatever size
- the radix path (when we use a multiple of prime number) seems to have a limit around radix * 33M
The errors have been reproduced with MKL 2022.1 and 2024.0.
Latest version didn't solve the issue unfortunately.
I understand the radix path can have limitations to the number of elements, but in this case, I would expect a fallback to the non radix path instead of failing.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The fix of the problem available into the latest MKL 2024 u1 which has been released this week and available to download.
here is the log I captured while linking the case against MKL 2024 u1 and while using Verbose mode :
Intel(R) oneAPI Math Kernel Library Version 2024.1-Product Build 20240215 for Intel(R) 64 architecture applications
Example basic_sp_complex_dft_1d
Forward and backward single-precision complex in-place 1D FFTs
Configuration parameters:
DFTI_PRECISION = DFTI_SINGLE
DFTI_FORWARD_DOMAIN = DFTI_COMPLEX
DFTI_DIMENSION = 1
DFTI_LENGTHS = {205213539}
Create DFTI descriptor
Commit DFTI descriptor
Allocate input array
Initialize input for forward transform
Compute forward transform
MKL_VERBOSE oneMKL 2024.0 Update 1 Product build 20240215 for Intel(R) 64 architecture Intel(R) Advanced Vector Extensions 512 (Intel(R) AVX-512) enabled processors, Lnx 2.40GHz sequential
MKL_VERBOSE FFT(scfi205213539,tLim:1,desc:0x55bf372031c0) 35.78s CNR:OFF Dyn:1 FastMM:1
...DftiComputeForward returns 0 Verify the result of forward FFT
Verify the result, errthr = 1.65e-05
Verified, maximum error was 4.52e-07
Initialize input for backward transform
Compute backward transform
MKL_VERBOSE FFT(scbi205213539,tLim:1,desc:0x55bf372031c0) 32.04s CNR:OFF Dyn:1 FastMM:1
Verify the result of backward FFT
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry I didn't specify it, but we are already linking against mkl_intel_ilp64_dll.lib.
To be specific we link against:
mkl_core_dll.lib
mkl_intel_ilp64_dll.lib
mkl_intel_thread_dll.lib
Regards
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Then please build the reproducer which will help us to check this case on our end.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I modified the basic_sp_complex_dft_1d.c sample to reproduce the problem.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We reproduced the behavior and will investigate the reason. The status would be updated here.
--Gennady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have to confirmed that this is the real issue. We are planning to fix it the nearest update which we are planning to release the next eom. I will keep you informed when it happen.
--Gennady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Great, thanks for the support !
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Juilian,
Could you give us all problem sizes where do you see the problem beyond of those you already shared?
We fixed the problem and need to check all cases where do you see the problem.
--Gennady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
sorry for the late answer, I was on vacation.
I identified the following dimensions which reproduce the issue:
int N = 1*34'000'009; // OK
//int N = 2*34'000'009; // FAILS
//int N = 3*34'000'009; // FAILS
//int N = 7*34'000'009; // FAILS
//int N = 11*34'000'009; // FAILS
//int N = 13*34'000'009; // FAILS
//int N = 17*34'000'009; // FAILS
//int N = 19*34'000'009; // FAILS
//int N = 23*34'000'009; // FAILS
//int N = 29*34'000'009; // FAILS
// i guess the issue is the following
//int N = {prime number}*34'000'009; // FAILS
Regards
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The fix of the problem available into the latest MKL 2024 u1 which has been released this week and available to download.
here is the log I captured while linking the case against MKL 2024 u1 and while using Verbose mode :
Intel(R) oneAPI Math Kernel Library Version 2024.1-Product Build 20240215 for Intel(R) 64 architecture applications
Example basic_sp_complex_dft_1d
Forward and backward single-precision complex in-place 1D FFTs
Configuration parameters:
DFTI_PRECISION = DFTI_SINGLE
DFTI_FORWARD_DOMAIN = DFTI_COMPLEX
DFTI_DIMENSION = 1
DFTI_LENGTHS = {205213539}
Create DFTI descriptor
Commit DFTI descriptor
Allocate input array
Initialize input for forward transform
Compute forward transform
MKL_VERBOSE oneMKL 2024.0 Update 1 Product build 20240215 for Intel(R) 64 architecture Intel(R) Advanced Vector Extensions 512 (Intel(R) AVX-512) enabled processors, Lnx 2.40GHz sequential
MKL_VERBOSE FFT(scfi205213539,tLim:1,desc:0x55bf372031c0) 35.78s CNR:OFF Dyn:1 FastMM:1
...DftiComputeForward returns 0 Verify the result of forward FFT
Verify the result, errthr = 1.65e-05
Verified, maximum error was 4.52e-07
Initialize input for backward transform
Compute backward transform
MKL_VERBOSE FFT(scbi205213539,tLim:1,desc:0x55bf372031c0) 32.04s CNR:OFF Dyn:1 FastMM:1
Verify the result of backward FFT
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I confirm the problem is fixed with the latest mkl version.
Thank you

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page