Running offload applications on machines without Intel compilers

Running offload applications on machines without Intel compilers

I have an application that performs data offload to Intel Xeon Phi coprocessors, which I would like to run on machines that do not have Intel compilers installed. The problem is that every offload application depends on a number of dynamic libraries that are shipped with Intel compilers, and are not available on machines without compilers. Here are some of these applications:

libiomp5.so => /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/libiomp5.so (0x00007ff0385ef000)
 liboffload.so.5 => /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/liboffload.so.5 (0x00007ff0383c1000)
 libcilkrts.so.5 => /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/libcilkrts.so.5 (0x00007ff03818b000)
libimf.so => /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/libimf.so (0x00007ff037ccd000)
 libsvml.so => /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/libsvml.so (0x00007ff037303000)
 libirng.so => /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/libirng.so (0x00007ff0370fc000)
 libintlc.so.5 => /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/libintlc.so.5 (0x00007ff036ead000)

Interestingly, my application does not even use OpenMP or Cilk Plus, but it still depends on the OpenMP and Cilk shared libraries. Do I have any options for running this offload application on compiler-less client machines?

4 帖子 / 0 全新
最新文章
如需更全面地了解编译器优化,请参阅优化注意事项

There is a redistributable package (e.g. l_ccompxe_2013.3.163_redist.tgz) available that should enable running on a system w/o Intel Composer installed. I have not tried using with an offload program but in theory that should work also.

It is unclear at the moment where the OpenMP and Cilk shared libs are introduced.

You leave us guessing where you're coming from. If you're using a commercial application which was built to run against Intel libraries, the vendor should be supplying those libraries.  If you have full Intel compiler licenses for other machines, where you build your own applications, you are entitled to copy the libraries (read the licenses).

I'd take a stab by guessing that you might use MKL, in which case an MKL license would give you the libraries you need to launch MKL from a build with one of the supported host compilers, including "automatic offload" for the MKL functions which are supported in that mode.  The MKL included with a full compiler license on aonther machine could be used to copy over the ..so.

By "not using OpenMP" you might mean you use it only indirectly through one of the performance libraries.  I don't know how you could establish a dependence on cilkrts without an application built against it.

Thanks! Found the public link for Composer XE 2013, will try: http://software.intel.com/en-us/articles/redistributable-libraries-for-t...

P.S.: @Tim thanks for the info about the library distribution option in the licenses! The application in question is a diagnostic tool that tests the offload bandwidth, hence no OpenMP (SHOC does not support multiple coprocessors yet, so I have to make my own stone axes). It has absolutely no OpenMP in the code or the compiler arguments, but "ldd" shows the dependencies that I listed. I suppose the dependency on Cilk came from using array notation somewhere.

发表评论

登录添加评论。还不是成员?立即加入