Community
cancel
Showing results for 
Search instead for 
Did you mean: 
KKats1
Beginner
155 Views

Installing redistributable DLLs (Windows)

Jump to solution

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
155 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-ando...

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

3 Replies
JenniferJ
Moderator
156 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-ando...

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

KKats1
Beginner
155 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-compose... (or a future current version), and then I link to the runtime DLLs dynamically, just like I do with MSVC?

JenniferJ
Moderator
155 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.

Reply