I am trying to do a 3D FFT in MKL 11.3, but its not working for me... most likely I am doing something wrong, but I am at a loss.
I get an error when I attempt to call DftiCommitDescriptor. I tried two different cases and got two different errors. My code is shown below... Any help would be appreciated!
#include <mkl.h> #include <stdio.h> int main() { DFTI_DESCRIPTOR_HANDLE dh; float *data; MKL_LONG sz[3]; MKL_LONG dim = 3; int val; int error_code; sz[0] = 128; sz[1] = 128; sz[2] = 128; dim = 2; error_code = DftiCreateDescriptor(&dh, DFTI_SINGLE, DFTI_REAL, dim, sz); error_code = DftiCommitDescriptor(dh); printf("error_code: %d\n", error_code); dim = 3; error_code = DftiCreateDescriptor(&dh, DFTI_SINGLE, DFTI_REAL, dim, sz); error_code = DftiCommitDescriptor(dh); printf("error_code: %d\n", error_code); printf("%s\n", DftiErrorMessage(error_code)); dim = 3; error_code = DftiCreateDescriptor(&dh, DFTI_SINGLE, DFTI_REAL, dim, sz); error_code = DftiSetValue(dh, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX); error_code = DftiCommitDescriptor(dh); printf("error_code: %d\n", error_code); printf("%s\n", DftiErrorMessage(error_code)); }
Note that the first call works (dim is set to 2).
The second call fails (only difference is that dim is 3), indicating that the functionality is not implemented.
I read in the documentation that I should use DFTI_CONJUGATE_EVEN_STORAGE <- DFTI_COMPLEX_COMPLEX, so I tried this as well (third call), but it failed with the error "Inconsistent configuration parameters".
The output I get is as follows:
error_code: 0
error_code: 6
Intel MKL DFTI ERROR: Functionality is not implemented
error_code: 3
Intel MKL DFTI ERROR: Inconsistent configuration parameters