Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29248 Discussions

Issues linking offload code with Intel 15

Matt_Thompson
Novice
1,321 Views

All,

I'm testing out Intel 15 at the moment (.0.0.024 right now, I have 0.0.050 downloaded) and I seem to have an issue with it that I didn't with Intel 14. As background, our sysadmins here created a module file for Intel 14 that has things like:

# mic specific
prepend-path    LD_LIBRARY_PATH         "/opt/intel/mic/coi/host-linux-release/lib:/opt/intel/mic/myo/lib"
prepend-path    MIC_LD_LIBRARY_PATH     "$prefix/compiler/lib/mic:/opt/intel/mic/coi/device-linux-release/lib:/opt/intel/mic/myo/lib"
prepend-path    PATH                    $prefix/bin/intel64_mic

They'd figured out all the things that need to be in the path, etc., and I can compile Offload code with Intel 14 just fine. However, when I try to compile the same code with the same environment (save different prefix), same options, everything I get:

x86_64-k1om-linux-ld: warning: libcoi_device.so.0, needed by /discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5, not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libmyo-service.so, needed by /discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5, not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libimf.so, needed by /discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5, not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libsvml.so, needed by /discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5, not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libirng.so, needed by /discover/swdev/mathomp4/intel/composer_xe_2015.0.024/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 /discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5, not found (try using -rpath or -rpath-link)
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `myoiRemoteFuncRegister@MYO_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `myoSharedFree@MYO_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `COIProcessWaitForShutdown@COI_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `myoiTargetFptrTableRegister@MYO_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `myoSharedAlignedFree@MYO_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `myoiLibFini@MYO_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `myoiLibInit@MYO_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `myoSharedMalloc@MYO_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `myoRelease@MYO_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `myoSharedAlignedMalloc@MYO_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `COIBufferReleaseRef@COI_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `myoiMicVarTableRegister@MYO_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `COIPipelineStartExecutingRunFunctions@COI_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `COIBufferAddRef@COI_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `COIPerfGetCycleFrequency@COI_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `myoAcquire@MYO_1.0'
/discover/swdev/mathomp4/intel/composer_xe_2015.0.024/compiler/lib/mic/liboffload.so.5: undefined reference to `COIEngineGetIndex@COI_1.0'

Now, obviously, the "undefined reference" errors are due to the fact it can't find the other libraries. But why? Did the linking step of Intel Fortran 15 change from that of Intel 14? Does it now need a more explicit link path? I've tried to do a few things like adding -Wl,-rpath,/opt/intel/mic/coi/device-linux-release/lib (which is where libcoi_device.so.0 lives) to the link, but it didn't seem to help.

Or did I not install Intel 15 correctly? Maybe it needs to know some of these locations to begin with?

Thanks for any help,

Matt

0 Kudos
2 Replies
Kevin_D_Intel
Employee
1,321 Views

This occurs when using the 15.0 Beta with MPSS 2.1.x. When you update to a newer MPSS 3.2.x that should avoid the issue.

With MPSS 2.1, try passing the -rpath using the -offload-option to both the COI and MYO libs. Something like following:

$ ifort example.F90 -offload-option,mic,ld,"-rpath /opt/intel/mic/myo/lib/ -rpath /opt/intel/mic/coi/device-linux-release/lib/"

 

0 Kudos
Kevin_D_Intel
Employee
1,321 Views

At this time, it is my understanding we will support MPSS 2.x in the next major release due out later this year (15.0 compiler) so I submitted a formal defect w/Development (see internal tracking id below) and will update this post with more information as I learn it regarding the linking problems you detailed.

(Internal tracking id: DPD200257304)

0 Kudos
Reply