Hi, I got bitten by an issue regarding the link order. I use fftw3 for a series of transforms of a type not supported by the MKL fftw wrapper (r2r transforms). I have FFTW3 either built, or use a prebuilt version. The issue comes up if mkl precedes fftw3 on the link line. If it does, then rather than using fftw functions, mkl functions are used instead (and these always fail).
See r2r transforms here: https://software.intel.com/en-us/mkl-developer-reference-c-using-fftw3-wrapp...
Since MKL does not support the functions I need, is there a way to force -mkl to always occur only after -lfftw3 on the link line?
Hello Yosef,
I got bitten by an issue regarding the link order. I use fftw3 for a series of transforms of a type not supported by the MKL fftw wrapper (r2r transforms). I have FFTW3 either built, or use a prebuilt version. The issue comes up if mkl precedes fftw3 on the link line. If it does, then rather than using fftw functions, mkl functions are used instead (and these always fail).
See r2r transforms here: https://software.intel.com/en-us/mkl-developer-reference-c-using-fftw3-wrapp...
Since MKL does not support the functions I need, is there a way to force -mkl to always occur only after -lfftw3 on the link line?
You could try making the thorn that adds -mkl REQUIRE FFTW3 which enforces a link order and (hopefully) fixes the issue.
Or, and this may be better, put a LIBS line in to your option list that lists -mkl and fftw3 in the correct order (though of course -mkl is "special" and the compiler may not do what you think it should do).
Yours, Roland
users@lists.einsteintoolkit.org