IPO Error: unresolved : __tls_get_addr unresolved : __tls_get_addr

IPO Error: unresolved : __tls_get_addr unresolved : __tls_get_addr

Hi,

I'm trying to use the Pardiso solver on an SGI Altix machine. The code compiles and produces an executable, but I'm getting the following error during the linking:

IPO Error: unresolved : __tls_get_addr
Referenced in libmkl_core.a(mkl_memory.o)

What library do I need to link to in order to resolve this dependency?

Thanks,

Dave

20 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

My first guess would be you didn't link libpthread. That would be taken care of by compiler options such as -openmp, but most of the examples show -lpthread as a requirement when you use mkl_thread. Showing you link command would avoid a lot of guesswork.

Quoting - tim18
My first guess would be you didn't link libpthread. That would be taken care of by compiler options such as -openmp, but most of the examples show -lpthread as a requirement when you use mkl_thread. Showing you link command would avoid a lot of guesswork.

This is my link line:

ifort -o nike3d.lnx *.o -L/usr/sci/LinuxIA64/intel/mkl/lib/64/ /usr/sci/LinuxIA64/intel/mkl/lib/64/libmkl_lapack.a /usr/sci/LinuxIA64/intel/mkl/lib/64/libiomp5.a -lpthread

Quoting - rawlinssci.utah.edu

This is my link line:

ifort -o nike3d.lnx *.o -L/usr/sci/LinuxIA64/intel/mkl/lib/64/ /usr/sci/LinuxIA64/intel/mkl/lib/64/libmkl_lapack.a /usr/sci/LinuxIA64/intel/mkl/lib/64/libiomp5.a -lpthread

Dave,I thinl the linker adviser ( follow the link: http://software.intel.com/en-us/forums/showthread.php?t=65510) will helps you to select the appropriate linking line.
--Gennady

Quoting - Gennady Fedorov (Intel)

Dave,I thinl the linker adviser ( follow the link: http://software.intel.com/en-us/forums/showthread.php?t=65510) will helps you to select the appropriate linking line.
--Gennady

I tried using the linker advisor and changed my link line to the following:

MKL_PATH = /usr/sci/LinuxIA64/intel/mkl/lib/64/
#MKL_LIB = -L$(MKL_PATH) -Wl,--start-group $(MKL_PATH)libmkl_intel_lp64.a $(MKL_PATH)libmkl_intel_thread.a
$(MKLPATH)libmkl_core.a -Wl,--end-group -openmp -lpthread

I'm now getting a host of errors such as:

IPO Error: unresolved : mkl_pds_lp64_get_proc_pardiso
Referenced in libmkl_core.a(pardiso_lp64.o)
IPO Error: unresolved : mkl_pds_lp64_diag_pardiso
Referenced in libmkl_core.a(pardiso_lp64.o)
Referenced in libmkl_core.a(check_input_fc_lp64.o)
IPO Error: unresolved : mkl_pds_lp64_c_diag_pardiso
Referenced in libmkl_core.a(pardiso_lp64.o)
Referenced in libmkl_core.a(check_input_fc_lp64.o)
IPO Error: unresolved : mkl_lapack_dlasr3
Referenced in libmkl_core.a(dsteqr.o)
IPO Error: unresolved : __tls_get_addr
Referenced in libmkl_core.a(mkl_memory.o)
IPO Error: unresolved : mkl_pds_lp64_c_pre_cgs_pardiso
Referenced in libmkl_core.a(do_all_fc_lp64.o)
IPO Error: unresolved : mkl_pds_lp64_c_amuxy_pardiso
Referenced in libmkl_core.a(do_all_fc_lp64.o)
...

Any suggestions?

Dave

Dave,

What MKL version you are using?
Can you get us the PackageID of this version?
Please open docmklsupport.txt file and you can find there Package ID.
--GIF

Quoting - Gennady Fedorov (Intel)
Dave,

What MKL version you are using?
Can you get us the PackageID of this version?
Please open docmklsupport.txt file and you can find there Package ID.
--GIF

Package ID: l_mkl_p_10.1.1.019

Quoting - rawlinssci.utah.edu

Package ID: l_mkl_p_10.1.1.019

Dave, we had similar problem with this version and it was fixed in the following update2.

I'd recommend you to upgrade the current version to the MKL 10.1 update 2.

Please see official announcement about this topic: Intel MKL 10.1 Update 2 is now availablePlease pay attention on: "Users with current licenses may login at the Intel Registration Center to download."
/GIF

Quoting - Gennady Fedorov (Intel)

Dave, we had similar problem with this version and it was fixed in the following update2.

I'd recommend you to upgrade the current version to the MKL 10.1 update 2.

Please see official announcement about this topic: Intel MKL 10.1 Update 2 is now availablePlease pay attention on: "Users with current licenses may login at the Intel Registration Center to download."
/GIF

I upgraded MKL. The current version is:
Package ID: l_mkl_p_10.1.2.024

I'm still getting the same error messages, though.

Dave

Quoting - rawlinssci.utah.edu

I upgraded MKL. The current version is:
Package ID: l_mkl_p_10.1.2.024

I'm still getting the same error messages, though.

Dave

Dave

I don't see -liomp5 or -lguide inthe linking line. One of these libraries must present in the linking line. Would you try this sequence of libraries

-L$(MKL_PATH) $(MKL_PATH)libmkl_intel_lp64.a -Wl,--start-group $(MKL_PATH)libmkl_intel_thread.a $(MKLPATH)libmkl_core.a -Wl,--end-group-L$(MKL_PATH) -liomp5 -lpthread -lm

All the best
Sergey

Quoting - Sergey Kuznetsov (Intel)

I don't see -liomp5 or -lguide inthe linking line. One of these libraries must present in the linking line. Would you try this sequence of libraries

-L$(MKL_PATH) $(MKL_PATH)libmkl_intel_lp64.a -Wl,--start-group $(MKL_PATH)libmkl_intel_thread.a $(MKLPATH)libmkl_core.a -Wl,--end-group-L$(MKL_PATH) -liomp5 -lpthread -lm

The quoted switch -openmp would have taken care of the OpenMP and the pthread libraries, if it were placed ahead of all the objects.

Quoting - rawlinssci.utah.edu

I upgraded MKL. The current version is:
Package ID: l_mkl_p_10.1.2.024

I'm still getting the same error messages, though.

Dave

Dave,

I forgot to mention that references like _tls_get_addr should be resolved with the help of libc library from gnu. If Intel compiler doesn't find alibc function, that means something is wrongwith environment variables, or gnu compiler is installed incorrectly. Could you try the commands
$/lib/libc.so.6.1

GNU C Library stable release version 2.3.3 (20040412), by Roland McGrath et al.

Copyright (C) 2004 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.

....
$which gnu
and
$gcc --version

All the best
Sergey

Quoting - Sergey Kuznetsov (Intel)

Dave,

I forgot to mention that references like _tls_get_addr should be resolved with the help of libc library from gnu. If Intel compiler doesn't find a libc function, that means something is wrong with environment variables, or gnu compiler is installed incorrectly. Could you try the commands
$/lib/libc.so.6.1

GNU C Library stable release version 2.3.3 (20040412), by Roland McGrath et al.

Copyright (C) 2004 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.

....
$which gnu
and
$gcc --version

All the best
Sergey

> /lib/libc.so.6.1
GNU C Library stable release version 2.3.5 (20050720), by Roland McGrath et al.
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Configured for ia64-suse-linux.
Compiled by GNU CC version 3.3.3 (SuSE Linux).
Compiled on a Linux 2.6.5 system on 2009-03-27.
Available extensions:
GNU libio by Per Bothner
crypt add-on version 2.1 by Michael Glad and others
linuxthreads-0.10 by Xavier Leroy
GNU Libidn by Simon Josefsson
BIND-8.2.3-T5B
libthread_db work sponsored by Alpha Processor Inc
NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Thread-local storage support included.
pthread library is compiled with floating stack support enabled.
For bug reporting instructions, please see:
.

> gcc --version
gcc (GCC) 3.3.3 (SuSE Linux)
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

> which gnu

Note that gnu does not seem to be recognized.

Dave

Quoting - Sergey Kuznetsov (Intel)

Dave

I don't see -liomp5 or -lguide in the linking line. One of these libraries must present in the linking line. Would you try this sequence of libraries

-L$(MKL_PATH) $(MKL_PATH)libmkl_intel_lp64.a -Wl,--start-group $(MKL_PATH)libmkl_intel_thread.a $(MKLPATH)libmkl_core.a -Wl,--end-group -L$(MKL_PATH) -liomp5 -lpthread -lm

All the best
Sergey

Here's my new link line along with a sample of the errors:

ifort -o nike3d.lnx *.o -L/usr/sci/LinuxIA64/intel/mkl/lib/64/ /usr/sci/LinuxIA64/intel/mkl/lib/64/libmkl_intel_lp64.a -Wl,--start-group /usr/sci/LinuxIA64/intel/mkl/lib/64/libmkl_intel_thread.a libmkl_core.a -Wl,--end-group -L/usr/sci/LinuxIA64/intel/mkl/lib/64/ -liomp5 -lpthread -lm
IPO Error: unresolved : mkl_pds_lp64_get_proc_pardiso
Referenced in libmkl_core.a(pardiso_lp64.o)
IPO Error: unresolved : mkl_pds_lp64_diag_pardiso
Referenced in libmkl_core.a(pardiso_lp64.o)
Referenced in libmkl_core.a(check_input_fc_lp64.o)
IPO Error: unresolved : mkl_pds_lp64_c_diag_pardiso
Referenced in libmkl_core.a(pardiso_lp64.o)
Referenced in libmkl_core.a(check_input_fc_lp64.o)
IPO Error: unresolved : mkl_lapack_dlasr3
Referenced in libmkl_core.a(dsteqr.o)
IPO Error: unresolved : __tls_get_addr
Referenced in libmkl_core.a(mkl_memory.o)
IPO Error: unresolved : mkl_pds_lp64_c_pre_cgs_pardiso
Referenced in libmkl_core.a(do_all_fc_lp64.o)
IPO Error: unresolved : mkl_pds_lp64_c_amuxy_pardiso
Referenced in libmkl_core.a(do_all_fc_lp64.o)
IPO Error: unresolved : mkl_pds_lp64_amuxy_pardiso
Referenced in libmkl_core.a(do_all_fc_lp64.o)
Referenced in libmkl_core.a(pre_cgs_lp64.o)
IPO Error: unresolved : mkl_pds_lp64_cgs_i
Referenced in libmkl_core.a(pre_cgs_lp64.o)
IPO Error: unresolved : mkl_pds_lp64_cgs_a
Referenced in libmkl_core.a(pre_cgs_lp64.o)
IPO Error: unresolved : mkl_pds_lp64_cgs_b
Referenced in libmkl_core.a(pre_cgs_lp64.o)
IPO Error: unresolved : mkl_pds_lp64_ladj_mod_pardiso
Referenced in libmkl_core.a(reorder1_lp64.o)
IPO Error: unresolved : mkl_pds_lp64_psol_fwgath_pardiso

Quoting - rawlinssci.utah.edu

ifort -o nike3d.lnx *.o -L/usr/sci/LinuxIA64/intel/mkl/lib/64/ /usr/sci/LinuxIA64/intel/mkl/lib/64/libmkl_intel_lp64.a -Wl,--start-group /usr/sci/LinuxIA64/intel/mkl/lib/64/libmkl_intel_thread.a libmkl_core.a -Wl,--end-group -L/usr/sci/LinuxIA64/intel/mkl/lib/64/ -liomp5 -lpthread -lm
IPO Error: unresolved : mkl_pds_lp64_get_proc_pardiso
Referenced in libmkl_core.a(pardiso_lp64.o)

The lp64 library belongs within the --start-group ... --end-group grouping.

Quoting - tim18
The lp64 library belongs within the --start-group ... --end-group grouping.

I moved the lp64 library within the group and still got the same errors. Note that if I use the link line:

ifort -o nike3d.lnx nike3d.o *.o -L/usr/sci/LinuxIA64/intel/mkl/lib/64/ /usr/sci/LinuxIA64/intel/mkl/lib/64/libmkl_lapack.a /usr/sci/LinuxIA64/intel/mkl/lib/64/libiomp5.a -openmp -lpthread

I don't get the other unresolved reference errors, but I do still get the following error:

IPO Error: unresolved : __tls_get_addr
Referenced in libmkl_core.a(mkl_memory.o)

Thanks,

Dave

The libmkl_lapack.a in recent MKL versions is just a link script fragment which you can view as plain text. It shouldn't make any difference whether you use that script or the commands copied out of it.
The continued tls problems make it look like an incompatibility with your gliibc. I'm out of IA64 business, my old IA64 box died last week; anyway, I haven't any experience with Altix IA64 distros.
If you submit a support request on premier.intel.com, you will need to quote your distro (some version of SLES?), uname, and glibc; in addition you should give your ProPack version and binutils (e.g. ld --version).
One other thing: you should make sure you are linking the libraries you have specified from your MKL directory, and not getting your current MKL libraries mixed up with some older versions, such as libguide.so or libiomp5.so which may be installed elsewhere on your system. You should use the latest libiomp5 among those provided with your MKL and with your ifort.
The ifort professional version (the only one still supported) has its own MKL library, so you could avoid confusion by getting all these libraries from the ifort installation tree.

Quoting - rawlinssci.utah.edu

I moved the lp64 library within the group and still got the same errors. Note that if I use the link line:

ifort -o nike3d.lnx nike3d.o *.o -L/usr/sci/LinuxIA64/intel/mkl/lib/64/ /usr/sci/LinuxIA64/intel/mkl/lib/64/libmkl_lapack.a /usr/sci/LinuxIA64/intel/mkl/lib/64/libiomp5.a -openmp -lpthread

I don't get the other unresolved reference errors, but I do still get the following error:

IPO Error: unresolved : __tls_get_addr
Referenced in libmkl_core.a(mkl_memory.o)

Thanks,

Dave

I am using MKL 9.0 and Ifort 10.0 on an itanium, and found the sam eerror. I resolved the problem by putting 'libc.a' into the MKL link group.

Note that some versions of ifort did not handle the --group flags correctly, perhaps depending on platform variations. Instead of using those flags, I have been using a pseudo-archive linker script instead. In this case, it contains the line:

Quoting - rawlinssci.utah.edu

I moved the lp64 library within the group and still got the same errors. Note that if I use the link line:

ifort -o nike3d.lnx nike3d.o *.o -L/usr/sci/LinuxIA64/intel/mkl/lib/64/ /usr/sci/LinuxIA64/intel/mkl/lib/64/libmkl_lapack.a /usr/sci/LinuxIA64/intel/mkl/lib/64/libiomp5.a -openmp -lpthread

I don't get the other unresolved reference errors, but I do still get the following error:

IPO Error: unresolved : __tls_get_addr
Referenced in libmkl_core.a(mkl_memory.o)

Thanks,

Dave

I am using MKL 9.0 and Ifort 10.0 on an IA64 with SUSE (SLES-10), and found the same error. I resolved the problem by adding '/lib/libc.so.6.1 /lib/ld-linux-ia64.so.2' to the MKL linking group.

I tried using 'libc.so', but ifort gave an error with the library /usr/lib/libc_nonshared.a, referenced by /usr/lib/libc.so, which is actually a linker script. Maybe that nonshared lib is the source of the problem?

Note that some versions of ifort did not handle the --group flags correctly, perhaps depending on platform variations. Instead of using those flags, I have been creating a linker script instead. In this case, it contains the line:

GROUP (libmkl_ipf.a libmkl_lapack.a libguide.a /lib/libc.so.6.1 /lib/ld-linux-ia64.so.2)

Joe Krahn

Quoting - krahn@niehs.nih.gov

I tried using 'libc.so', but ifort gave an error with the library /usr/lib/libc_nonshared.a, referenced by /usr/lib/libc.so, which is actually a linker script. Maybe that nonshared lib is the source of the problem?

Note that some versions of ifort did not handle the --group flags correctly, perhaps depending on platform variations. Instead of using those flags, I have been creating a linker script instead. In this case, it contains the line:

GROUP (libmkl_ipf.a libmkl_lapack.a libguide.a /lib/libc.so.6.1 /lib/ld-linux-ia64.so.2)

It's true, the first 2 10.1 compiler releases had a buggy linker script generation, and you may have had to make your own linker script to use those, Generally, rather than continue to use buggy early versions of a compiler, it makes more sense to upgrade.
It would be unreliable to link a static library to satisfy references from a dynamic library.

Quoting - krahn@niehs.nih.gov

I am using MKL 9.0 and Ifort 10.0 on an itanium, and found the sam eerror. I resolved the problem by putting 'libc.a' into the MKL link group.

Note that some versions of ifort did not handle the --group flags correctly, perhaps depending on platform variations. Instead of using those flags, I have been using a pseudo-archive linker script instead. In this case, it contains the line:

Quoting - rawlinssci.utah.edu

I moved the lp64 library within the group and still got the same errors. Note that if I use the link line:

ifort -o nike3d.lnx nike3d.o *.o -L/usr/sci/LinuxIA64/intel/mkl/lib/64/ /usr/sci/LinuxIA64/intel/mkl/lib/64/libmkl_lapack.a /usr/sci/LinuxIA64/intel/mkl/lib/64/libiomp5.a -openmp -lpthread

I don't get the other unresolved reference errors, but I do still get the following error:

IPO Error: unresolved : __tls_get_addr
Referenced in libmkl_core.a(mkl_memory.o)

Thanks,

Dave

I am using MKL 9.0 and Ifort 10.0 on an IA64 with SUSE (SLES-10), and found the same error. I resolved the problem by adding '/lib/libc.so.6.1 /lib/ld-linux-ia64.so.2' to the MKL linking group.

I tried using 'libc.so', but ifort gave an error with the library /usr/lib/libc_nonshared.a, referenced by /usr/lib/libc.so, which is actually a linker script. Maybe that nonshared lib is the source of the problem?

Note that some versions of ifort did not handle the --group flags correctly, perhaps depending on platform variations. Instead of using those flags, I have been creating a linker script instead. In this case, it contains the line:

GROUP (libmkl_ipf.a libmkl_lapack.a libguide.a /lib/libc.so.6.1 /lib/ld-linux-ia64.so.2)

Joe Krahn

John,

Thanks. Adding libc.a in a link group took care of the __tls_get_addr problem.

Dave

Leave a Comment

Please sign in to add a comment. Not a member? Join today