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:
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
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.
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.
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