Jump to content

ILNumerics: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Updated the latest release date of the project
Altered template type. Add: eprint, class. Removed URL that duplicated identifier. Removed access-date with no URL. Removed parameters. Some additions/deletions were parameter name changes. | Use this tool. Report bugs. | #UCB_Gadget
 
(36 intermediate revisions by 24 users not shown)
Line 4: Line 4:
| screenshot =
| screenshot =
| caption =
| caption =
| developer = ILNumerics
| developer = ILNumerics GmbH
| latest release version = v7.4.56
| latest_release_version = v4.12
| latest_release_date = {{Start date and age|2016|11|11}}
| latest release date = {{Start date and age|2026|06|10}}
| operating_system = [[.NET Framework]]/ [[Mono (software)|Mono]], [[Microsoft Windows|Windows]]
| operating system = [[.NET Framework]] / [[Mono (software)|Mono]], [[Microsoft Windows|Windows]], [[Linux]], [[MacOS]]
| genre = [[List of numerical analysis software|Technical computing]], [[Mathematical software]]
| genre = [[List of numerical-analysis software|Technical computing]], [[Mathematical software]]
| license = [[Proprietary software|proprietary]]
| license = Platform: [[Proprietary software|Proprietary]], Math core: open source ([[MIT License|MIT]])
| website = {{URL|ilnumerics.net}}
| website = {{URL|ilnumerics.net}}
| platform = [[IA-32]], [[x86-64]]
| platform = [[IA-32]], [[x86-64]], AnyCPU
| programming language = [[C Sharp (programming language)|C#]], [[Visual Basic .NET|Visual Basic]]
| programming language = [[C Sharp (programming language)|C#]], [[Visual Basic .NET|Visual Basic]]
}}
}}
'''ILNumerics''' is a mathematical [[Library (computing)|class library]] for [[Common Language Infrastructure]] (CLI) developers and a [[Domain-specific language|domain specific language (DSL)]] for the [[implementation]] of [[numerical analysis|numerical]] [[algorithm]]s on the [[Dotnet framework|.NET platform]]. While [[computer algebra system|algebra systems]] with [[graphical user interface]]s focus on [[Prototype-based programming|prototyping]] of algorithms, implementation of such algorithms into distribution-ready [[Application software|applications]] is done using
'''ILNumerics''' is an [[Open-source software|open-source]] [[Domain-specific language|domain specific language (DSL)]] for the [[implementation]] of [[numerical analysis|numerical]] [[algorithm]]s on the [[.NET Framework|.NET platform]] and the core of the ILNumerics mathematical [[Software development|development platform]] / [[Library (computing)|class library]]. It serves as [[computer algebra system|algebra system]] for .NET developers, focussing on [[Prototype-based programming|prototyping]] of algorithms and their robust implementation into distribution-ready [[Application software|applications]] using [[General-purpose programming language|general purpose programming languages (GPL)]] as [[C Sharp (programming language)|C#]] and [[Visual Basic (.NET)|Visual Basic]]. ILNumerics integrates into [[Visual Studio Debugger|Visual Studio]] and aims at supporting the creation of technical applications in commercial and academic environments.
[[Integrated development environment|development environments]] and [[General-purpose programming language|general purpose programming languages (GPL)]]. ILNumerics is an extension to [[Visual Studio Debugger|Visual Studio]] and aims at supporting the creation of technical applications based on .NET.


==History==
==History==
ILNumerics started in 2006 as an open source project, originating from the Technical University of Berlin.<ref>{{cite web|url=https://www.entrepreneurship.tu-berlin.de/menue/start-ups_events/gruenderstories_start-ups/steckbriefe/steckbrief_ilnumerics |title=Centre for Entrepreneurship: Steckbrief ILNumerics |publisher=Entrepreneurship.tu-berlin.de |date= |accessdate=2016-01-28}}</ref> In 2007 ILNumerics won the [[BASTA! Innovation Awards 2007]]<ref>[http://basta-award.de BASTA! Innovation Award 2007]</ref> as most innovative .NET project in [[Germany]], [[Switzerland]] and [[Austria]]. After 6 years of open source development, the project added a closed source, proprietary license in 2011, aiming business and academic developers at the same time. The project quickly gained popularity (download numbers and engagement at stackoverflow.com,<ref>{{cite web|author=ilnumerics |url=https://www.nuget.org/packages/ILNumerics/ |title=NuGet Gallery &#124; ILNumerics 4.8.0 |publisher=Nuget.org |date= |accessdate=2016-01-28}}</ref><ref>{{cite web|url=https://stackoverflow.com/questions/tagged/ilnumerics |title=Newest 'ilnumerics' Questions |publisher=Stack Overflow |date= |accessdate=2016-01-28}}</ref><ref>{{cite web|url=https://visualstudiogallery.msdn.microsoft.com/9a67b49d-b0b2-4073-97fd-3f18ba08cc61 |title=ILNumerics Ultimate VS extension |publisher=Visualstudiogallery.msdn.microsoft.com |date= |accessdate=2016-01-28}}</ref> download counts from website not available).
ILNumerics started in 2006 as an open source project, originating from [[Technische Universität Berlin]].<ref>{{cite web |url=https://www.entrepreneurship.tu-berlin.de/menue/start-ups_events/gruenderstories_start-ups/steckbriefe/steckbrief_ilnumerics |title=Centre for Entrepreneurship: Steckbrief ILNumerics |publisher=Entrepreneurship.tu-berlin.de |date= |accessdate=2016-01-28 |archive-url=https://web.archive.org/web/20160220184259/https://www.entrepreneurship.tu-berlin.de/menue/start-ups_events/gruenderstories_start-ups/steckbriefe/steckbrief_ilnumerics |archive-date=2016-02-20 |url-status=dead }}</ref> In 2007 ILNumerics won the BASTA! Innovation Award 2007<ref>{{Cite web |url=http://basta-award.de/ |title=BASTA! Innovation Award 2007 |access-date=2008-08-18 |archive-date=2006-02-27 |archive-url=https://web.archive.org/web/20060227144156/http://www.basta-award.de/ |url-status=dead }}</ref> as most innovative .NET project in [[Germany]], [[Switzerland]] and [[Austria]]. After 6 years of open source development, the project added a closed source, proprietary license in 2011, aiming business and academic developers at the same time. The project quickly gained popularity (download numbers and engagement at stackoverflow.com,<ref>{{cite web|author=ilnumerics |url=https://www.nuget.org/profiles/ILNumerics_GmbH |title=NuGet Gallery &#124; ILNumerics 4.8.0 |date= |accessdate=2026-06-10|website=nuget.org}}</ref><ref>{{cite web|url=https://stackoverflow.com/questions/tagged/ilnumerics |title=Newest 'ilnumerics' Questions |publisher=Stack Overflow |date= |accessdate=2016-01-28}}</ref><ref name=":0">{{cite web|url=https://marketplace.visualstudio.com/items?itemName=ILNumericsGmbH.ilnumericsVS600 |title=ILNumerics Ultimate VS Visual Studio Extension |publisher=Microsoft |date= |accessdate=2016-01-28}}</ref> download counts from website not available).
The [[.NET Framework version history|.NET framework]] was selected as a [[Managed code|managed]] foundation, since earlier attempts on the [[Java Platform|Java platform]] had been abandoned due to technical limitations. Similarly, the .NET framework has not been designed with the focus on requirements of technical application development. ILNumerics added interfaces to popular codes ([[LAPACK]], [[FFTW]]), [[complex number]]s and [[Parametric polymorphism|generic]] [[Array data structure#Multidimensional arrays|mult-dimensional array]] classes. In 2010 graphical capabilities have been added. Efforts to increase the performance of the technology were introduced in 2011. At the same time, a company was founded to continue the development. The technological goal is to establish the .NET framework as a feasible alternative to unmanaged [[Programming language C|languages]] for [[Mathematics and Computing Engineering|numeric computing]].
The [[.NET Framework version history|.NET framework]] was selected as a [[Managed code|managed]] foundation, since earlier attempts on the [[Java Platform|Java platform]] had been abandoned due to technical limitations. Similarly, the .NET framework has not been designed with the focus on requirements of technical application development. ILNumerics added interfaces to popular codes ([[LAPACK]], [[Fastest Fourier Transform in the West|FFTW]]), [[complex number]]s and [[Parametric polymorphism|generic]] [[Array data structure#Multidimensional arrays|mult-dimensional array]] classes. In 2010 graphical capabilities have been added. Efforts to increase the performance of the technology were introduced in 2011. At the same time, a company was founded to continue the development.

In 2026 the numerical core of the development platform was [[Open-source software|open-sourced]] into the [[github:ilnumerics/ILNumerics.ONAL|ILNumerics.ONAL]] (Open Numerical Algorithm Language) project and published on [[GitHub]]. It serves as a standard implementation and remains to be maintained by ILNumerics. The ONAL standard aims at providing a vendor-neutral, mature and future-proof foundation for numerical algorithm development on .NET. The language was designed to focus on user friendly semantic and functionality while strictly excluding any performance related aspects. Algorithms written in ILNumerics.ONAL remain independent and functioning without proprietary vendor support, while allowing ONAL compatible compilers effortless automatic acceleration.<ref>{{Cite web |title=Open Numerical Algorithm Language |url=https://github.com/ONAL-lang/ONAL |access-date=2026-06-10 |website=GitHub}}</ref><ref>{{Cite web |title=A Reference Implementation for ONAL (Open Numerical Algorithm Language) |url=https://github.com/ILNumerics/ILNumerics.ONAL |access-date=2026-06-10 |website=GitHub}}</ref>

== ONAL Accelerator Compiler ==
In 2024, the release of ILNumerics version 7.1 introduced the ONAL Accelerator Compiler, a system for the automatic parallelization of numerical array programs written with the ILNumerics DSL.<ref name=":1">{{cite arXiv|last=Kutschbach |first=Haymo |title=A Virtual Processor brings back the Free Lunch |date=2026-06-04 |class=cs.PF |eprint=2605.30507 }}</ref> The compiler addresses a common bottleneck in numerical software development by moving parallelization from manually optimized code fragments to autonomous program-level execution. Instead of requiring the programmer to explicitly coordinate parallel tasks, the compiled program organizes its runtime execution in a decentralized, massively parallel, and self-adapting manner across the available hardware resources.<ref name=":1" />

At runtime, the system identifies independent array operations across function and module boundaries and schedules them for concurrent execution on available compute resources, including CPU cores and GPUs. To enable this, the originally sequential program is decomposed into individual ''segments'', corresponding to single or merged array operations, which are later reassembled for asynchronous, parallel execution. Each array operation carries its own execution logic: it evaluates the expected runtime costs, selects a suitable compute resource, prepares optimized [[OpenCL|kernel code]] for the operation on the selected device, and starts execution as soon as its dependencies are satisfied. In this model, scheduling itself becomes part of the parallelized workload.<ref>{{Cite web |title=ILNumerics Benchmarks |website=[[GitHub]] |url=https://github.com/hokb/decentralized-array-execution-artifacts2026}}</ref>


==Syntax==
==Syntax==
ILNumerics implements base functionality frequently needed for application development in technical areas: N-dimensional arrays, [[complex number]]s, [[linear algebra]], [[Fast Fourier transform|FFT]] and [[Chart|plotting]] [[GUI widget|controls]] (2D and [[3D computer graphics|3D]]). Higher level functionality is provided by toolboxes for interpolation, optimization, statistics, HDF5 and machine learning. The ILNumerics DSL is embedded into .NET. Computational algorithms are formulated using any [[List of CLI languages|CLI language]]. However, only [[C Sharp (programming language)|C#]] and [[Visual Basic .NET|Visual Basic]] are officially supported. Due to the [[type safety|strong type system]] of the .NET framework algorithms created with ILNumerics are strongly typed. This deviates from the syntax of [[Matlab|alternatives]], which are often weakly typed and therefore easier to adopt.
ILNumerics implements base functionality frequently needed for application development in technical areas: N-dimensional [[Array data structure|arrays]], [[complex number]]s, [[linear algebra]], [[Fast Fourier transform|FFT]] and [[Chart|plotting]] [[GUI widget|controls]] (2D and [[3D computer graphics|3D]]). The array classes are fully compatible with the array features of [[MATLAB|Matlab]] and [[NumPy|numpy]], including internal storage order, subarray creation, expansion, and advanced indexing. Higher level functionality is provided by toolboxes for [[interpolation]], [[Mathematical optimization|optimization]], [[statistics]], [[Hierarchical Data Format|HDF5]] and [[machine learning]]. The ILNumerics DSL<ref>{{Cite web |title=Learn ILNumerics.ONAL in Y minutes |url=https://github.com/ILNumerics/ILNumerics.ONAL/blob/main/ilnumerics.md |access-date=2026-06-10 |website=GitHub}}</ref> is embedded into .NET. Computational algorithms are formulated using any [[List of CLI languages|CLI language]]. However, only [[C Sharp (programming language)|C#]] is officially recommended. Due to the [[type safety|strong type system]] of the .NET framework algorithms created with ILNumerics are strongly typed. This deviates from the syntax of [[Matlab|alternatives]], which are often weakly typed and therefore easier to adopt.


==Graphics==
==Graphics==
[[File:Combined Smoothed Height Map in ILNumerics.png|thumb|Array data is visualized as a smoothed, interpolated surface and as a heat map and both versions are combindly displayed.]]
A [[scene graph]] is used in ILNumerics to realize graphical output. Interactive 2D and 3D plots are used in Windows Forms applications. Hardware accelerated drawing is available via [[OpenGL]]. A software renderer is provided for legacy hardware, based on GDI+ and [[Scalable Vector Graphics|SVG]].
A [[scene graph]] is used in ILNumerics to realize graphical output. Interactive 2D and 3D plots are used in WPF and Windows Forms applications. Hardware accelerated drawing is available via [[OpenGL]]. A fully featured software renderer is provided for legacy hardware, based on GDI+, SkiaSharp and [[Scalable Vector Graphics|SVG]].


==IDE integration==
==IDE integration==
ILNumerics is distributed as an extension to [[Visual Studio]]. It adds a tool window to the IDE for the graphical inspection of mathematical objects while stepping through user code.
[[File:ILNumerics debug session in Visual Studio (R).png|thumb|ILNumerics displays array debug data using flexible graphical options while stepping through the code.]]
ILNumerics integrates into [[Visual Studio]]. It adds a tool window to the IDE for the graphical inspection of mathematical objects while stepping through user code.<ref name=":0" />


==Performance==
==Performance==
Since ILNumerics comes as a [[Assembly (CLI)|CLI assembly]], it targets [[Common Language Infrastructure]] (CLI) applications. Just like [[Java (programming language)|Java]] - those frameworks are often criticized for not being suitable for numerical computations. Reasons are the [[Random access memory|memory]] management by a [[Garbage collection (computer science)|garbage collector]], the [[Common Intermediate Language|intermediate language]] execution and deficient optimizations by the [[Compiler optimizations|compilers]] involved. ILNumerics approaches these limitations by performing [[loop unrolling]], [[Bounds-checking elimination|removal of bound checks]] on array accesses and [[Cache-oblivious algorithm|cache optimizations]]. Further speed-up is gained by the auto-management of the memory of large array objects. Numerical operations are [[Parallel computing|parallelized]] on [[Multicore programming|multicore]] systems. Linear algebra routines rely on processor specific optimized versions of [[LAPACK]] and [[BLAS]].
Since ILNumerics comes as a [[Assembly (CLI)|CLI assembly]], it targets [[Common Language Infrastructure]] (CLI) applications. Just like [[Java (programming language)|Java]] - those frameworks are often criticized for not being suitable for numerical computations. Reasons are the [[Random access memory|memory]] management by a [[Garbage collection (computer science)|garbage collector]], the [[Common Intermediate Language|intermediate language]] execution and deficient optimizations by the [[Compiler optimizations|compilers]] involved. ILNumerics approaches these limitations by performing [[loop unrolling]], [[Bounds-checking elimination|removal of bound checks]] on array accesses and [[Cache-oblivious algorithm|cache optimizations]]. Further speed-up is gained by the auto-management of the memory of large array objects. Linear algebra routines rely on processor specific optimized versions of [[LAPACK]] and [[BLAS]].


ILNumerics arrays utilize the [[Virtual memory|unmanaged heap]] for storing data. This way, the [[Big data|size]] of ILNumerics arrays is not [https://blogs.msdn.microsoft.com/joshwil/2005/08/10/bigarrayt-getting-around-the-2gb-array-size-limit/ limited by the CLR] and [[P/invoke|interoperability]] with 3rd party libraries is improved.
== Alternatives ==
{{See also|list of numerical analysis software|comparison of numerical analysis software}}


While these optimizations are suitable to bring algorithms performance on par with unmanaged languages, ILNumerics auto-parallelization adds significant advantage on a higher level of program granularity. The ability to auto-distribute whole array expressions onto parallel computing resources at runtime and the specific approach of ILNumerics in identifying parallel potential beyond simple loop bodies gains unique execution efficiency – at the same time removing optimization burden from the programmer.<ref>{{Cite web |date=2026-06-10 |title=The ILNumerics Accelerator Compiler |url=https://ilnumerics.net/ilnumerics-accelerator-compiler.html |website=ilnumerics.net}}</ref>
Some algebraic systems come with compiler extensions for native code/C code generation. One example here is Matlab's Compiler. In conjunction with the .NET Builder of the same vendor it is possible to interface .NET applications. Other projects aim the .NET platform, namely: dnanalytics, NMath, NAG and Visual Numerics' IMSL.
A list of alternatives on other platforms include [[NumPy]]/[[SciPy]], [[R (programming language)|R]] and the [[Julia (programming language)|Julia]], all of which require their own compiler infrastructure to be installed and distributed. Library extensions exist for [[C++]] and [[JavaScript]] with [[IT++]], [[Boost (C++ libraries)|Boost]] and Numeric.js.


==See also==
==See also==
⚫
*[[List of numerical-analysis software]]
*[[List of numerical libraries]]
*[[List of numerical libraries]]
⚫
*[[Comparison of numerical analysis software]]


==References==
==References==
{{reflist}}
{{Reflist}}


==External links==
==External links==
Line 54: Line 60:


{{DEFAULTSORT:Ilnumerics.Net}}
{{DEFAULTSORT:Ilnumerics.Net}}
⚫
[[Category:Array programming languages]]
⚫
[[Category:Numerical programming languages]]
⚫
[[Category:Mathematical software]]
⚫
[[Category:Unix programming tools]]
⚫
[[Category:Numerical analysis software for Linux]]
⚫
[[Category:Numerical analysis software for MacOS]]
⚫
[[Category:Numerical analysis software for Windows]]
⚫
[[Category:Computer vision software]]
[[Category:3D graphics software]]
[[Category:3D graphics software]]
⚫
[[Category:OpenGL]]
[[Category:3D scenegraph APIs]]
[[Category:3D scenegraph APIs]]
[[Category:Science software]]
[[Category:Array programming languages]]
[[Category:C Sharp libraries]]
[[Category:C Sharp libraries]]
⚫
[[Category:Computer vision software]]
[[Category:Data analysis software]]
[[Category:Data analysis software]]
[[Category:Data visualization software]]
[[Category:Data and information visualization software]]
[[Category:Object-oriented programming languages]]
[[Category:Mathematical software]]
⚫
[[Category:Numerical analysis software for Linux]]
⚫
[[Category:Numerical analysis software for macOS]]
⚫
[[Category:Numerical analysis software for Windows]]
[[Category:Numerical linear algebra]]
[[Category:Numerical linear algebra]]
⚫
[[Category:Numerical programming languages]]
⚫
[[Category:Object-oriented programming languages]]
⚫
[[Category:OpenGL]]
[[Category:Parallel computing]]
[[Category:Parallel computing]]
⚫
[[Category:Science software]]
⚫
[[Category:Unix programming tools]]

Latest revision as of 13:07, 19 July 2026

ILNumerics
DeveloperILNumerics GmbH
Stable release
v7.4.56 / June 10, 2026; 4 months ago (2026-06-10)
Written inC#, Visual Basic
Operating system.NET Framework / Mono, Windows, Linux, MacOS
PlatformIA-32, x86-64, AnyCPU
TypeTechnical computing, Mathematical software
LicensePlatform: Proprietary, Math core: open source (MIT)
Websiteilnumerics.net

ILNumerics is an open-source domain specific language (DSL) for the implementation of numerical algorithms on the .NET platform and the core of the ILNumerics mathematical development platform / class library. It serves as algebra system for .NET developers, focussing on prototyping of algorithms and their robust implementation into distribution-ready applications using general purpose programming languages (GPL) as C# and Visual Basic. ILNumerics integrates into Visual Studio and aims at supporting the creation of technical applications in commercial and academic environments.

History

[edit | edit source]

ILNumerics started in 2006 as an open source project, originating from Technische Universität Berlin.[1] In 2007 ILNumerics won the BASTA! Innovation Award 2007[2] as most innovative .NET project in Germany, Switzerland and Austria. After 6 years of open source development, the project added a closed source, proprietary license in 2011, aiming business and academic developers at the same time. The project quickly gained popularity (download numbers and engagement at stackoverflow.com,[3][4][5] download counts from website not available). The .NET framework was selected as a managed foundation, since earlier attempts on the Java platform had been abandoned due to technical limitations. Similarly, the .NET framework has not been designed with the focus on requirements of technical application development. ILNumerics added interfaces to popular codes (LAPACK, FFTW), complex numbers and generic mult-dimensional array classes. In 2010 graphical capabilities have been added. Efforts to increase the performance of the technology were introduced in 2011. At the same time, a company was founded to continue the development.

In 2026 the numerical core of the development platform was open-sourced into the ILNumerics.ONAL (Open Numerical Algorithm Language) project and published on GitHub. It serves as a standard implementation and remains to be maintained by ILNumerics. The ONAL standard aims at providing a vendor-neutral, mature and future-proof foundation for numerical algorithm development on .NET. The language was designed to focus on user friendly semantic and functionality while strictly excluding any performance related aspects. Algorithms written in ILNumerics.ONAL remain independent and functioning without proprietary vendor support, while allowing ONAL compatible compilers effortless automatic acceleration.[6][7]

ONAL Accelerator Compiler

[edit | edit source]

In 2024, the release of ILNumerics version 7.1 introduced the ONAL Accelerator Compiler, a system for the automatic parallelization of numerical array programs written with the ILNumerics DSL.[8] The compiler addresses a common bottleneck in numerical software development by moving parallelization from manually optimized code fragments to autonomous program-level execution. Instead of requiring the programmer to explicitly coordinate parallel tasks, the compiled program organizes its runtime execution in a decentralized, massively parallel, and self-adapting manner across the available hardware resources.[8]

At runtime, the system identifies independent array operations across function and module boundaries and schedules them for concurrent execution on available compute resources, including CPU cores and GPUs. To enable this, the originally sequential program is decomposed into individual segments, corresponding to single or merged array operations, which are later reassembled for asynchronous, parallel execution. Each array operation carries its own execution logic: it evaluates the expected runtime costs, selects a suitable compute resource, prepares optimized kernel code for the operation on the selected device, and starts execution as soon as its dependencies are satisfied. In this model, scheduling itself becomes part of the parallelized workload.[9]

Syntax

[edit | edit source]

ILNumerics implements base functionality frequently needed for application development in technical areas: N-dimensional arrays, complex numbers, linear algebra, FFT and plotting controls (2D and 3D). The array classes are fully compatible with the array features of Matlab and numpy, including internal storage order, subarray creation, expansion, and advanced indexing. Higher level functionality is provided by toolboxes for interpolation, optimization, statistics, HDF5 and machine learning. The ILNumerics DSL[10] is embedded into .NET. Computational algorithms are formulated using any CLI language. However, only C# is officially recommended. Due to the strong type system of the .NET framework algorithms created with ILNumerics are strongly typed. This deviates from the syntax of alternatives, which are often weakly typed and therefore easier to adopt.

Graphics

[edit | edit source]
Array data is visualized as a smoothed, interpolated surface and as a heat map and both versions are combindly displayed.

A scene graph is used in ILNumerics to realize graphical output. Interactive 2D and 3D plots are used in WPF and Windows Forms applications. Hardware accelerated drawing is available via OpenGL. A fully featured software renderer is provided for legacy hardware, based on GDI+, SkiaSharp and SVG.

IDE integration

[edit | edit source]
ILNumerics displays array debug data using flexible graphical options while stepping through the code.

ILNumerics integrates into Visual Studio. It adds a tool window to the IDE for the graphical inspection of mathematical objects while stepping through user code.[5]

Performance

[edit | edit source]

Since ILNumerics comes as a CLI assembly, it targets Common Language Infrastructure (CLI) applications. Just like Java - those frameworks are often criticized for not being suitable for numerical computations. Reasons are the memory management by a garbage collector, the intermediate language execution and deficient optimizations by the compilers involved. ILNumerics approaches these limitations by performing loop unrolling, removal of bound checks on array accesses and cache optimizations. Further speed-up is gained by the auto-management of the memory of large array objects. Linear algebra routines rely on processor specific optimized versions of LAPACK and BLAS.

ILNumerics arrays utilize the unmanaged heap for storing data. This way, the size of ILNumerics arrays is not limited by the CLR and interoperability with 3rd party libraries is improved.

While these optimizations are suitable to bring algorithms performance on par with unmanaged languages, ILNumerics auto-parallelization adds significant advantage on a higher level of program granularity. The ability to auto-distribute whole array expressions onto parallel computing resources at runtime and the specific approach of ILNumerics in identifying parallel potential beyond simple loop bodies gains unique execution efficiency – at the same time removing optimization burden from the programmer.[11]

See also

[edit | edit source]

References

[edit | edit source]
  1. ↑ "Centre for Entrepreneurship: Steckbrief ILNumerics". Entrepreneurship.tu-berlin.de. Archived from the original on 2016-02-20. Retrieved 2016-01-28.
  2. ↑ "BASTA! Innovation Award 2007". Archived from the original on 2006-02-27. Retrieved 2008-08-18.
  3. ↑ ilnumerics. "NuGet Gallery | ILNumerics 4.8.0". nuget.org. Retrieved 2026-06-10.
  4. ↑ "Newest 'ilnumerics' Questions". Stack Overflow. Retrieved 2016-01-28.
  5. 1 2 "ILNumerics Ultimate VS Visual Studio Extension". Microsoft. Retrieved 2016-01-28.
  6. ↑ "Open Numerical Algorithm Language". GitHub. Retrieved 2026-06-10.
  7. ↑ "A Reference Implementation for ONAL (Open Numerical Algorithm Language)". GitHub. Retrieved 2026-06-10.
  8. 1 2 Kutschbach, Haymo (2026-06-04). "A Virtual Processor brings back the Free Lunch". arXiv:2605.30507 [cs.PF].
  9. ↑ "ILNumerics Benchmarks". GitHub.
  10. ↑ "Learn ILNumerics.ONAL in Y minutes". GitHub. Retrieved 2026-06-10.
  11. ↑ "The ILNumerics Accelerator Compiler". ilnumerics.net. 2026-06-10.
[edit | edit source]