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'.