Intel® MPI Library
Get help with building, analyzing, optimizing, and scaling high-performance computing (HPC) applications.

/usr/bin/ld: cannot find -lmpigc4

Kun_Z_1
Beginner
1,366 Views

I installed intel MPI Library 4.1.0.024 and tried compiling a MPI program. If I compile it without -mmic, there's no problem. But when I add  -mmic, here's  the  error message:

/usr/bin/ld: skipping incompatible /opt/intel/impi/4.1.0.024/mic/lib/libmpigc4.so when searching for -lmpigc4
/usr/bin/ld: skipping incompatible /opt/intel/impi/4.1.0.024/mic/lib/libmpigc4.a when searching for -lmpigc4
/usr/bin/ld: cannot find -lmpigc4

I can find the file of libmpigc4.so and libmpigc4.a in the directory of  /opt/intel/impi/4.1.0.024/mic/lib. And the PATH in .bashrc is:

source /opt/intel/impi/4.1.0.024/intel64/bin/mpivars.sh

Even I change it to: source /opt/intel/impi/4.1.0.024/mic/bin/mpivars.sh, it gives me the same error.

I need your help. Thank you much

Zhao

0 Kudos
4 Replies
Kun_Z_1
Beginner
1,366 Views

Anyone?

0 Kudos
TimP
Honored Contributor III
1,366 Views

I don't think anyone can answer without more specific information from you; if not a reproducer case, at least a statement of the compile and link commands and reported errors.

The wrappers mpiifort, mpiicc, mpiicpc should select working MPI libraries at link time.  If you want wrappers such as mpif90, mpiCC, mpicc to act as aliases for the supported Intel compiler wrappers, you must take action to make it so in your installation.  Although there is a rudimentary gcc for MIC supplied with MPSS, I don't think it accepts -mmic nor would I count on it working with any supplied MPI libraries.

I doubt if anyone currently uses the 4.1.0.024 version.

0 Kudos
Kun_Z_1
Beginner
1,366 Views

Thank you for your reply and I am sorry for the lack of enough specific information. Recently, I installed the new version of intel mpi 4.1.1.036.

If I compile my program with the options: mpicxx -o3 -m64 -fopenmp -funroll-loops -Wno-deprecated, there is no problem, and the executable can run rightly on Xeon. However, I want to use MIC to speed up my program and use the MIC native model, so I need to add the compile option:-mmic.

When I compile the program with the options: mpicxx -o3 -m64 -mmic -fopenmp -funroll-loops -Wno-deprecated, it will give the same error messages. In this situation, compiler will use the lib file from ~/mic/lib, not ~/intel64/lib, that's where the problems occur. Many people said  that this error is related to 32 or 64 bits, may be that's true, but I can't find lib64 under ~/mic directory. If I link the libmpigc4.so under ~/mic/lib to the libmpigc4.so under ~/intel64/lib, it can work, However, the executable can't run on MIC because the libmpigc4.s0 we used is for Xeon, not Xeon Phi.

0 Kudos
TimP
Honored Contributor III
1,366 Views

So you are looking to build with a g++ cross compiler for MIC?   I haven't heard of anyone doing that.  The MIC installation doesn't provide an acceptable g++ . 

You seem to confirm that you are among those who build with gnu compilers and Intel MPI for host and are looking for a way to run on MIC without changing Makefile accordingly.  The only successful method I've heard of, as I hinted above, is to choose one of the methods to replace mpicxx -mmic by mpiicpc -mmic, for example by copying mpiicpc.py to mpicxx.py 

0 Kudos
Reply