Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28568 ディスカッション

Problems Linking in em64t versions of IMKL 10.0.1.014

emarti
ビギナー
677件の閲覧回数

Hello everyone,

Today I realized, I really need help! I'm crunching numbers in fortran for more than 30 years (Intel versions for linux more than 8), and this is the first time I have to write to a forum, asking for help!

I work with Beam Propagation Method a pseudospectral code for describing light propagation, even in the nonlinear case. So, the main tool here is the FFT.

I already have working a PC 32 bits under OPENSUSE LINUX 10.3, with Intel fortran Compiler 10.1.008 + MKL 10.0.1.014. I did not have any troubles moving from the old versions of Intel FFT to the "news" dft. My programs work perfectly and even faster.

Now, my probs are in a PC with an Intel Core 2 Quad processor, this machine is under Open Suse 10.3 x86-64. But I am not able to link the FFT.
1- I'm using the em64t versions of IMKL. Is this right for the processsor I have?
2- During the compiling-linking process, the file mkl_dfti.f90
is included in the line. Because computer can't see this file, even writing the -I.
3- No matter what I try to use static or dynamic support, the errors are:

/tmp/ifortLejgl9.o: In function `MAIN__':
miodft.f90:(.text+0x238): undefined reference to `dfti_create_descriptor_1d'
miodft.f90:(.text+0x253): undefined reference to `dfti_error_class_external'
miodft.f90:(.text+0x274): undefined reference to `dfti_commit_descriptor_external'
miodft.f90:(.text+0x2a0): undefined reference to `dfti_compute_forward_z'
miodft.f90:(.text+0x2b8): undefined reference to `dfti_compute_backward_z'
miodft.f90:(.text+0x2cb): undefined reference to `dfti_free_descriptor_external'

My compiling script is:

ifort -o exec $1 $2 -L/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_em64t.a -I/opt/intel/mkl/10.0.1.014/include/ -lguide -lpthread -lm

That is!

In all this bussines, what is wrong?

In advance a lot of thanks!!!

Erwin
Puebla, Mexico
 

0 件の賞賛
1 返信
TimP
名誉コントリビューター III
677件の閲覧回数
1. em64t libraries are right, if you are using 64-bit compilers (ifort fce version).
3. As you are using a recent version of ifort, it may be better to use -openmp in place of -lguide -lpthread. You would ask for those libraries specifically, if using an outdated ifort or a non-Intel Fortran. -lm is meaningless when a Fortran compiler is used to link.
If you want to use the -L to specify a library path, that must refer only to the directory (path ending with /em64t/). The script containing the 3 specific static libraries should work then with -lmkl_em64t However, you are selecting the dynamic libguide and libpthread.
If you don't specify a valid -L path, libguide will come from the ifort library, which is good, but the MKL libraries won't be found.
Static linking, according to the documented ways, may depend on the bug fix which is reported to be in ifort 10.1.012.
返信