Zum Inhalt springen

ILNumerics

aus Wikipedia, der freien Enzyklopädie
ILNumerics
Basisdaten

Entwickler ILNumerics GmbH
Erscheinungsjahr 2006
Aktuelle Version 7.4 (10.12.2025)
Betriebssystem Unix, Linux, BSD-Derivate, Windows, macOS und Solaris 8
Programmier­sprache CSharp, Visual Basic
Kategorie Mathematik
Lizenz proprietär
ilnumerics.net

ILNumerics ist eine Programmbibliothek, die eine numerische Array Sprache mit Funktionen für mathematische Berechnungen auf der .NET-Plattform bereitstellt, um komplexe numerische Algorithmen direkt in einer General Purpose Language der .NET Familie zu formulieren.

ILNumerics erweitert das .Net-Framework um komplexe Zahlen, ermöglicht das Rechnen mit Skalaren, Vektoren, Matrizen oder beliebig dimensionalen Daten. Diese Arrays bieten alle Möglichkeiten der Manipulationen und Operationen, wie sie im mathematischen Umfeld etabliert sind. Häufig benötigte Algorithmen der linearen Algebra, zum Beispiel lineare Gleichungssysteme, Eigenwerte und -vektoren, sowie FFT-Funktionen sind ebenso implementiert wie interaktive UI-Controls zur visuellen Ausgabe in 2D und 3D und Toolboxes für Interpolation, Optimierung und Statistik. Für lineare Algebra-Routinen wurden die robusten LAPACK-Bibliotheken des MIT zu .NET übersetzt, sowie prozessoroptimierte Implementierungen (MKL) eingebunden.

ILNumerics ist selbst eine .NET-Assembly. Algorithmen können als normale .NET-Klassen erstellt und zu Intermediate Language (IL) übersetzt werden und sind so auf allen weit verbreiteten Betriebssystemen direkt ausführbar (Windows, Unix, Linux, BSD-Derivaten, macOS).

Array data is visualized as a smoothed, interpolated surface and as a heat map and both versions are combindly displayed.

Das Design der Bibliothek realisiert ein deterministisches Aufräumen von genutzten Speicher in Verbindung mit einem schnellen Memory-Pool. Dadurch sollen die Nachteile der .NET Speicherverwaltung mittels Garbage-Collector ausgeräumt werden. Das Projekt realisiert zudem eine effiziente, voll-automatische Parallelisierung auf heterogenen Rechenresourcen (siehe Absatz: Accelerator Compiler)

Diese Maßnahmen führen dazu, dass die Leistung der numerischen Algorithmen mit den Fähigkeiten der ausführenden Hardware selbstständig skaliert. Die Ausführungsgeschwindigkeit wird allerdings durch das tatsächliche, parallele Potential des Algorithmus, durch die Anzahl an verwendbaren Prozessoren und durch den vorhandenen Arbeitsspeicher begrenzt. Durch die effiziente Hardwarenutzung und die hohe Kompatibilität mit unbekannter Hardware richtet sich die Sprache auch an Nutzer im Bereich des Number-Crunching. Technischen Anwendungen bietet sie durch den höheren Bedienkomfort einen drastisch verringerten Aufwand bei der Erstellung.

Accelerator Compiler

[Bearbeiten | Quelltext bearbeiten]

Seit Version 7.1 werden Algorithmen, die mit der ILNumerics Sprache verfasst wurden, zur Laufzeit mittels neuartiger Beschleuniger-Techniken parallelisiert. Zur Laufzeit erkennt das System unabhängige Array Operationen über Funktions- und sogar Modulgrenzen hinweg und führt sie effizient auf den vorgefundenen, parallelen Rechenresourcen (CPU Kerne, GPU …) gleichzeitig aus. Hierfür wird die ursprünglich sequenzielle Programmstruktur zunächst aufgelöst, um sie zur Ausführung massiv parallel wieder neu zusammenzusetzen. Jede Array Operation ist hierfür mit einer autonomen Intelligenz ausgestattet, die es ihr erlaubt, selbstständig wichtige Entscheidungen ohne Hilfe des Programmierers zu treffen: sie ermittelt die optimale Rechenresource kostenbasiert in Echtzeit und bereitet optimierten Code für die Operation vor. Sobald alle Abhängigkeiten zur Verfügung stehen startet sie die Ausführung sofort.

Die Sprache zum Erstellen und Manipulieren der n-dimensionalen Objekte ist sprach-kompatibel mit etablierten Skriptsprachen im wissenschaftlichen Umfeld, insbesondere zu MATLAB und NumPy. Der größte Unterschied im Vergleich zu Skriptsprachen besteht in der starken Typsicherheit des Codes. Durch die automatische, optimale Einbindung von parallelen Hardware-Resourcen erst zur Laufzeit lässt sich ein sonst notwendiges, manuelles Parallelisieren und Auslagern von Code Bereichen durch den Programmierer meist vermeiden. Die Algorithmen können dadurch auf einer abstrakt-mathematischen Weise verfasst und gepflegt werden, bleiben kompatibel mit jeder Hardware und nutzen dennoch bei der Ausführung sämtliches, verfügbares parallele Potential aus.

ILNumerics stellt eine Erweiterung für Microsofts Visual Studio Entwicklungsumgebung kostenfrei zur Verfügung. Diese vereinfacht nicht nur die Lizenzverwaltung, sondern bringt dem Entwickler auch graphische Unterstützung bei der Anzeige von großen Array Daten während des Debuggens. Die ILNumerics Erweiterung wird über den offiziellen Microsoft Visual Studio Marketplace bereitgestellt.

ILNumerics displays array debug data using flexible graphical options while stepping through the code.

ILNumerics begann an der TU Berlin[1] als Sammlung mathematischer Routinen und wurde in wissenschaftlich-industriellen Projekten eingesetzt. Im Jahre 2005 wurde begonnen, die Software als eigenständige Bibliothek mit eigenem Objektdesign auszurichten. 2007 wurde sie dann auf eine Veröffentlichung vorbereitet und zunächst als proprietäre Bibliothek angeboten. Im gleichen Jahr gewann das Projekt den mit 10.000 Euro dotierten BASTA! Innovation Award 2007[2], der im Rahmen der vom Software & Support Verlag (S&S) veranstalteten Softwareentwickler-Konferenz BASTA! vergeben wurde. Von August 2007 bis November 2011 wurde die Bibliothek als eigenständiges Projekt gepflegt und kostenlos unter der LGPL Version 3 zur Verfügung gestellt. Innerhalb dieser Zeit wurden mehr als 1000 Projekte mit ihrer Hilfe realisiert. Nach sechs Jahren unter der Open-Source-Lizenz wird ILNumerics seit 2011 unter einer proprietären Lizenz durch ILNumerics GmbH weiterentwickelt, vertrieben und sowohl unter kommerzieller als auch unter kostenfreier, nicht-kommerzieller Lizenz bereitgestellt. Die Zielgruppe bilden akademische und professionelle Entwickler technischer Software-Anwendungen.

Einige Mathematik-Programme bieten ebenfalls die Möglichkeit, die mit ihnen erstellten Algorithmen in eigenen Programmen zu verwenden. Das prominenteste proprietäre Beispiel ist wohl Matlab der Firma MathWorks mit Compiler für C und Builder für .NET, oder die IMSL von Rogue Wave Software. Andere Projekte, z. B. „Extreme Optimization“, „dnAnalytics“ oder Center Space „NMath“, verfolgen konsequent den Ansatz, nur für die .NET-Plattform zu entwickeln. Während Erstere wesentlich etablierter sind, verwenden sie oft native Bibliotheken, was häufiges Verlassen des verwalteten Codes bei der Ausführung nötig macht. Letztere dagegen können durch die Beschränkung auf verwalteten Code ohne eigene Speicherverwaltung oft nicht die Performance nativer Codes bieten.

  1. Technische Universität Berlin - Centre for Entrepreneurship (Memento vom 20. Februar 2016 im Internet Archive)
  2. Die Gewinner des BASTA! Innovation Awards 2007 (Memento vom 17. März 2012 im Internet Archive)