Fortran How Do You Implement MKL's FFT Functions for Multidimensional Data in Fortran?

AI Thread Summary
The discussion revolves around the use of Intel's MKL FFT functions, focusing on understanding the dimensionality of transformations, memory management, and execution modes. The user is working with 4x4 matrices and is uncertain whether to classify the transformation as 2D or 3D, given the context of having a list of matrices. There is confusion regarding the "equivalence" command in Fortran for higher dimensions, specifically how to create a single 1D array from multiple matrices for processing and how the output will be structured. Additionally, the user seeks clarification on the distinction between "in-place" and "out-of-place" FFT routines, questioning whether the latter can still operate in series and if "in-place" serves primarily as an optimization for single-threaded execution. The user is ultimately trying to compute coefficients from a series of 4x4 matrices derived from evenly spaced samples for a backward transform.
avikarto
Messages
56
Reaction score
9
This is my first time attempting to use the MKL's FFT functions, and I'm having trouble understanding them. The available examples (https://software.intel.com/en-us/node/522290) provide little insight into the reasons for doing things, and looking into the commands themselves doesn't provide much more information. Any help with the following questions would be appreciated:

1) What is the "dimension" of a transformation? Since my coefficients are 4x4 matrices, is it 2D? Or do we consider that we have a list of matrix coefficients, making the transformation 3D?

2) The fortran examples indicate the necessary use of the "equivalence" command at higher dimensions than 1, which looks like a memory manipulation command needed to put all array elements in line in memory. I am confused how to implement this for a list of matrices. Is the idea to form one giant 1D array of length (4 x 4 x NumberOfMatrices) and pass that to the transform? If so, how does the routine know when to break up the array into individual matrix coefficients for the output?

3) Another concern about memory is in regards to the "in-place" vs "out-of'place" variations of the routine. From what I understand, "out-of-place" is necessary for running code in parallel, but will the routine still run in series if defined this way? Is "in-place" then simply an optimization for series execution?

Thanks.
 
Technology news on Phys.org
What are you trying to do?

Do you have a 1-D array of equally spaced sampled data that you want the FFT of? This is the form that most time series data will take.

Or is it s 2-D array? This is the form that most images will take.
 
I am trying to solve for the coefficients of something that looks like:

4x4 matrix = SUM ( 4x4 coefficients * exp(-i*stuff) )

I have taken evenly spaced samplings of the LHS to feed as input into the backward transform, so I have a 1-D list of 2-D matrices.
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I had a Microsoft Technical interview this past Friday, the question I was asked was this : How do you find the middle value for a dataset that is too big to fit in RAM? I was not able to figure this out during the interview, but I have been look in this all weekend and I read something online that said it can be done at O(N) using something called the counting sort histogram algorithm ( I did not learn that in my advanced data structures and algorithms class). I have watched some youtube...
Back
Top