how to compile my program using static mode for MIC(Xeon Phi)

how to compile my program using static mode for MIC(Xeon Phi)

I compile my program as the follwoing  to staticly link MKL I get the follwoing error .

I am using composer_xe_2013 , and icc .

bash-4.1$ icc -mmic -openmp -no-vec s_mkl_double_one_dim_reorder_err.c  -Wl,--start-group  libmkl_intel_lp64.a libmkl_intel_thread.a libmkl_core.a libiomp5.so -Wl,--end-group -o s_mkl_static.mic

The Error that I have from compiling it :

x86_64-k1om-linux-ld: i386:x86-64 architecture of input file `libmkl_intel_lp64.a(cblas_dgemm_lp64.o)' is incompatible with k1om output
x86_64-k1om-linux-ld: i386:x86-64 architecture of input file `libmkl_intel_lp64.a(_dgemm_lp64.o)' is incompatible with k1om output
x86_64-k1om-linux-ld: i386:x86-64 architecture of input file `libmkl_intel_lp64.a(cblas_xerbla_lp64.o)' is incompatible with k1om output
x86_64-k1om-linux-ld: i386:x86-64 architecture of input file `libmkl_intel_lp64.a(cblas_auxi_lp64.o)' is incompatible with k1om output
x86_64-k1om-linux-ld: i386:x86-64 architecture of input file `libmkl_intel_lp64.a(errchk_dgemm.o)' is incompatible with k1om output
x86_64-k1om-linux-ld: i386:x86-64 architecture of input file `libmkl_intel_lp64.a(_cdecl_xerbla.o)' is incompatible with k1om output
x86_64-k1om-linux-ld: i386:x86-64 architecture of input file `libmkl_intel_lp64.a(_xerbla_l.o)' is incompatible with k1om output
x86_64-k1om-linux-ld: i386:x86-64 architecture of input file `libmkl_intel_lp64.a(_xerbla_l_.o)' is incompatible with k1om output
x86_64-k1om-linux-ld: i386:x86-64 architecture of input file `libmkl_intel_lp64.a(_xerbla_u_.o)' is incompatible with k1om output
x86_64-k1om-linux-ld: i386:x86-64 architecture of input file `libmkl_intel_lp64.a(_xerbla.o)' is incompatible with k1om output
x86_64-k1om-linux-ld: BFD (GNU Binutils) 2.22.52.20120302 internal error, aborting at ../../../binutils/bfd/elf64-x86-64.c line 3382 in elf_x86_64_relocate_section

x86_64-k1om-linux-ld: Please report this bug.

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

According to the messages, you are trying to link libraries from mkl/lib/intel64/ where you need those from mkl/lib/mic/.  According to the link advisor http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor you must give the full path of each .a file.

libiomp5.so wouldn't normally be place inside the start-group ... end-group specifiers, and would normally be specified as -liomp5, but that may not be a problem.

Hi Allam,

It looks all of the mkl and openmp library are for X86-64 (intel64), not for mic, which invoke the incompatible report.  You may try add the mic path explicitly for example,

-Wl,--start-group /opt/intel/composer_xe_2013_sp1/mkl/lib/mic/libmkl_intel_lp64.a /opt/intel/composer_xe_2013_sp1/mkl/lib/mic/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1/mkl/lib/mic/libmkl_core.a /opt/intel/composer_xe_2013_sp1/lib/mic/libiomp5.so

and see if it works?

Some related link:

MKL user guide: http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_userguide_lnx/GUID-D0627E59-8D1C-4935-8DF4-BA14AB65B09B.htm

MKL link advisor: http://software.intel.com/sites/products/mkl/MKL_Link_Line_Advisor.html

Best Regards

Ying

 

Leave a Comment

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