ILNumerics - Technical Computing Tools

High Performance Framework for Visualization

and Computing in Industry and Science

 

tgt

Redistributing ILNumerics® with your Applications

When it comes to distributing your application, built with ILNumerics components, you have to make sure to also distribute all dependencies needed by ILNumerics at runtime. This section gives a guidance.

In order to ensure a smooth installation experience for customers of your applications, we recommend Windows Installer. If you are new to Windows Installer – be patient and invest the time to get used to it! It can be quite challenging but eventually provides the best (in our opinion) flexibility and stability – when applied correctly. Here is a good starting point:

Windows Installer Toolkit: http://wix.tramontana.co.hu/

ILNumerics® Redistributables

For redistributing your applications, the following files may need to get rolled out to your customers. In general, only files are redistributable which are listed in the file redist.txt from your installation package (found in the installation dir). Depending on the functionality provided by your application not all files will be needed:

Filename, Location

What is it?

only needed for ...

.NET Assemblies: [InstallDir]\Distribution Files\.NET Assemblies\

ILNumerics.Core.dll

 

 

 

core module

Always needed! Computing Engine, Visualization Engine, HDF5 module, optimizer toolbox,...

System.Runtime.CompilerServices.Unsafe core dependency (since version 5) always required.
ILNumerics.Computing.dll Computing Engine All methods of the ILMath class. 
ILNumerics.numpy numpy API Numpy array extensions and numpy array style. 
ILNumerics.Drawing.dll Visualization Engine All visualization classes, Panel. Everything inside the ILNumerics.Drawing namespace.
ILNumerics.Toolboxes.Statistics.dll Statistics Toolbox Statistical distributions, static methods of the ILNumerics.Toolboxes.Statistics class.
ILNumerics.Toolboxes.MachineLearning.dll Machine Learning Toolbox Static methods of the ILNumerics.Toolboxes. MachineLearning class.

OpenTK.dll, OpenTK.GLControl.dll

 

 

modules for OpenGL bindings

Visualization Engine

ILNumerisc.IO.HDF5.dll

HDF5 API

HDF5 modules

HDF.PInvoke.dll

Low level managed HDF5 PInvoke definitions

HDF5 modules (from vers. 4.12)

ILNumerics.Toolboxes.Optimization.dll Optimization Toolbox Assembly Optimization functions
ILNumerics.Toolboxes.Interpolation.dll Interpolation Toolbox Assembly Interpolation functions
ILNumerics.Toolboxes.Drawing2 Drawing Extensions Assembly Extended plot objects and plotting functions

Native x86 dynamic link libraries: [InstallDir]\Distribution Files\bin32\

hdf5.dll, hdf5_hl.dll

 

 

HDF5 API (x86)

HDF5 modules (DLL names changed in 4.12 !)

zlib.dll, szip.dll

 

 

HDF5 API (x86)

HDF5 compression support

libiomp5md.dll, mkl_custom.dll

 

 

Fortran modules, processor optimized LAPACK, BLAS support (x86)

Computing Engine,

Optimizer Toolbox, Interpolation Toolbox

minpack.dll, sminpack.dll

Fortran implementation of minpack, double + single precision, x86

Optimization toolbox

Native 64 bit dynamic link libraries: [InstallDir]\Distribution Files\bin64\

hdf5.dll, hdf5_hl.dll

 

 

HDF5 API (x64)

HDF5 modules (DLL names changed in 4.12 !)

zlib.dll, szip.dll

 

 

HDF5 API (x64)

HDF5 compression support

libiomp5md.dll, mkl_custom.dll

 

 

 

Fortran modules, processor optimized LAPACK, BLAS support (x64)

Computing Engine,

Optimization Toolbox, Interpolation Toolbox

minpackdll, sminpack.dll

 

 

 

 

Fortran implementation of minpack, double + single precision (x64)

Optimization toolbox

Installation Targets

Two fundamentally different distribution schemes exist for Windows applications: global and local installations. ILNumerics plays well with both.

Global Installations

For a global installation (recommended) you will install all dependencies globally on the customer machine. Only one copy will be needed and used for all applications potentially running on that system. Administrative privileges will be required in order to install globally.

Native libraries are installed globally in the corresponding system folders:

Source DLL Platform / Bitrate Target OS Bitrate Target Path
32 bit dlls 32 [Windows]\System32
32 bit dlls 64 [Windows]\SysWOW64
64 bit dlls 64 [Windows]\System32

All required .NET assemblies should be installed into the GAC for a global installation.

Local Installations

If no administrative priviliges are available or if for other reasons the installation cannot be done globally, consider making all dependencies available locally. Therefore, place all binaries into a folder, which will be available at runtime to your program.

See: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586%28v=vs.85%29.aspx

Commonly, the binaries are placed into the same folder your application executable lays in. Read below for details how to make this scheme work with AnyCPU deployments.

Any CPU Plattform Support

ILNumerics.dll is an AnyCPU assembly. This allows you to support multiple platforms by a single program: x86 and x64 platform. Whether your application runs as x86 or as x64 process is only decided at the time it is started by the end user. However, as you know, that convenience is only available for managed assemblies. All native dependencies (as listed above) are still specific to each platform.

In order to enable the loading of the correct native dependency by ILNumerics.dll and by other .NET assemblies at runtime, ILNumerics uses certain tricks to pick the right native dll at runtime. No issues arise, if you decide to do a global installation. The native dlls are placed into seperate folders on the target system in that case. Windows ensures that the correct folder is targeted by your application automatically.

Enabling local installations with native binaries in an AnyCPU scenario is more challenging. We cannot simply place the native dlls into the same application folder since – obviously – they have the same names and would override each other. Therefore, ILNumerics expects native binaries in individual subfolders named „bin32“ and „bin64“. Read more details here:

http://ilnumerics.net/blog/anycpu-computing-limping-platform-specific-targets-and-a-happy-deployment-end/

Further Dependencies

3rd party dependencies:

  • Microsoft Visual C++ Runtime (Visual Studio 2013) MSVCRT120.dll. It is recommended to install the VC runtime binaries via the official installer packages, which are available at: http://support.microsoft.com/kb/2019667
  • System.Runtime.CompilerServices.Unsafe is used within the Core module. This depencency is required by all aplications utilizing ILNumerics Ultimate VS since version 5.