- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
while playing with the offloading examples found on this forum I ran into a little snag:
host A: Scientific Linux 6.5, Intel compiler v14, Xeon Phi 7100, mpss 3.3.2 stack
host B: CentOS 6.5, Intel compiler v15, 2 x Xeon Phi 5100, mpss 3.3.2 stack
When I compile an offload example on host A, then copy it over to host B and I try to run it I get:
[hostB] $ ./offload1.icc14 offload error: target executable is not available
It does not work even if I copy over the offload libraries from icc v14 to the new environment:
[hostB] $ LD_LIBRARY_PATH=icc14 ldd ./offload1.icc14 linux-vdso.so.1 => (0x00007fff3a8f7000) libm.so.6 => /lib64/libm.so.6 (0x00007f8486329000) liboffload.so.5 => icc14/liboffload.so.5 (0x00007f84860f7000) libcilkrts.so.5 => icc14/libcilkrts.so.5 (0x00007f8485eb9000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f8485bb3000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f848599c000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f848577f000) libc.so.6 => /lib64/libc.so.6 (0x00007f84853eb000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f84851e6000) libimf.so => icc14/libimf.so (0x00007f8484d1f000) libsvml.so => icc14/libsvml.so (0x00007f8484128000) libirng.so => icc14/libirng.so (0x00007f8483f20000) libiomp5.so => icc14/libiomp5.so (0x00007f8483c05000) libintlc.so.5 => icc14/libintlc.so.5 (0x00007f84839af000) /lib64/ld-linux-x86-64.so.2 (0x00007f84865bf000) [hostB] $ LD_LIBRARY_PATH=icc14 ./offload1.icc14 offload error: cannot find MIC executable offload_main offload error: cannot start process on the device 0 (error code 6)
I have seen error code 14 also).
If I recompile the code everything runs fine under icc 15 as well, but how can I detect this situation? Ideally I would like to compile my code on one host and then distribute it to other nodes with Xeon Phi's. I do not know in advance which version of the icc software is installed on these nodes, so how can I ensure that my compiled program will be future proof?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I can reproduce this. There is a significant change between 14.0 and 15.0 related to the offload binary image. In 14.0 this was a shared object (DSO) and in 15.0 it is now an executable and that appears to be what's in play.
When moving the 14.0 environment over, maybe you missed also grabbing the offload_main file. That comes from a path like: <install-dir>/composer_xe_2013_sp1.4.211/compiler/lib/mic/
And you must ensure that MIC_LD_LIBRARY_PATH refers to the location of offload_main when the program executes.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
For future proofing, a good suggestion from someone was an alternative to creating your own 14.0 run-time bundle is to use the Composer XE 2013 SP1 Redistributable Library package available here.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
OK, copying over the entire $MIC_LD_LIBRARY_PATH directory from the ICC 14 installation did the trick (I was too lazy to figure out if it was just the offload_main file). (icc14 = /opt/intel/composer_xe_2013_sp1.1.106 in my case).
Vice versa for the icc15 (=/opt/intel/composer_xe_2015.0.090) files.
Thanks Kevin!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You're welcome. Glad that worked out.
In case someone else finds interest in this same scenario, there is also a Redistributable Library package for the Intel Parallel Studio XE 2015 available here.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page