ILNumerics - Technical Computing Tools

High Performance Framework for Visualization

and Computing in Industry and Science

 

tgt

Computing Engine for .NET (C# and Visual Basic)

Focus on the math - we do the rest! The ILNumerics Computing Engine has been developed for scientists and engineers. We spent a lot of effort to make implementation of your mathematical algorithms as simple and efficient as possible while retaining flexibility and performance.

 

  1. Transform your Matlab or Octave algorithms in no time and benefit from a substantial speed-up: Cheat Sheet
  2. Comprehensive selection of optimized toolboxes for interpolation, statistics, optimization, and more.
  3. Exploit multi-core hardware with our built-in parallel functions. Learn more
  4. Code once and run your executable on any type of hardware
  5. No IT expert knowledge needed

 

High Performance for .NET

You know your math better than we do! We know how to make it fast! The Computing Engine releases you from having to deal with any native language- and computer architecture subtleties: processor caches, memory bandwidth, hard to find pointer bugs, multithreading concurrency issues, complicated APIs. Often enough the complexity of the actual mathematical task is superseeded by the complexity of efficiently dealing with heterogeneous computing resources.

Our goal is to give you the exact result in the shortest possible time. So you can stay in your domain and get the job done much more easily and in a fraction of time. By allowing to use an expressive syntax based on smart arrays you and your peers will easily understand the code when coming back to it next year.

Some more advantages of ILNumerics:

  • Transparent optimizations: loop unrolling, cache optimizations, array bound check removal 
  • Memory management: transparent reusage of array storages, (0% time wasted in GC)
  • Auto parallelization: all built-in functions utilizing multicores
  • Readily available high level interfaces to many standard numerical functionality, like FFT and matrix algebra.

Read more about the ILNumerics technology.

Clear and Simple Syntax

The ILNumerics Computing Engine extends popular .NET languages by convenient mathematical objects and functions. It supports the implementation and execution of virtually any numerical algorithms in a syntax similar to popular mathematical prototyping systems. Users familiar with Matlab® & Co. experience almost no learning curve. Nevertheless, ILNumerics is not a scripting language but stable enterprise technology!

Consider adding two large matrices and creating the column sums. Let's compare a straightforward C implementation with ILNumerics:

ILNumerics' version is not only much shorter. It is also faster:

Execution times, 2000 x 2000 double matrix, sum over columns, 100 repetitions:

C Version:     8020 ms                                            

ILNumerics:    5770 ms                                

The syntax of the ILNumerics Computing Engine includes all standard features used in the scientific community: n-dimensional arrays, flexible subarray creation and manipulation, large collection of algebraic functions as building blocks for own algorithms. Many customers value the simple and straightforward translation of existing scripts from Matlab, Octave, FreeMat, Scilab etc. into ILNumerics.

 

Quick Charts

ILNumerics Arrays Usage (PNG)

ILNumerics Array Usage (PDF)

ILNumerics for Matlab Users (PNG)

ILNumerics for MatlabUsers (PDF)

Read the Arrays Documentation

Find out more about our technology

 

Compatibility

The ILNumerics Computing Engine sits on top of the .NET framework and can be used with any .NET language as a common part of your application. We recommend C# due to its unique short syntax. Resulting modules are pure .NET assemblies. No special integration is necessary. They can be run on any machine supporting .NET or mono (support is provided for .NET (Windows) only).

ILNumerics Computing Engine algorithms target "AnyCPU": once built they run on 32 and 64 bit platforms without recompilation. Native packages (MKL, HDF5, etc.) are maintained and provided where applicable.