Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7956 Discussions

Installing redistributable DLLs (Windows)

KKats1
Beginner
946 Views

I have compiled a DLL library with Intel XE compiler v15.0 for Windows, ia32 target. The library is to be used in-house on our servers (we're a SaaS). The library uses both Intel's compiler vectorization and calls FFT/IFFT routines from the MKL.

The server farm is not well compartmentalized, and it is currently an option to install the libraries either into the system on each server (as we install Microsoft VS2xxx runtimes), or with each application.

My question is about the kosher strategy of redistributing both the compiler runtime and MKL. redist\ia32\compiler contains 17 MB worth of DLLs, and redist\ia32\mkl is whopping 150 MB. If possible, I would avoid installing these monsters per-application. On the other hand, installing them into a common location is the road to DLL hell. If some applications will be compiled with a different Intel compiler and/or with an upgraded version of MKL, how can we manage the common files on servers? Is there an Intel-recommended way of distributing compiler runtime and MKL DLLs? I seem to have trouble finding it in the documentation.

Below is what my code loads *on my machine* (an i7 Haswell CPU), but the production machines range from Gainestowns to Haswells, so that different MKL DLLs may be required on different machines. The fact that our scheduler can run an application on just any available server in the farm does not make the problem easier.

'starter.exe' (Win32): Loaded 'C:\Program Files (x86)\Intel\Composer XE 2015\redist\ia32\mkl\mkl_intel_thread.dll'.
'starter.exe' (Win32): Loaded 'C:\Program Files (x86)\Intel\Composer XE 2015\redist\ia32\mkl\mkl_core.dll'.
'starter.exe' (Win32): Loaded 'C:\Program Files (x86)\Intel\Composer XE 2015\redist\ia32\compiler\libiomp5md.dll'.
'starter.exe' (Win32): Loaded 'C:\Program Files (x86)\Intel\Composer XE 2015\redist\ia32\compiler\libmmd.dll'.
'starter.exe' (Win32): Loaded 'C:\Program Files (x86)\Intel\Composer XE 2015\redist\ia32\compiler\svml_dispmd.dll'.
'starter.exe' (Win32): Loaded 'C:\Program Files (x86)\Intel\Composer XE 2015\redist\ia32\mkl\mkl_avx2.dll'.
'starter.exe' (Win32): Loaded 'C:\Program Files (x86)\Intel\Composer XE 2015\redist\ia32\mkl\libimalloc.dll'.

0 Kudos
1 Solution
JenniferJ
Moderator
946 Views

The compiler's generated binaries are backward/forward compatible in general with several limitations. Please check out the details on this article:  https://software.intel.com/en-us/articles/are-intel-compiler-generated-objectsbinaries-backward-andor-forward-compatible-between

So if you have installed the latest compiler redistributable libs, your applications should run fine. But do test out.

But not sure of MKL. Please post a question to the MKL forum.

Jennifer

View solution in original post

0 Kudos
3 Replies
JenniferJ
Moderator
947 Views

The compiler's generated binaries are backward/forward compatible in general with several limitations. Please check out the details on this article:  https://software.intel.com/en-us/articles/are-intel-compiler-generated-objectsbinaries-backward-andor-forward-compatible-between

So if you have installed the latest compiler redistributable libs, your applications should run fine. But do test out.

But not sure of MKL. Please post a question to the MKL forum.

Jennifer

0 Kudos
KKats1
Beginner
946 Views

Thanks Jennifer, I am beginning to make sense of that. Am I right that on the production servers we should install the redist package from https://software.intel.com/en-us/articles/redistributables-for-intel-parallel-studio-xe-2015-composer-edition-for-windows (or a future current version), and then I link to the runtime DLLs dynamically, just like I do with MSVC?

0 Kudos
JenniferJ
Moderator
946 Views

Kirill K. wrote:

Thanks Jennifer, I am beginning to make sense of that. Am I right that on the production servers we should install the redist package from https://software.intel.com/en-us/articles/redistributables-for-intel-par... (or a future current version), and then I link to the runtime DLLs dynamically, just like I do with MSVC?

yes, that's right.

0 Kudos
Reply