Wrong interface in FFT

Wrong interface in FFT

Svein-Atle's picture

Hi,
I have been using the MKL FFT's for a while and am wondering if something changed with version IVF 11.1.038.
I call DftiComputeForward from a subroutine where x_in is an INTENT(IN) array. This causes an error in the current release, but worked earlier. To get around it I made a local copy of the array.

Here is what the documentation says about DftiComputeForward:
status = DftiComputeForward( desc_handle, x_in, y_out )

So I think the behaviour is not in accordance with the documentation.
I have specified DFTI_NOT_INPLACE.

Sincerely,
Svein-Atle

6 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
Dmitry Baksheev (Intel)'s picture

Hi Svein-Atle,

Thank you for communicating the issue. Whenyou say 'something has changed' waht previous version of the product do you refer to? Areason of the misbehaviour you observed may be associated withthe type of the parameterspassed to DftiComputeForward - misinterpretation of the parametersd by the compute functionhas been fixed with MKL 10.1 back in 2008. Ifyou provided a little bit more information, the problem couldbefigured out so as to avoid thelocal copy.

Regards,
Dima

Svein-Atle's picture
Quoting - Dmitry Baksheev (Intel)
Hi Svein-Atle,

Thank you for communicating the issue. Whenyou say 'something has changed' waht previous version of the product do you refer to? Areason of the misbehaviour you observed may be associated withthe type of the parameterspassed to DftiComputeForward - misinterpretation of the parametersd by the compute functionhas been fixed with MKL 10.1 back in 2008. Ifyou provided a little bit more information, the problem couldbefigured out so as to avoid thelocal copy.

Regards,
Dima

Hi Dima,
I am uncertain about which previous version, but it is about half a year since I last worked on the FFT-program.
I have kept the compiler, IVF with MKL, up to date during the last couple of years.
I have not misinterpreted the parameters, the program is unchanged.
Anyhow, the documentation indicates that the argument is INTENT(IN) and the routine does in fact not change x_in.
As I see it, the module containing the interfaces is incomplete.

Sincerely,
Svein-Atle

Dmitry Baksheev (Intel)'s picture

Hi Svein-Atle,

I'd appreciate if you posted a small example demonstrating how do you use MKL. I believe there is misunderstanding of the documentation.

Thanks
Dima

Svein-Atle's picture
Quoting - Dmitry Baksheev (Intel)
Hi Svein-Atle,

I'd appreciate if you posted a small example demonstrating how do you use MKL. I believe there is misunderstanding of the documentation.

Thanks
Dima

Hi Dima,

Enclosed is a program showing how I use the FFT-routines. Comment, uncomment lines 91, 95 an 131, 135.

Sincerely,
Svein-Atle

Attachments: 

AttachmentSize
Download TEST_FFT_MKL.zip1.7 KB
Dmitry Baksheev (Intel)'s picture

Hi Svein-Atle,

Thank you very much for your example. It showed the issue immediately.

This is really a problem in the Fortran interface of DFTI caused by introduction of split-complex transforms in MKL 10.1. Change in the specialization of DftiComputeForward/DftiComputeBackward made your codefail to compile.

It would be nice if you report the problem at Intel Premier Support, at your convenience.

As a workaround to avoid copy, you might consider skipping 'INTENT(IN)' in the declaration of input arrays that are passed down to DftiCompute* functions (lines 65, 113).

Thanks
Dima

Login to leave a comment.