- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I would appreciate any help I can get with the following:
I would like to be able to perform 2D fft on allocatable arrays, but the problem is that I need to have them as 1-D arrays for the Intel Math Kernel FFT library. The solution given in the manual is to use the equivalence statement but that doesn't work for dynamic arrays. I can think of 2 very clunky solutions:
1) Convert matrices to 1-D before DFT and then back to 2D (but I guess this has considerable overhead?)
2) Index all arrays as 1-D. (likely to lead to a lot of bugs)
I would appreciate any more elegant and efficient solution that I can get!
I am using ifort 11.1 on an iMac with an intel Core i7 processor and running Snow Leopard version 10.6.5. I am embarrased to say that I am not sure how to figure out what version of the math kernel I have but I installed the latest version around a month ago.
Thanks
John
I would appreciate any help I can get with the following:
I would like to be able to perform 2D fft on allocatable arrays, but the problem is that I need to have them as 1-D arrays for the Intel Math Kernel FFT library. The solution given in the manual is to use the equivalence statement but that doesn't work for dynamic arrays. I can think of 2 very clunky solutions:
1) Convert matrices to 1-D before DFT and then back to 2D (but I guess this has considerable overhead?)
2) Index all arrays as 1-D. (likely to lead to a lot of bugs)
I would appreciate any more elegant and efficient solution that I can get!
I am using ifort 11.1 on an iMac with an intel Core i7 processor and running Snow Leopard version 10.6.5. I am embarrased to say that I am not sure how to figure out what version of the math kernel I have but I installed the latest version around a month ago.
Thanks
John
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi John,
This issue can be worked around as follows:
This technique assumes that compiler will simply pass pointers to the i/o arrays to the compute funcion. This may not work with array sections, like input(1:100:2,1).
MKL version can be printed with this example (see also examples/servicefuncsf in your MKL installation)
Thanks
Dima
This issue can be worked around as follows:
[fortran]real input(:,:) complex output(:,:) allocate(input(M,N), output(M/2+1,N)) ... s = DftiComputeForward(desc, input(:,1), output(:,1)) [/fortran]
This technique assumes that compiler will simply pass pointers to the i/o arrays to the compute funcion. This may not work with array sections, like input(1:100:2,1).
MKL version can be printed with this example (see also examples/servicefuncsf in your MKL installation)
[fortran]program mklversion character*(200) :: MKLGetVersionString external MKLGetVersionString print *, trim(MKLGetVersionString()) end program mklversion [/fortran]
Thanks
Dima
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Here are two more ways that you can find out the version of Intel MKL you're using:
- If you know the compiler version and update number then you can use the table in our knowledgebase with corresponding library versions. There are now two tables actually: one for the compiler pro line (which it sounds you're currently using) and one for the new Intel Composer XE 2011 products.
- In the doc directory open the mklsupport* file.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry for the delay reporting back. It took me a while to get back to this project.
Thank you very much Dmitry and Todd. Your solutions worked perfectly for me.
Cheers
John
Thank you very much Dmitry and Todd. Your solutions worked perfectly for me.
Cheers
John
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page