Integrating LAPACK libraries

Even if ILNumerics.Net was designed to be used from within .NET framework, it nevertheless makes use of optimized, platform specific, native libraries. Lineare algebra functions are performed inside LAPACK and BLAS libraries. Those libraries reflect the state of the art of sophisticated algorithms and should therefore be used whenever possible. Several vendors like AMD and INTEL have published individual versions of those libraries, which are highly optimized for it's particular platform.

ILNumerics.Net makes use of those libraries, whenever possible. In the case of AMD ( UPDATE! ) and Intel(!) processors, this is automatically done on the first use of any static function of the ILNumerics.BuiltInFunctions.ILMath class. For other processors, a generic version of the BLAS/ LAPACK function is used.

However, if you are using a type of processor other than currently supported, you can easily extend ILNumerics.Net for using an optimized version instead of the generic one.

Integrating user defined LAPACK libraries

In order to integrate your own user defined native LAPACK library, you will have to implement the interface manually. The interface for ILNumerics.Net to LAPACK is called ILNumerics.Native.IILLapack. You will have to create your own class implementation, serving this interface and calling your native dll[s] for all functions included. Some LAPACK distributions handle determination of size, creation and destruction of working arrays on their own - some will not. Keep an eye on your specific implementation.

After implementing the interface, make sure, your native LAPACK is accessible from ILNumerics.Net.dll

Place the following line somewhere at beginning of your code:

ILNumerics.BuiltInFunctions.ILMath.Lapack = new [YourClassName]();

This will direct all calls to any LAPACK function to to your LAPACK implementation afterwards.


Valid CSS! Valid XHTML 1.0 Transitional