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.
- Transform your numpy, Matlab or Octave algorithms in much less time and benefit from a substantial speed-up: Cheat Sheet
- Comprehensive selection of optimized toolboxes for interpolation, statistics, optimization, and more.
- Exploit multi-core hardware with our built-in parallel functions. Learn more
- Code once and run your executable on any type of hardware supported by .NET.
- Leverage expert performance without expert architecture knowledge.
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 - or the year after.
More advantages of ILNumerics:
- Memory management: transparent reusage of array storages, (0% time wasted in GC)
- Removes managed heap size limitations in .NET: ILNumerics arrays can grow far beyond 2GB.
- Transparent optimizations: loop unrolling, cache optimizations, array bound check removal.
- Auto parallelization: all built-in functions are utilizing multiple cores already. And our team will soon publish the first and only general solution for efficient, automatic parallelization for all your devices.
- 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 numpy, Matlab® & Co. experience almost no learning curve. Nevertheless, ILNumerics is not a scripting language but stable production-ready 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 numpy, Matlab, Octave, FreeMat, Scilab, Julia, etc. ... into ILNumerics.
|ILNumerics for Matlab Users (PNG)|
Find out more about our technology
The ILNumerics Computing Engine sits on top of the .NET infrastructure and can be used with C# or Visual Basic in projects targeting .NET Framework or .NET Core. Resulting modules are .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 provided for both Windows platforms where applicable.