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

Link errors when using MKL 8.0

panch
Beginner
1,190 Views
Hi,
Since upgrading from 7.2 to the new 8.0 I get numerous unresolved externals now:
mkl_ia32.lib(def_dsyrk_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_blas_def_dsyrk
mkl_ia32.lib(def_dtrsm_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_blas_def_dtrsm
mkl_ia32.lib(p4_dsyrk_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_blas_p4_dsyrk
mkl_ia32.lib(p4p_dsyrk_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_blas_p4p_dsyrk
mkl_ia32.lib(p3_dsyrk_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_blas_p3_dsyrk
mkl_ia32.lib(def_dgemm_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_blas_def_dgemm
mkl_ia32.lib(p4_dtrsm_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_blas_p4_dtrsm
mkl_ia32.lib(p4p_dtrsm_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_blas_p4p_dtrsm
mkl_ia32.lib(p3_dtrsm_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_blas_p3_dtrsm
mkl_lapack.lib(dpotrf_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_lapack_dpotrf
mkl_ia32.lib(p4_dgemm_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_blas_p4_dgemm
mkl_ia32.lib(p4p_dgemm_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_blas_p4p_dgemm
mkl_ia32.lib(p3_dgemm_omp.obj) : error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _mkl_blas_p3_dgemm
mkl_ia32.lib(def_dsyrk_omp.obj) : error LNK2001: unresolved external symbol _omp_get_max_threads
mkl_ia32.lib(def_dtrsm_omp.obj) : error LNK2001: unresolved external symbol _omp_get_max_threads
...and continues.
If I link with the old mkl72ia32lib libraries, I don't get any errors. Why is that?
I use Visual C++ 7.0.
Regards,

Carsten
0 Kudos
8 Replies
TimP
Honored Contributor III
1,190 Views
The kmp function library is contained in libguide, which comes with MKL.
0 Kudos
panch
Beginner
1,190 Views
Hi and thanks!
That helped, just wondering why it didn't complain when using Mkl 72 libs.
Regards,
Carsten
0 Kudos
Intel_C_Intel
Employee
1,190 Views

There was a change between MKL 7.2 and 8.0, but it was not an arbitrary decision. There were some problems that arose from linking in libguide as a default library. For one thing, a later version of the Intel compiler with an updated version of libguide would not get linked in.

Perhaps I missed it, but I did not see that we documented this change in our release notes. If that is the case, I personally extend an apology for missing that.

0 Kudos
prdorrell
Beginner
1,190 Views
Hi there,
I'm Paul Dorrell andI'd like to say thanks too!
Yesterday Idownloaded MKL to my Windows XP machine in order tolook at the speed ofsome large FFTs. I triedcompiling an example fromMKL/8.0/examples/dftc inside Visual Studio and got a load oflinking errors similar to thoseyou listed .... and, yes, they went away when I included the libguide.lib in my project.
So you've saved me alot of time ... and restored my faith in user forums!
Kind regardsPaul
0 Kudos
mouna_hammami
Beginner
1,190 Views
hi everybody, sorry because I have a poor english! well I spent a week trying to work with MKL but.. My problem is: how to link myprogram.c with this library.
I m using Fedora Core et I need the Lapack function zgesvd in my program.c.
please, any help will be welcome! just how to link?any example :(
0 Kudos
zsolt_szekeres
Beginner
1,190 Views
Hi everybody,

could you please help me with the linking options of MKL?
Here is what I use (just wanted to include everything :-)

ifort myprog.f90 -I/usr/mkl/include/ -L/usr/mkl/lib/32 -lmkl_lapack95 -lmkl_lapack -lmkl_lapack32 -lmkl_lapack64 -lmkl_blas95 -lmkl_ia32 -lmkl_p4 -lguide -lpthread

Versions: ifort 9.0.021 , mkl 8.0.019. Platform: Linux, IA-32.

Now what I see is that the command above works fine when I use the
old f77 interface calls to LAPACK routines, but when I try to use
f95 type calls, it fails to link and gives the following error:

/home/user/tmp/ifortWbnTbN.o: In function `MAIN__':
myfort.f90:(.text+0x54c): undefined reference to `getrf_'

Thanks for your comments in advance

Zsolt
0 Kudos
TimP
Honored Contributor III
1,190 Views
I suspect a problem with the order of your library search. Try moving -lmkl_blas95 ahead of the -lmkl_lapack95.

Minor nit picking:
ifort/icc/icpc option -openmp has the same effect on link as -lguide -lpthread. The latter pair of options is needed by other compilers.
ifort 9.0.028 is much improved over 9.0.021 (the original 9.0 version).
0 Kudos
zsolt_szekeres
Beginner
1,190 Views
Hi Tim,
thanks for your prompt answer. I tried placing blas95 before
lapack95, but unfortunately it did not help. Substituting
-lguide and -lpthread by -openmp did not help either.
Also I tried to download ifort 9.0.0.28 from the ftp server to see if it makes a difference, but unfortunately only the 9.0.0.21 version is available (at least on the public ftp server).
It would be great if it worked for me: I was really happy to
finally see a simple way of calling simple routines. If you have
any other ideas, please share them. Thanks
Zsolt
0 Kudos
Reply