Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

link to parallel FFT

konglphysics_rutgers
726 Views

Hi,

I am linking to MKL cluster FFT from abinit. I tried the following,

with_fc_ldflags="-I/opt/intel/mkl/10.0.2.018/include -L/opt/intel/mkl/10.0.2.018/lib/em64t -lmkl_cdft -lmkl_cdft_core -lmkl_core -lmkl_blacs_intelmpi_ilp64 -lmkl_intel_ilp64 -lmkl_em64t -lmkl_intel_thread -lguide -lpthread"

but I got errors " undefined reference to `DftiGetValueDM_fortran"

Any suggestions how to fix it?

Thanks a lot!

0 Kudos
3 Replies
Gennady_F_Intel
Moderator
726 Views
Please try to use the following linking line:
${MKLPATH}=/opt/intel/mkl/10.0.2.018/lib/em64t
-L ${MKLROOT}/em64t -Wl,--start-group ${MKLROOT}/em64t/libmkl_cdft_core.a ${MKLROOT}/em64t/libmkl_intel_lp64.a ${MKLROOT}/em64t/libmkl_intel_thread.a ${MKLROOT}/em64t/libmkl_core.a -Wl,--end-group ${MKLROOT}/em64t/libguide.a ${MKLROOT}/em64t/libmkl_blacs_intelmpi20_ilp64.a -lpthread
--Gennady

0 Kudos
konglphysics_rutgers
726 Views
Hi Gennady,

Thank you for replying. I tried the static linking you suggested, but the problem remain same. Any other suggestions?
Appreciate your help!!

Best wishes,
Lingzhu

Please try to use the following linking line:
${MKLPATH}=/opt/intel/mkl/10.0.2.018/lib/em64t
-L ${MKLROOT}/em64t -Wl,--start-group ${MKLROOT}/em64t/libmkl_cdft_core.a ${MKLROOT}/em64t/libmkl_intel_lp64.a ${MKLROOT}/em64t/libmkl_intel_thread.a ${MKLROOT}/em64t/libmkl_core.a -Wl,--end-group ${MKLROOT}/em64t/libguide.a ${MKLROOT}/em64t/libmkl_blacs_intelmpi20_ilp64.a -lpthread
--Gennady

0 Kudos
Vladimir_Petrov__Int
New Contributor III
726 Views
Hi Gennady,

Thank you for replying. I tried the static linking you suggested, but the problem remain same. Any other suggestions?
Appreciate your help!!

Best wishes,
Lingzhu

Please try to use the following linking line:
${MKLPATH}=/opt/intel/mkl/10.0.2.018/lib/em64t
-L ${MKLROOT}/em64t -Wl,--start-group ${MKLROOT}/em64t/libmkl_cdft_core.a ${MKLROOT}/em64t/libmkl_intel_lp64.a ${MKLROOT}/em64t/libmkl_intel_thread.a ${MKLROOT}/em64t/libmkl_core.a -Wl,--end-group ${MKLROOT}/em64t/libguide.a ${MKLROOT}/em64t/libmkl_blacs_intelmpi20_ilp64.a -lpthread
--Gennady

The problem is caused by the Cluster FFT interface symbols being defined only in the static interface libraries (e.g. libmkl_intel_ilp64.a) and the default is to link with dynamic libraries. You can explicitly specify the name of the static library like this:

-I/opt/intel/mkl/10.0.2.018/include -L/opt/intel/mkl/10.0.2.018/lib/em64t -lmkl_cdft_core -lmkl_core -lmkl_blacs_intelmpi_ilp64 -l/opt/intel/mkl/10.0.2.018/lib/em64t/libmkl_intel_ilp64.a -lmkl_intel_thread -lguide -lpthread

However this is not the recomended way. Gennady's suggestion should actually help. Could you provide more details on the errors you get?

Best regards,

-Vladimir

0 Kudos
Reply