ILNumerics ist eine Open-Source- Domänenspezifische Sprache (DSL) zur Implementierung numerischer Algorithmen auf der .NET-Plattform und der Kern der mathematischen Entwicklungsplattform bzw. Klassenbibliothek ILNumerics . Sie dient .NET-Entwicklern als Algebrasystem und konzentriert sich auf die Entwicklung von Prototypen für Algorithmen sowie deren robuste Implementierung in verteilungsfertige Anwendungen unter Verwendung von Allzweckprogrammiersprachen (GPL) wie C# und Visual Basic . ILNumerics ist in Visual Studio integriert und unterstützt die Erstellung technischer Anwendungen im kommerziellen und akademischen Umfeld.
Geschichte
ILNumerics startete 2006 als Open-Source-Projekt an der Technischen Universität Berlin . [ 1 ] 2007 gewann ILNumerics den BASTA! Innovationspreis [ 2 ] als innovativstes .NET-Projekt in Deutschland , der Schweiz und Österreich . Nach sechs Jahren Open-Source-Entwicklung wurde das Projekt 2011 unter einer Closed-Source-Lizenz veröffentlicht, um sowohl Entwickler aus der Wirtschaft als auch aus der Wissenschaft anzusprechen. ILNumerics erfreute sich schnell großer Beliebtheit (Downloadzahlen und Interaktionen auf stackoverflow.com [ 3 ] [ 4 ] [ 5 ] – Downloadzahlen von der Website nicht verfügbar). Das .NET Framework wurde als Grundlage gewählt , da frühere Versuche auf der Java-Plattform aufgrund technischer Einschränkungen abgebrochen werden mussten. Auch das .NET Framework wurde nicht mit Fokus auf die Anforderungen der technischen Anwendungsentwicklung konzipiert. ILNumerics erweiterte sein Portfolio um Schnittstellen zu gängigen Codes ( LAPACK , FFTW ), komplexe Zahlen und generische mehrdimensionale Array- Klassen. 2010 wurden grafische Funktionen hinzugefügt. Im Jahr 2011 wurden Anstrengungen unternommen, die Leistungsfähigkeit der Technologie zu steigern. Gleichzeitig wurde ein Unternehmen gegründet, um die Entwicklung fortzusetzen.
Im Jahr 2026 wurde der numerische Kern der Entwicklungsplattform als Open Source im Projekt ILNumerics.ONAL (Open Numerical Algorithm Language) veröffentlicht und auf GitHub bereitgestellt. Er dient als Standardimplementierung und wird weiterhin von ILNumerics gepflegt . Der ONAL-Standard zielt darauf ab, eine herstellerneutrale, ausgereifte und zukunftssichere Grundlage für die Entwicklung numerischer Algorithmen unter .NET zu schaffen. Die Sprache wurde mit Fokus auf benutzerfreundliche Semantik und Funktionalität entwickelt und schließt jegliche Performance-Aspekte strikt aus. In ILNumerics.ONAL geschriebene Algorithmen bleiben unabhängig und funktionieren ohne proprietäre Herstellerunterstützung, während ONAL-kompatible Compiler eine mühelose automatische Beschleunigung ermöglichen. [ 6 ] [ 7 ]
ONAL Accelerator Compiler
Mit der Veröffentlichung von ILNumerics Version 7.1 im Jahr 2024 wurde der ONAL Accelerator Compiler eingeführt, ein System zur automatischen Parallelisierung numerischer Array-Programme, die mit der ILNumerics-DSL geschrieben wurden. [ 8 ] Der Compiler behebt einen häufigen Engpass in der numerischen Softwareentwicklung, indem er die Parallelisierung von manuell optimierten Codefragmenten auf die autonome Programmausführung verlagert. Anstatt dass der Programmierer parallele Aufgaben explizit koordinieren muss, organisiert das kompilierte Programm seine Laufzeitausführung dezentral, massiv parallel und selbstadaptiv über die verfügbaren Hardware-Ressourcen. [ 8 ]
Zur Laufzeit identifiziert das System unabhängige Array-Operationen über Funktions- und Modulgrenzen hinweg und plant deren parallele Ausführung auf verfügbaren Rechenressourcen, einschließlich CPU-Kernen und GPUs. Dazu wird das ursprünglich sequentielle Programm in einzelne Segmente zerlegt , die einzelnen oder zusammengeführten Array-Operationen entsprechen und später für die asynchrone, parallele Ausführung wieder zusammengesetzt werden. Jede Array-Operation verfügt über eine eigene Ausführungslogik: Sie berechnet die erwarteten Laufzeitkosten, wählt eine geeignete Rechenressource aus, bereitet optimierten Kernel-Code für die Operation auf dem ausgewählten Gerät vor und startet die Ausführung, sobald ihre Abhängigkeiten erfüllt sind. In diesem Modell wird die Planung selbst Teil der parallelisierten Arbeitslast. [ 9 ]
Syntax
ILNumerics implementiert Basisfunktionen, die häufig für die Anwendungsentwicklung in technischen Bereichen benötigt werden: N-dimensionale Arrays , komplexe Zahlen , lineare Algebra , FFT und Plotfunktionen (2D und 3D ). Die Array - Klassen sind vollständig kompatibel mit den Array-Funktionen von Matlab und NumPy , einschließlich interner Speicherreihenfolge, Subarray-Erstellung, -Erweiterung und erweiterter Indizierung. Erweiterte Funktionen werden durch Toolboxes für Interpolation , Optimierung , Statistik , HDF5 und maschinelles Lernen bereitgestellt . Die ILNumerics-DSL [ 10 ] ist in .NET integriert. Berechnungsalgorithmen können mit jeder beliebigen CLI-Sprache formuliert werden . Offiziell wird jedoch nur C# empfohlen. Dank des starken Typsystems des .NET Frameworks sind mit ILNumerics erstellte Algorithmen stark typisiert. Dies unterscheidet sich von der Syntax alternativer Ansätze , die oft schwach typisiert und daher leichter zu implementieren sind.
Grafik

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

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
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
References
- ^"Centre for Entrepreneurship: Steckbrief ILNumerics". Entrepreneurship.tu-berlin.de. Archived from the original on 2016-02-20. Retrieved 2016-01-28.
- ^ „BASTA! Innovationspreis 2007“ . Archiviert vom Original am 27.02.2006 . Abgerufen am 18.08.2008 .
- ^ ilnumerics. „NuGet Gallery | ILNumerics 4.8.0“ . nuget.org . Abgerufen am 10. Juni 2026 .
- ^ „Neueste Fragen zu 'ilnumerics'“ . Stack Overflow . Abgerufen am 28.01.2016 .
- ^ a b „ILNumerics Ultimate VS Visual Studio Extension“ . Microsoft . Abgerufen am 28.01.2016 .
- ^ „Open Numerical Algorithm Language“ . GitHub . Abgerufen am 10.06.2026 .
{{cite web}}: CS1 maint: url-status ( link ) - ^ „Eine Referenzimplementierung für ONAL (Open Numerical Algorithm Language)“ . GitHub . Abgerufen am 10.06.2026 .
{{cite web}}: CS1 maint: url-status ( link ) - ^ a b Kutschbach, Haymo (2026-06-04), A Virtual Processor brings back the Free Lunch , arXiv, doi : 10.48550/arXiv.2605.30507 , arXiv:2605.30507 , abgerufen am 10.06.2026
- ^ "ILNumerics Benchmarks" .
- ^ „Lerne ILNumerics.ONAL in Y Minuten“ . GitHub . Abgerufen am 10.06.2026 .
{{cite web}}: CS1 maint: url-status ( link ) - ^ „Der ILNumerics Accelerator Compiler“ . ilnumerics.net . 10.06.2026.