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

MKL Link problem

jacksonsony
Beginner
2,800 Views
I am using a linux machine with AMD Opetron running Fedora Core 8.0. The Fortran compiler is the default one coming with FC8, which I believe gcc-gfortran 4.1.2. Most of codes are written in Frotran. If I chose the defult but super-slow math library from the compiler, everything is ok and I can get all my tests passed. However, if I chose MKL, it shows the following error information:

Linker messages (if any) follow...
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dtrsm_omp.o): In function `mkl_blas_dtrsm':
__tmp_dtrsm_omp.c:(.text+0x68): undefined reference to `__kmpc_global_thread_num'
__tmp_dtrsm_omp.c:(.text+0x1a2): undefined reference to `__kmpc_ok_to_fork'
__tmp_dtrsm_omp.c:(.text+0x1c7): undefined reference to `__kmpc_push_num_threads'
__tmp_dtrsm_omp.c:(.text+0x27b): undefined reference to `__kmpc_fork_call'
__tmp_dtrsm_omp.c:(.text+0x295): undefined reference to `__kmpc_serialized_parallel'
__tmp_dtrsm_omp.c:(.text+0x337): undefined reference to `__kmpc_end_serialized_parallel'
__tmp_dtrsm_omp.c:(.text+0x34a): undefined reference to `__kmpc_ok_to_fork'
__tmp_dtrsm_omp.c:(.text+0x36f): undefined reference to `__kmpc_push_num_threads'
__tmp_dtrsm_omp.c:(.text+0x3f5): undefined reference to `__kmpc_fork_call'
__tmp_dtrsm_omp.c:(.text+0x413): undefined reference to `__kmpc_serialized_parallel'
__tmp_dtrsm_omp.c:(.text+0x4c4): undefined reference to `__kmpc_end_serialized_parallel'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dtrsm_omp.o): In function `L_mkl_blas_dtrsm_259__par_loop0':
__tmp_dtrsm_omp.c:(.text+0x722): undefined reference to `__kmpc_for_static_init_8'
__tmp_dtrsm_omp.c:(.text+0x88f): undefined reference to `__kmpc_for_static_fini'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dtrsm_omp.o): In function `L_mkl_blas_dtrsm_276__par_loop1':
__tmp_dtrsm_omp.c:(.text+0xa2e): undefined reference to `__kmpc_for_static_init_8'
__tmp_dtrsm_omp.c:(.text+0xb8f): undefined reference to `__kmpc_for_static_fini'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dtrmm_omp.o): In function `mkl_blas_dtrmm':
__tmp_dtrmm_omp.c:(.text+0x68): undefined reference to `__kmpc_global_thread_num'
__tmp_dtrmm_omp.c:(.text+0x1a4): undefined reference to `__kmpc_ok_to_fork'
__tmp_dtrmm_omp.c:(.text+0x1c9): undefined reference to `__kmpc_push_num_threads'
__tmp_dtrmm_omp.c:(.text+0x280): undefined reference to `__kmpc_fork_call'
__tmp_dtrmm_omp.c:(.text+0x29a): undefined reference to `__kmpc_serialized_parallel'
__tmp_dtrmm_omp.c:(.text+0x33f): undefined reference to `__kmpc_end_serialized_parallel'
__tmp_dtrmm_omp.c:(.text+0x352): undefined reference to `__kmpc_ok_to_fork'
__tmp_dtrmm_omp.c:(.text+0x377): undefined reference to `__kmpc_push_num_threads'
__tmp_dtrmm_omp.c:(.text+0x400): undefined reference to `__kmpc_fork_call'
__tmp_dtrmm_omp.c:(.text+0x41e): undefined reference to `__kmpc_serialized_parallel'
__tmp_dtrmm_omp.c:(.text+0x4d2): undefined reference to `__kmpc_end_serialized_parallel'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dtrmm_omp.o): In function `L_mkl_blas_dtrmm_236__par_loop0':
__tmp_dtrmm_omp.c:(.text+0x730): undefined reference to `__kmpc_for_static_init_8'
__tmp_dtrmm_omp.c:(.text+0x897): undefined reference to `__kmpc_for_static_fini'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dtrmm_omp.o): In function `L_mkl_blas_dtrmm_256__par_loop1':
_ _tmp_dtrmm_omp.c:(.text+0xa36): undefined reference to `__kmpc_for_static_init_8'
__tmp_dtrmm_omp.c:(.text+0xb97): undefined reference to `__kmpc_for_static_fini'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dgemm_omp.o): In function `mkl_blas_dgemm':
__tmp_dgemm_omp.c:(.text+0x6c): undefined reference to `__kmpc_global_thread_num'
__tmp_dgemm_omp.c:(.text+0x32c): undefined reference to `__kmpc_ok_to_fork'
__tmp_dgemm_omp.c:(.text+0x351): undefined reference to `__kmpc_push_num_threads'
__tmp_dgemm_omp.c:(.text+0x3c3): undefined reference to `__kmpc_fork_call'
__tmp_dgemm_omp.c:(.text+0x3dd): undefined reference to `__kmpc_serialized_parallel'
__tmp_dgemm_omp.c:(.text+0x44f): undefined reference to `__kmpc_end_serialized_parallel'
__tmp_dgemm_omp.c:(.text+0x53d): undefined reference to `__kmpc_ok_to_fork'
__tmp_dgemm_omp.c:(.text+0x562): undefined reference to `__kmpc_push_num_threads'
__tmp_dgemm_omp.c:(.text+0x656): undefined reference to `__kmpc_fork_call'
__tmp_dgemm_omp.c:(.text+0x670): undefined reference to `__kmpc_serialized_parallel'
__tmp_dgemm_omp.c:(.text+0x743): undefined reference to `__kmpc_end_serialized_parallel'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dgemm_omp.o): In function `L_mkl_blas_dgemm_570__par_loop2':
__tmp_dgemm_omp.c:(.text+0xaec): undefined reference to `__kmpc_for_static_init_8'
__tmp_dgemm_omp.c:(.text+0xd72): undefined reference to `__kmpc_for_static_fini'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dgemm_omp.o): In function `L_mkl_blas_dgemm_557__par_loop1':
__tmp_dgemm_omp.c:(.text+0xf3d): undefined reference to `__kmpc_for_static_init_8'
__tmp_dgemm_omp.c:(.text+0x10ec): undefined reference to `__kmpc_for_static_fini'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dgemm_omp.o): In function `L_mkl_blas_dgemm_601__par_loop3':
__tmp_dgemm_omp.c:(.text+0x12f3): undefined reference to `__kmpc_for_static_init_8'
__tmp_dgemm_omp.c:(.text+0x152a): undefined reference to `__kmpc_for_static_fini'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dgemm_omp.o): In function `L_mkl_blas_dgemm_467__par_loop0':
__tmp_dgemm_omp.c:(.text+0x166b): undefined reference to `__kmpc_for_static_init_8'
__tmp_dgemm_omp.c:(.text+0x1776): undefined reference to `__kmpc_for_static_fini'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dgemm_omp.o): In function `mkl_blas_dgemm_1d':
__tmp_dgemm_omp.c:(.text+0x1931): undefined reference to `__kmpc_global_thread_num'
__tmp_dgemm_omp.c:(.text+0x19ed): undefined reference to `__kmpc_ok_to_fork'
__tmp_dgemm_omp.c:(.text+0x1a12): undefined reference to `__kmpc_push_num_threads'
__tmp_dgemm_omp.c:(.text+0x1aca): undefined reference to `__kmpc_fork_call'
__tmp_dgemm_omp.c:(.text+0x1ae8): undefined reference to `__kmpc_serialized_parallel'
__tmp_dgemm_omp.c:(.text+0x1bd9): undefined reference to `__kmpc_end_serialized_parallel'
__tmp_dgemm_omp.c:(.text+0x1c2d): undefined reference to `__kmpc_ok_to_fork'
__tmp_dgemm_omp.c:(.text+0x1c52): undefined reference to `__kmpc_push_num_threads'
__tmp_dgemm_omp.c:(.text+0x1d46): undefined reference to `__kmpc_fork_call'
__tmp_dgemm_omp.c:(.text+0x1d60): undefined reference to `__kmpc_serialized_parallel'
__tmp_dgemm_omp.c:(.text+0x1e33): undefined reference to `__kmpc_end_serialized_parallel'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dgemm_omp.o): In function `L_mkl_blas_dgemm_1d_665__par_loop4':
__tmp_dgemm_omp.c:(.text+0x2022): undefined reference to `__kmpc_for_static_init_8'
__tmp_dgemm_omp.c:(.text+0x21c8): undefined reference to `__kmpc_for_static_fini'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(dgemm_omp.o): In function `L_mkl_blas_dgemm_1d_678__par_loop5':
__tmp_dgemm_omp.c:(.text+0x23c9): undefined reference to `__kmpc_for_static_init_8'
__tmp_dgemm_omp.c:(.text+0x257a): undefined reference to `__kmpc_for_static_fini'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(mkl_threading.o): In function `MKL_Get_Max_Threads':
__tmp_mkl_threading.c:(.text+0x56): undefined reference to `omp_in_parallel'
__tmp_mkl_threading.c:(.text+0x13d): undefined reference to `omp_get_max_threads'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(mkl_threading.o): In function `MKL_get_N_Cores':
__tmp_mkl_threading.c:(.text+0x8b1): undefined reference to `omp_get_num_procs'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.a(mkl_threading.o): In function `MKL_Domain_Get_Max_Threads':
__tmp_mkl_threading.c:(.text+0xea7): undefined reference to `omp_in_parallel'
__tmp_mkl_threading.c:(.text+0xf46): undefined reference to `omp_get_max_threads'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_ordered'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.so: undefined reference to `omp_get_thread_num'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_barrier'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_critical'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_fini_8'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_end_critical'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_init_8'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_for_static_init_4'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_flush'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_next_8'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_end_ordered'
/opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_atomic_fixed8_add'
collect2: ld returned 1 exit status

Any suggestion is highly appreciated.
0 Kudos
1 Reply
TimP
Honored Contributor III
2,801 Views
When you choose intel_thread, you need also libiomp5 and -lpthread. This is discussed in the documentation.
0 Kudos
Reply