0
votes

While compiling+linking some MIC (Intel Xeon Phi coprocessor) code, I got this warnings.

x86_64-k1om-linux-ld: warning: libimf.so, needed by /usr/local/Intel/parallel_studio_xe_2013_sp1/composer_xe_2015.0.090/compiler/lib/mic/liboffload.so.5, not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libsvml.so, needed by /usr/local/Intel/parallel_studio_xe_2013_sp1/composer_xe_2015.0.090/compiler/lib/mic/liboffload.so.5, not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libirng.so, needed by /usr/local/Intel/parallel_studio_xe_2013_sp1/composer_xe_2015.0.090/compiler/lib/mic/liboffload.so.5, not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libintlc.so.5, needed by /usr/local/Intel/parallel_studio_xe_2013_sp1/composer_xe_2015.0.090/compiler/lib/mic/liboffload.so.5, not found (try using -rpath or -rpath-link)

But these libraries are existing and the code is compiling+linking and executable. The Intel C++ compiler is used.

1
"They exist". Maybe. The linker cannot find them. Tell it where they are by using -rpath-link. - n. 1.8e9-where's-my-share m.
@CaptainObvlious no, it's a totally different issue. - n. 1.8e9-where's-my-share m.
@n.m. the -rpath or -rpath-link option is ignored. - SScholl
The compiler does not know these options, you need to pass them to the linker. If you are linking with icc, try -Wl,-rpath=/your/dir - n. 1.8e9-where's-my-share m.
@n.m. I do so, but didn't work. icc -openmp -Wl -rpath=/usr/local/Intel/parallel_studio_xe_2013_sp1/composer_xe_2015.0.090/compiler/lib/mic/ -o matmul_c_intel.exe matmul_c.o -L/usr/local/lib If i add it directly to LDLIBS, the linker is skipping it. E.g. ld: skipping incompatible /usr/local/Intel/parallel_studio_xe_2013_sp1/composer_xe_2015.0.090/compiler/lib/mic/libimf.a when searching for -liomp5 - SScholl

1 Answers

0
votes

You don't say what compiler options you are using but if you are compiling the code to run native on the coprocessor (if you are using -mmic on the compiler command), then these messages are not harmful. The offload libraries are not used when you run your program directly on the coprocessor. I'm not sure why the loader thinks it needs those libraries but they are not needed, hence they do not link, hence the loader thinks the library is missing. No amount of playing with library paths is going to make the warning go away.