This guide documents the procedures for the deployment and
configuration of applications built using the
Extreme Optimization Numerical
Libraries for .NET.
Redistributable files
The following files may be distributed as part of your
application:
-
Main assembly:
- installDir/bin/Extreme.Numerics.Net40.dll
-
Assemblies supporting specific functionality:
- installDir/bin/Extreme.Generic.Net40.dll
- installDir/bin/Extreme.Numerics.SinglePrecision.Net40.dll
-
Native linear algebra and signal processing libraries (double
precision)
- installDir/bin/Extreme.LinearAlgebra.Net40.x64.Parallel.dll
- installDir/bin/Extreme.LinearAlgebra.Net40.x64.Serial.dll
- installDir/bin/Extreme.LinearAlgebra.Net40.x86.Parallel.dll
- installDir/bin/Extreme.LinearAlgebra.Net40.x86.Serial.dll
- installDir/bin/Extreme.SignalProcessing.Net40.x64.Parallel.dll
- installDir/bin/Extreme.SignalProcessing.Net40.x64.Serial.dll
- installDir/bin/Extreme.SignalProcessing.Net40.x86.Parallel.dll
- installDir/bin/Extreme.SignalProcessing.Net40.x86.Serial.dll
-
Native linear algebra and signal processing libraries (single
precision)
- installDir/bin/Extreme.LinearAlgebraSP.Net40.x64.Parallel.dll
- installDir/bin/Extreme.LinearAlgebraSP.Net40.x64.Serial.dll
- installDir/bin/Extreme.LinearAlgebraSP.Net40.x86.Parallel.dll
- installDir/bin/Extreme.LinearAlgebraSP.Net40.x86.Serial.dll
- installDir/bin/Extreme.SignalProcessingSP.Net40.x64.Parallel.dll
- installDir/bin/Extreme.SignalProcessingSP.Net40.x64.Serial.dll
- installDir/bin/Extreme.SignalProcessingSP.Net40.x86.Parallel.dll
- installDir/bin/Extreme.SignalProcessingSP.Net40.x86.Serial.dll
-
Intel Threading Libraries
- installDir/bin/x64/libiomp5md.dll
- installDir/bin/x86/libiomp5md.dll
What to deploy
Not all redistributable files need to be installed with your
application. In fact, most installations will require just the main assembly,
with optionally two or three more native assemblies.
-
All installations require the Extreme.Numerics.Net40.dll
assembly.
-
If you use any of the generic classes, you also require
Extreme.Generic.Net40.dll.
-
If you use any of the classes that are specialized for
single-precision floating-point numbers, you also require
Extreme.Numerics.SinglePrecision.Net40.dll.
The Extreme Optimization Numerical Libraries for .NET
also contain several sets of highly optimized native libraries built on
Intel®’s Math Kernel Library. There is a total of 18 files, including 16 .NET
assemblies and 2 supporting dll’s that fall into this category. The native
assemblies follow this naming scheme:
Extreme.category.
.NET version
.platform.parallelization.dll
The meaning of the parts is the following:
- category
-
the type of computations performed by the
assembly. There are currently 4 possibilities:
- LinearAlgebra:
vector and matrix functions
- LinearAlgebraSP:
vector and matrix functions (single precision)
- SignalProcessing:
FFT and other DSP functions
- SignalProcessingSP:
FFT and other DSP functions (single precision)
- .NET version
-
currently, this is always Net40,
indicating that the library requires version 4.0 or later of the .NET runtime.
- Platform
-
indicates the processor architecture for which
the code was optimized. Possible values are x86 and x64.
- Parallelization
-
indicates whether the assembly uses parallelization.
Possible values are serial and parallel.
In addition, there are two supporting assemblies, one for each
platform, that contain the shared threading library for the Intel Math Kernel
Libraries. Both are called libiomp5md.dll. They can be found
in the x86 and x64 folders under
the bin folder. This file is needed by the parallel
version of the native libraries.
You only need to deploy the assemblies you actually use. For
example, most applications will not use any of the single precision types, and
so won’t require the *.LinearAlgebraSP.* or *.SignalProcessingSP.*
assemblies. If you don’t use any FFT’s, you don’t need the signal processing
assemblies, either. The native libraries only give an advantage when working
with larger problems. If your problems are relatively small, the native
libraries may be of no benefit to you and there is no reason to deploy them
with your application.
Finally, you need to decide on whether to deploy the serial
or parallel version of the libraries. As a rule:
-
If your application is multi-threaded, and calls the
Extreme Optimization Numerical Libraries for .NET
from multiple threads, you should use the serial library.
-
If your application only calls the
Extreme Optimization Numerical Libraries for .NET
from a single thread, you can safely use the parallel
library.