- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I am trying to paralellize an existing Fortran code using OpenMP. In order to debug it, I want to use Intel Thread Checker 3.1 for Linux.
I compile every source file using 'ifort -openmp -g -O0 -tcheck -o object.o source.f'
I link using:
ifort -openmp -g -O0 -tcheck -o pilot_simpl st-comun_s.o pilot_simpl.o etaxjadp.o tlibredp.o resol_dp.o locin1te.o cpccano.o cierredp.o cierredp.o extelldp.o fundlo.o fundex.o input_s.o output_s.o simetria_p.o sfbiesf.o sfpotbi.o esfuerzos.o rutinas_assemble.o QKJ.o intufi.o fundex_partes.o obtenerpi.o reaccionencabeza.o intuxi_bottom.o obtenerqeqv.o condicionamiento.o matricesMP.o instrato_s.o piers.o vector_datos.o rigidez.o obtener_colocacion.o ComputeTransformationMatrix.o RotateMatrix.o -L /opt/intel/Compiler/11.0/083/mkl/lib/em64t -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -openmp -tcheck -lpthread
The libraries are the ones that work for me when I do not use -tcheck, but when I use '-tcheck' I start to get undefined references such as the ones listed below.
Can someone please help me with this?
Notes: I link to mkl libraries such as: zgetrf_, dgemv_ and dgemm_'
My version of ifort and mkl are 11.0.083.
I have Intel Thread Checker 3.1 installed and running, and environment variables set.
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_ok_to_fork'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_ordered'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_for_static_init_8'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_barrier'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_next_4'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_critical'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_fini_8'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_serialized_parallel'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_end_critical'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_init_8'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_fini_4'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_push_num_threads'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_for_static_init_4'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_end_serialized_parallel'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_flush'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_next_8'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_init_4'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_global_thread_num'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_end_ordered'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_fork_call'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_atomic_fixed8_add'
/opt/intel/Compiler/11.0/083/mkl/lib/em64t/libmkl_intel_thread.so: undefined reference to `__kmpc_for_static_fini'
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm not certain what you want to do with your MKL linking; you are mixing the procedures for static or shared MKL libraries. But, maybe it could work in the absence of -tcheck. In my experience, MKL libraries don't work with -tcheck, so I substitute public BLAS source code (not threaded within BLAS).
For expert opinions on use of MKL with -tcheck, the MKL forum might be more useful. I suspect the writers of thread checker didn't intend to support the combination of MKL and -tcheck, instead recommending you stick to cases small enough to use dynamic thread check instrumentation.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, it works without -tcheck. Does it mean that ITT doesn't work with programs that need MKL Libraries?
Could you please explain further what do you mean by 'mixing the procedures for static or shared MKL libraries.'?
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I hope it does not harm. I wrote them because it says so in the mkl-link-line advisor site from intel itself!:
http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/
Thank you very much for your response. I posted my question again in the MKL forum as you advised.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page