Software Archive
Read-only legacy content

RH-6.4 + MPSS-3.6.1 + Intel 16.0.1 missing libcoi_device

Jamil_A_
Beginner
871 Views

 

  Hi 

    I have recently upgraded to MPSS-3.6.1 to make use of gcc 5.1 on the Phi but the linker of the offload code now fails trying to find libcoi_device

   It appears that this library is not installed on the host by MPSS-3.6.1 and  /opt/intel/mic only contains the host the libcoi_host

   Do I need to compile this library from the source code?

  Thanks

  Jamil 

Error Message 

   MIC command line:                                                                                                                                           
icpc -fPIC -fPIC -openmp -std=c++11 -diag-disable 10397 -diag-disable 3699 -diag-disable 10128 -diag-disable 1478 -diag-disable remark -fargument-noalias -ansi-alias -opt-report2 -opt-report-phase=loop,vec,offload -O3 -DNDEBUG -shared -o libzCFDDispatch.so /tmp/icpcMICwSyvg5 - -opt-report2 -opt-report-phase=loop,vec                                                                         
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libimf.so when searching for -limf                           
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libimf.a when searching for -limf                            
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libsvml.so when searching for -lsvml                         
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libsvml.a when searching for -lsvml                          
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libirng.so when searching for -lirng
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libirng.a when searching for -lirng
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libipgo.a when searching for -lipgo
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libdecimal.a when searching for -ldecimal
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libiomp5.so when searching for -liomp5
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libiomp5.a when searching for -liomp5
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libiomp5.so when searching for -liomp5
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libiomp5.a when searching for -liomp5
ld: skipping incompatible /opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/mic/libcilkrts.so.5 when searching for libcilkrts.so.5
ld: cannot find -lcoi_device

 

0 Kudos
10 Replies
Ravi_N_Intel
Employee
871 Views

How did you get the MIC command line.  Who created the file /tmp/icpcMICwSyvg5  used in the command line.  

0 Kudos
Jamil_A_
Beginner
871 Views
Hi Ravi The error message is generated when linking a shared library containing offload functions. I have updated to 2016.2.181 and I get a the following error when linking MIC command line: icpc -fPIC -fPIC -openmp -std=c++11 -diag-disable 10397 -diag-disable 3699 -diag-disable 10128 -diag-disable 1478 -diag-disable remark -fargument-noalias -ansi-alias -opt-report2 -opt-report-phase=loop,vec,offload -O3 -DNDEBUG -shared -o libzCFDDispatch.so /tmp/icpcMICLo71m9 -opt-report2 -opt-report-phase=loop,vec ld: cannot find -lcoi_device ld: cannot find -lmyo-service The missing libraries are not installed in /opt/intel/mic. Do I need to build them from the MPSS source? ls -R /opt/intel/mic /opt/intel/mic: bin coi /opt/intel/mic/bin: micnativeloadex /opt/intel/mic/coi: host-linux-release /opt/intel/mic/coi/host-linux-release: lib /opt/intel/mic/coi/host-linux-release/lib: libcoi_host.so libcoi_host.so.0
0 Kudos
Jamil_A_
Beginner
871 Views
Hi Ravi Here is the full compile command. /opt/intel/compilers_and_libraries_2016.2.181/linux/bin/intel64/icpc -fPIC -fPIC -openmp -std=c++11 -diag-disable 10397 -diag-disable 3699 -diag-disable 10128 -diag-disable 1478 -diag-disable remark -fargument-noalias -ansi-alias -opt-report2 -opt-report-phase=loop,vec,offload -watch=mic-cmd -offload-option,mic,compiler,'-opt-report2 -opt-report-phase=loop,vec' -axSSE4.2,AVX,CORE-AVX-I,CORE-AVX2,MIC-AVX512 -xSSE4.2 -O3 -DNDEBUG -shared -Wl,-soname,libzCFDDispatch.so -o libzCFDDispatch.so MIC command line: icpc -fPIC -fPIC -openmp -std=c++11 -diag-disable 10397 -diag-disable 3699 -diag-disable 10128 -diag-disable 1478 -diag-disable remark -fargument-noalias -ansi-alias -opt-report2 -opt-report-phase=loop,vec,offload -O3 -DNDEBUG -L/scratch/zSoft/projects/zcfd/poly/vagrant-zcfd/scripts/BUILD/zCFD-icc-phi-sse_build/install/lib -shared -o ../../bin/Release/INTEL_PHI/libzCFDDispatch.so /tmp/icpcMICuyovS1 -L/scratch/zSoft/projects/zcfd/poly/vagrant-zcfd/scripts/BUILD/zCFD-icc-phi-sse_build/install/lib -opt-report2 -opt-report-phase=loop,vec ld: cannot find -lcoi_device ld: cannot find -lmyo-service
0 Kudos
Ravi_N_Intel
Employee
871 Views

For MIC compilation linker used is k1om-mpss-linux-ld  and not ld as reported by you.
In order to verify the MIC compilation is correct can you generate the output using -v option.
Thanks
Ravi

0 Kudos
Ravi_N_Intel
Employee
871 Views

Colleague pointed out that your are using MIC-AVX512  in your -ax  options. This option is for generating code for KNL architecture and should have been flagged as error, but due to a bug confused the compiler and it is invoking ld which is the right for KNL.  Trying compiling by removing MIC-AVX512.

0 Kudos
Jamil_A_
Beginner
871 Views
Thanks I will give this a go and let you know the outcome.
0 Kudos
Ravi_N_Intel
Employee
871 Views

After further discussion internally, the driver behavior is correct.  You cannot use -axMIC-AVX512  with MPSS 3.6 which is for KNC.  MIC-AVX512 is supported for KNL and needs a different MPSS.

0 Kudos
Jamil_A_
Beginner
871 Views
Hi Ravi Removing MIC-AVX512 worked. Can you file this issue as a bug so that it gets fixed in the next release. How do I ensure that the offloaded code is compiled for MIC-AVX512 or is this the default used by the MIC compiler? Jamil
0 Kudos
Ravi_N_Intel
Employee
871 Views

Jamil,
   The default for Xeon Phi coprocessor x100 (formerly code name Knights Corner) uses 512 vector register.  This is the generation you are using with MPSS 3.6.  For  Xeon PHi  coprocessor (formerly code name Knights Landing) you need to use MIC-AVX512 to enable AVX512 instructions.
   By using MIC-AVX512 the compiler assumes you are compiling for Knights Landing and hence does not find the coi_device library in the MPSS 3.6 you have installed.

Ravi

 

 

 

0 Kudos
Jamil_A_
Beginner
871 Views
Hi Ravi Understood MIC-AVX512 is for KNL. So when compiling for KNL in the future I will need to add MIC-AVX512 back to the -ax options. Thanks Jamil
0 Kudos
Reply